uutiset

PyTorch-tiimi esittelee teknisen tiekartansa, jossa on lähes satasivuisia dokumentteja, jotka paljastavat sen kehityssuunnan vuoden 2024 jälkipuoliskolla.

2024-07-15

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Uusi viisausraportti

Toimittaja: Qiao Yang

[Johdatus uuteen viisauteen]Äskettäin PyTorch-tiimi julkisti ensimmäistä kertaa kehityssuunnitelman, jota muutettiin suoraan sisäisistä teknisistä asiakirjoista, paljastaen tämän klassisen avoimen lähdekoodin kirjaston seuraavan kehityssuunnan.

Jos kehität Pythonissa tekoälyn alalla, PyTorchin on oltava yksi vanhoista ystävistäsi. Vuonna 2017 Meta AI julkaisi tämän avoimen lähdekoodin kirjaston koneoppimisen ja syväoppimisen alalla, joka on nyt seitsemäs vuosi.

Assembly AI:n vuoden 2021 tilastojen mukaan HuggingFacen 30 suosituinta mallia voivat toimia PyTorchin kanssa, ja 92 % malleista on PyTorchin omia.


Juuri heinäkuun 10. päivänä PyTorchin suunnittelutiimi julkaisi julkisesti etenemissuunnitelmansa ensimmäistä kertaa, ja se esitti kehityssuunnan vuoden 2024 jälkipuoliskolla.

Soumith Chintala, Metan perustaja ja PyTorch-tiimin johtaja, ilmoitti uutisen virallisesti Twitterissä.

Hän sanoi toivovansa saavansa julkisuuteen insinöörien tutkimusmotivaatiot ja -tavoitteet.

"Vaikka kaikki PyTorch-kehitys on julkista GitHubissa, eri PyTorchin tytäryhtiöiden tiimien kirjoittamat suunnittelu- ja tiekarttaasiakirjat eivät ole julkisia, joten päätimme tehdä muutoksia avoimuuden lisäämiseksi."


Myös PyTorch-tiimin tekninen projektipäällikkö Gott Brath esitti samanlaisen lausunnon foorumilla.


Olemme pohtineet, kuinka jakaa etenemissuunnitelma työstä, jota tiimi tekee PyTorchin parissa. Suunnittelemme kahdesti vuodessa, joten nämä ovat julkisia versioita vuoden 2024 H2 OSS -suunnitelmistamme useille PyTorchin avainalueille.

Nämä tiedostot ovat pohjimmiltaan PyTorch-tiimin sisäisiä asiakirjoja ja työsuunnitelmia. Osan sisällön poistamisen jälkeen ne julkaistiin etenemissuunnitelmana, joka sisältää seuraavat PyTorchin näkökohdat:

- Ydinkirjastot ja ydinsuorituskyky

- Hajautettu

- Torchune, Torchrec, TorchVision

- PyTorch Edge

- Tietojen lataus (DataLoading)

- Kääntäjän ydin ja käyttöönotto

- Kehittäjäinfrastruktuuri

Jokainen dokumentti sisältää vähintään kolme osaa, jotka perustuvat OKR-ideoihin:

- tausta

- Top5 painopistealuetta ja tavoitetta: tavoitteet, keskeiset tulokset, tunnetut tai tuntemattomat riskit ja vastaavat lieventämistoimenpiteet (enintään yksi sivu)

- 3–5 parasta näkökohtaa suunnittelutason parantamiseksi: BE Pilariluokitus, tavoitteet, indikaattorit/tila/erityiset tavoitteet, tunnetut tai tuntemattomat riskit ja lieventämistoimenpiteet, vaikutus/kustannus, prioriteetti/luottamustaso (enintään yksi sivu)

Niistä BE-pilaria voidaan pitää "viidenä maksimina", jonka Meta on kirjoittanut kehitystiimille.

Parempi koodi, parempi dokumentti, voimaannuttava tiimit, moderni koodi, parempi arkkitehtuuri

En tiedä, onko joku kehittäjä vaikeuttanut asiakirjojen pituutta "enintään yksi sivu" -säännön takia. Asiakirjat ovat loppujen lopuksi kalliimpia kuin pitkiä asiakirjoja testaa myös kirjoittajan taidot.

Lisäksi dokumentissa näkyy myös Meta-kehitystiimin erinomaisia ​​ideoita, kuten eri moduulitiimien yhteistyön korostaminen, API-integraation ja yhteiskehityksen korostaminen ulkopuolisten kumppaneiden kanssa sekä vuorovaikutuksen korostaminen avoimen lähdekoodin yhteisön ja kehittäjien kanssa.

Kun käynnistetään uusi koodikanta, kuten ExecuTorch, tai halutaan lisätä PyTorch-kääntäjän vaikutusta, tiimi lähtee yleensä kahdesta näkökulmasta: toinen on pyrkiä parantamaan suorituskykyä ja toisaalta kohdistaa suoraan SOTA:han integroi syvällisesti Aloita käyttämällä enemmän valmiita käyttötapauksia.

Ehkä nämä ovat avaimet Metan menestykseen avoimen lähdekoodin alalla vuosien mittaan.

Seuraavassa on osittainen ote ja yhteenveto kunkin asiakirjan sisällöstä.


Alkuperäinen osoite: https://dev-discuss.pytorch.org/t/meta-pytorch-team-2024-h2-roadmaps/2226

Ydinkirjastot ja ydinsuorituskyky

Asiakirjan ydinkirjastoja ovat TendorDict, torchao, NN, TorchRL jne.

Suorituskyvyn osalta PyTorch-tiimi on ehdottanut tavoitteeksi saavuttaa SOTA-suorituskyky mallin koulutuksessa ja päättelyssä. Toimenpiteisiin kuuluu arkkitehtuurin optimointiteknologian ja korkean suorituskyvyn ytimen käyttöönotto koko PyTorch-teknologiapinon kanssa.

Kuluneen vuoden aikana on nähty GenAI:n nopea kehitys. Tutkimusalan kehitystä tukemaan on ilmaantunut useita ulkoisia kirjastoja, mutta monet niistä eivät ole suoraan riippuvaisia ​​PyTorchista, mikä uhkaa PyTorchin valta-asemaa tieteellisellä tutkimuskentällä.

PyTorch tukee taas yleisiä kehitystekniikoita, kuten kvantisointia, hajauttamista, MoE ja matalan tarkkuuden koulutusta, mukaan lukien rakennuspalikoita ja API:ita (pääasiassa torchaoon integroituina) erilaisten Transformer-arkkitehtuurien mallien avuksi. parantaa suorituskykyä.

Torchao-kirjasto voi auttaa tutkijoita räätälöimään korkean suorituskyvyn dtype-, layout- ja optimointitekniikoita PyTorch-kehyksessä ja laajentaa käyttöaluetta erilaisiin skenaarioihin, kuten harjoitteluun, päättelyyn ja viritykseen.

Lisäksi ydinkirjaston päivitykset sisältävät seuraavat:

- Lanseerattu automaattinen optimointikirjasto torchao on saavuttanut läpimurtomenestyksen. Seuraava askel on parantaa sen koodiorganisaatiota ja erottaa sen numeeriset toiminnot ydinkirjastosta.

- Käsittelee TendorDictin ydinmodulaarisuutta, tukee kuormien/kauppojen sarjoittamista ja tekee siitä 2x nopeamman innokastilassa

- Jatkamalla muistikartoitetun kuorman menestystä vuoden ensimmäisellä puoliskolla, jatka mallien lataamisen/tallennuksen suorituskyvyn ja turvallisuuden parantamista

- Pienennä TorchRL:n yleiskustannuksia 50 %

- Lisätty ydintuki NoGIL:lle

- Korjattu ongelma, että käyttäjien ilmoittama TORCH_env-muuttuja ei toimi

Asiakirjassa mainitaan myös nn.transformer-moduulin vanhentuminen sanomalla, että julkaistaan ​​sarja opetusohjelmia ja käyttötapauksia, jotka osoittavat, kuinka käyttää torch.compile-, sdpa-, NJT-, FlexAttention-, custom_op-, torchao- ja muita moduuleja Transformerin rakentamiseen.

hajautettu

LLM-esikoulutus kattaa yleensä kymmeniä tai jopa tuhansia GPU:ita, ja kun mallin parametriasteikko vähitellen kasvaa, päättäminen ja hienosäätö on vaikea suorittaa yhdellä GPU:lla.

Siksi PyTorchin seuraava "hajautettu" asettelu kattaa kattavasti kolme linkkiä: koulutuksen, päättelyn ja hienosäädön, ja ehdottaa erittäin laajamittaista hajautettua koulutusta, paljon muistia tehokasta hienosäätöä ja usealle isännälle hajautettua päättelyä. .

kouluttaa

PyTorchin natiivisti tukemat rinnakkaistilat sisältävät pääasiassa seuraavat:

- Täysi sirpaloitu data rinnakkain (FSDP)

- Hybridi-datan rinnakkaisjako (HSDP)

- Tensorin rinnakkaissuunta (TP)

- Putkilinjan yhdensuuntainen (PP)

- Rinnakkainen sekvenssi (SP)

-Context rinnakkais (CP)

PyTorch toivoo voivansa modulisoida TorchTitanissa useita rinnakkaisia ​​menetelmiä, jolloin kehittäjät voivat vapaasti yhdistää ja saavuttaa N-ulotteisen rinnakkaisuuden tarpeen mukaan.


Asiakirjassa mainitaan erityisesti tarve lisätä tuki kahdelle nousevalle arkkitehtuurille, MoE:lle ja multimodaaliselle, kuten asiantuntija-rinnakkaisuudelle ja reititysalgoritmien optimoinnille.

Itse TorchTitanin päivityksen lisäksi hajautetun tiimin on myös tehtävä tiivistä yhteistyötä kääntäjäryhmän kanssa integroidakseen paremmin torch.compile-moduulin ja tuodakseen lisäparannuksia suuriin hajautettuihin skenaarioihin.

Hienosäätö ja päättely

Hienosäätö: Yhdessä taskulamppuun, ota FSDP2 LoRA/QLoRA -ratkaisu käyttöön ja tukee mallitilasanakirjan NF4-kvantisointia

Päättely: PP:stä ja DP:stä on tullut hajautetun API:n ydin Seuraavaksi meidän on kiinnitettävä huomiota torchtitanin hajautettuun päättelyyn, joka tukee suuria mallia PP + asynkronisia TP-menetelmiä.

Asiakirjassa mainitaan myös, että HuggingFacen päättelysovellusliittymä siirretään PiPPystä PyTorchiin (huggingFace täydentää).

Torchtune, TorchRec, TorchVision

soihtu

Torchtunen julkaisun tarkoituksena on auttaa käyttäjiä hienosäätämään LLM:ää kätevämmin. Tämä on myös virallinen ratkaisu Llama-mallin hienosäätöön.

Torchtunen määrittelemä "hienosäätö" on hyvin laaja valikoima, joka voidaan tiivistää kolmen tyyppiseen skenaarioon:

- Mallin mukauttaminen toimialuekohtaisiin tietokokonaisuuksiin tai loppupään tehtäviin

- Palkintojen ja mieltymysten mallintaminen, kuten RLHF, DPO jne.

- Koulutusprosessi, mukaan lukien tislaus ja kvantisointi

Toisen vuosipuoliskon päivitykset tukevat agenttien työnkulkujen hienosäätöä ja keskittyvät hienosäätösuorituskyvyn parantamiseen.

Tiimi tekee yhteistyötä käännös-, ydin-, hajautettujen ja muiden moduulien kanssa tarjotakseen tehokasta hienosäätöä ja luodakseen edustavia hienosäädön suorituskyvyn vertailuarvoja PyTorch-ekosysteemissä.

Koska Torchtune on myös uudempi avoimen lähdekoodin kirjasto, vuorovaikutus avoimen lähdekoodin yhteisön kanssa on myös välttämätöntä.

Asiakirjassa ehdotetaan julkaisemaan blogiartikkeleita ja opetusohjelmia, pitämään teknisiä luentoja jne. käyttäjien ymmärryksen parantamiseksi. Siinä määritellään myös määrälliset indikaattorit, joilla mitataan torchturnin osuutta LLM-ekosysteemissä.

Avoimen lähdekoodin yhteisön lisäksi torchune integroituu ainakin yhden kumppanin kanssa ja osallistuu heidän yhteisöönsä edistääkseen torchunen käyttöä.

TorchVision

CV-alan ehdottoman hallitsevana toimijana TorchVisionin tekniikka on suhteellisen kypsä, joten etenemissuunnitelmassa on hyvin vähän päivityksiä.

Tiimi jatkaa työskentelyä esikäsittelyn suuntaan, tukee useampia formaatteja (kuten WebP, HEIC) ja alustoja (kuten CUDA) kuvan koodaus-/dekoodaustilassa ja parantaa jpeg-muodon koodaus/dekoodauksen suorituskykyä. GPU.

TorchRec

TorchRecin tavoitteena on tarjota laajamittaisissa suositusjärjestelmissä yleisesti käytettyjä harvaluku- ja rinnakkaisuusprimitiivejä. Ensimmäinen vakaa versio, TorchRec 1.0, julkaistaan ​​syksyllä.

Reuna

Tällä hetkellä avoimen lähdekoodin kirjasto ExecuTorch on julkaissut Alpha-version, joka perustuu pääasiassa torch.compile- ja torch.export-tiedostoihin mallianalyysin, virheenkorjauksen ja päätelmien tukemiseksi mobiililaitteissa ja reunalaitteissa (kuten AR/VR, puettavat laitteet).

Vuoden toisella puoliskolla Edge-tiimi julkaisee xecuTorchin beta-version ja tarjoaa PyTorch-ekosysteemin sisällä ratkaisuja Metan Llama-sarjan malleille ja muille avoimen lähdekoodin malleille.

Keskeiset tavoitteet kattavat pääasiassa kaksi suuntaa. Ensimmäinen on tarjota perustoiminnot ja luotettava infrastruktuuri laitteen tekoälylle, mukaan lukien:

- Varmista API-vakaus C++:lle ja Pythonille

- Ota käyttöön joukko ydintoimintoja: tue mallin pakkausta, välityspalvelimen välimuistin sijainnin hallintaa, tietojen ja ohjelmien erottamista

Toinen on suojata tätä syntymässä olevaa koodipohjaa, kasvattaa vaikutusvaltaa avoimen lähdekoodin yhteisössä ja ylläpitää hyviä yhteistyösuhteita yritysten, kuten Arm, Apple ja Qualcomm, kanssa.

Yhteisön vaikutuksen tavoite on jopa mitattu, mikä edellyttää koodin saamista 3k tähteä GitHubissa ja kloonaamista (haarukka) 500 kertaa. Kiinnostuneet lukijat voivat edelleen kiinnittää huomiota ja katsoa, ​​saako tiimi valmiiksi tämän OKR:n vuoden loppuun mennessä.

Tietojen lataus

Apache Arrow -muotoon perustuva HuggingFace-tietojoukkokirjasto on yhtäkkiä ilmaantunut viime vuosina nopealla lataus-/tallennusnopeudellaan ilman muistirajoituksia, ja näyttää varastaneen PyTorchiin liittyvien toimintojen parrasvalon.

Tietojen lataamista käsittelevä asiakirja alkaa tavoitteesta tehdä TorchData-kirjastosta jälleen loistava ja palauttaa PyTorchin dominoiva asema tietojen lataamisessa.

Tämän tavoitteen saavuttamiseksi on tarpeen tehdä asiaankuuluvista toiminnoista joustavia, skaalautuvia, tehokkaita ja muistitehokkaita, samalla saavuttaa typerä toiminta ja tukea eri mittakaavan multimodaalista koulutusta.

Erityiset päivitystavoitteet sisältävät seuraavat näkökohdat:

- DataLoaderin toiminnallinen kehitys ja käyttöliittymä toteuttavat ensin GitHubin periaatteen, ja DataPipes ja DataLoader v2 poistetaan ja poistetaan vähitellen.

- Varmista selkeät rajat ja hyvä yhteentoimivuus TorchTunen, TorchTitanin, HuggingFacen ja TorchDatan välillä ja tue multi-datajoukkoja ja multimodaalista tiedon lataamista

- HuggingFace käyttää StatefulDataLoaderin API:ta varmistaakseen yhteensopivuuden ja päivittääkseen näytteet ja testitapaukset oikea-aikaisesti.

Kääntäjän ydin ja käyttöönotto

PyTorchin kääntäjän ydintoiminnot ovat vuosien kehitystyön jälkeen tulleet yhä täydellisemmiksi. Nyt tarvitaan syvempää integraatiota ja lisää optimointitukea LLM:n ja GenAI:n aloilla.

Tiekartassa ehdotetaan torch.compile()-funktion tuomista kaikkiin LLM:n ja GenAI:n käyttösykliin (päätelmä, hienosäätö, esikoulutus), jotta tärkeät mallit voidaan kääntää alkuperäisellä PyTorchilla, kun ne julkaistaan.

Tämän tavoitteen saavuttamiseksi asiakirjassa ehdotetaan monia erityistoimenpiteitä, kuten työskentelyä Torchtune- ja TorchTitan-tiimien kanssa käännössuorituskyvyn parantamiseksi ja PyTorchin alkuperäisten käännettyjen versioiden julkaiseminen vähintään kahdesta korkean profiilin mallista vuoden toisella puoliskolla.

Lisäksi kääntäjä voi lisätä visualisointiominaisuuksia mallikaavioiden luomiseksi, jotka ilmaisevat laskennan/takaisin etenemisen prosessia ei-innokkaassa harjoitustilassa.

Suunnitteilla on myös paljon käyttäjätukea, kuten järjestelmän seurannan ja havaittavuuden parantaminen sekä käyttäjien auttaminen käännösongelmien selvittämisessä itse. Keskeisiin tavoitteisiin kuuluu myös käyttäjätukitiimin perustaminen käsittelemään GitHubin kaltaisten alustojen kehittäjien esittämiä ongelmia useilla avainalueilla (tietoluokat, kontekstinhallinta jne.).

Viitteet:

https://dev-discuss.pytorch.org/t/meta-pytorch-team-2024-h2-roadmaps/2226

https://x.com/soumithchintala/status/1811060935211049046

https://www.assemblyai.com/blog/pytorch-vs-tensorflow-in-2023/