notizia

Il team PyTorch presenta la sua roadmap tecnica, con quasi un centinaio di pagine di documenti che rivelano la sua direzione di sviluppo nella seconda metà del 2024.

2024-07-15

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


Nuovo rapporto sulla saggezza

Editore: Qiao Yang

[Introduzione alla Nuova Saggezza]Recentemente, il team PyTorch ha annunciato per la prima volta la roadmap di sviluppo, che è stata modificata direttamente da documenti tecnici interni, rivelando la prossima direzione di sviluppo di questa classica libreria open source.

Se sviluppi in Python nel campo dell'intelligenza artificiale, PyTorch deve essere uno dei tuoi vecchi amici. Nel 2017 Meta AI ha rilasciato questa libreria open source nel campo del machine learning e del deep learning, che è giunta ormai al suo settimo anno.

Secondo le statistiche del 2021 di Assembly AI, i primi 30 modelli più popolari su HuggingFace possono tutti essere eseguiti su PyTorch e il 92% dei modelli è proprietario di PyTorch. Questa proporzione rende molti concorrenti, incluso TensorFlow, fuori portata.


Proprio il 10 luglio, il team di ingegneri di PyTorch ha pubblicato pubblicamente per la prima volta il documento roadmap, stabilendo la direzione dello sviluppo nella seconda metà del 2024.

Soumith Chintala, co-fondatore di Meta e alla guida del team PyTorch, ha annunciato ufficialmente la notizia su Twitter.

Ha detto che spera di rendere pubbliche le motivazioni e gli obiettivi della ricerca degli ingegneri.

"Mentre tutto lo sviluppo di PyTorch è pubblico su GitHub, i documenti effettivi di pianificazione e roadmap scritti dai team di vari affiliati PyTorch non sono pubblici, quindi abbiamo deciso di apportare modifiche per aumentare la trasparenza."


Anche Gott Brath, project manager tecnico del team PyTorch, ha rilasciato una dichiarazione simile nel forum.


Abbiamo pensato a come condividere una tabella di marcia del lavoro che il team sta svolgendo su PyTorch. Effettuiamo una pianificazione semestrale, quindi queste sono alcune versioni pubbliche dei nostri piani OSS H2 2024 per diverse aree chiave di PyTorch.

Questi file sono fondamentalmente i documenti interni e i piani di lavoro del team PyTorch. Dopo aver eliminato alcuni contenuti, sono stati pubblicati come una tabella di marcia, che coinvolge i seguenti aspetti di PyTorch:

- Librerie principali e prestazioni principali

- Distribuito

- torchune, Torchrec, TorchVision

- Bordo PyTorch

- Caricamento dati (DataLoading)

- Core del compilatore e distribuzione

- Infrastruttura per sviluppatori

Ogni documento contiene almeno tre parti, basate sulle idee OKR:

- sfondo

- Le 5 principali aree di interesse e obiettivi: obiettivi, risultati chiave, rischi noti o sconosciuti e corrispondenti misure di mitigazione (massimo una pagina)

- 3~5 aspetti principali per migliorare il livello tecnico: classificazione del pilastro BE, obiettivi, indicatori/stato/obiettivi specifici, rischi noti o sconosciuti e misure di mitigazione, impatto/costo, livello di priorità/confidenza (massimo una pagina)

Tra questi, il BE Pillar può essere considerato come le "cinque massime" scritte da Meta al team di sviluppo. I contenuti specifici sono:

Codice migliore, documentazione migliore, potenziamento dei team, codice moderno, architettura migliore

Non so se qualche sviluppatore abbia avuto problemi con la lunghezza dei documenti a causa della regola “massimo una pagina”. Dopo tutto, i documenti sono più costosi di quelli lunghi. Condensare molti requisiti di sviluppo in una pagina non solo fa risparmiare tempo ai colleghi, ma mette alla prova anche le capacità dello scrittore.

Inoltre, nel documento si possono vedere anche alcune idee eccellenti del team di sviluppo Meta, come l'enfasi sulla collaborazione di vari team di moduli, l'enfasi sull'integrazione delle API e lo sviluppo congiunto con partner esterni e l'enfasi sull'interazione con la comunità e gli sviluppatori open source.

Quando si lancia una nuova base di codice come ExecuTorch, o si desidera aumentare l'influenza del compilatore PyTorch, il team di solito parte da due aspetti: uno è fare tutti gli sforzi per migliorare le prestazioni e, dall'altro, prendere di mira direttamente SOTA; integrazione profonda Inizia con casi d'uso più pronti all'uso.

Forse queste sono le chiavi del successo di Meta nel campo dell'open source nel corso degli anni.

Di seguito si riporta un estratto parziale e una sintesi del contenuto di ciascun documento.


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

Librerie principali e prestazioni principali

Le librerie principali coinvolte nel documento includono TendorDict, torchao, NN, TorchRL, ecc.

In termini di prestazioni, il team PyTorch ha proposto l'obiettivo di raggiungere prestazioni SOTA nell'addestramento e nell'inferenza dei modelli. Le misure includono l'introduzione di una tecnologia di ottimizzazione dell'architettura e di un kernel ad alte prestazioni per formare una combinazione con l'intero stack tecnologico PyTorch.

L'anno scorso ha assistito al rapido sviluppo di GenAI. Sono emerse molte librerie esterne per supportare lo sviluppo nel campo della ricerca, ma molte di esse non si affidano direttamente a PyTorch, il che minaccerà il dominio di PyTorch nel campo della ricerca scientifica.

Per tenere nuovamente il passo, PyTorch fornirà supporto per tecnologie di sviluppo comuni come quantizzazione, sparsificazione, MoE e addestramento a bassa precisione, inclusi elementi costitutivi e API (principalmente integrati in torchao) per aiutare i modelli di varie architetture Transformer migliorare la prestazione.

La libreria torchao può supportare i ricercatori nella personalizzazione di tecniche di dtype, layout e ottimizzazione ad alte prestazioni all'interno del framework PyTorch, estendendo l'ambito di utilizzo a vari scenari come training, inferenza e ottimizzazione.

Inoltre, gli aggiornamenti alla libreria principale includeranno quanto segue:

- La libreria di ottimizzazione automatica lanciata torchao ha ottenuto un successo rivoluzionario. Il prossimo passo sarà migliorare l'organizzazione del codice e separare le operazioni numeriche dalla libreria principale.

- Risolve la modularità principale di TendorDict, supporta la serializzazione di carichi/negozi e lo rende 2 volte più veloce in modalità desiderosa

- Continuando il successo del caricamento mappato della memoria nella prima metà dell'anno, continua a migliorare le prestazioni e la sicurezza del caricamento/archiviazione dei modelli

- Riduci il sovraccarico di TorchRL del 50%

- Aggiunto il supporto principale per NoGIL

- Risolto il problema che la variabile TORCH_env segnalata dagli utenti non funziona

Il documento menziona anche la deprecazione del modulo nn.transformer, affermando che verranno rilasciati una serie di tutorial e casi d'uso per mostrare come utilizzare torch.compile, sdpa, NJT, FlexAttention, custom_op, torchao e altri moduli per costruire Transformer.

distribuito

Il pre-addestramento LLM di solito copre decine o addirittura migliaia di GPU e, man mano che la scala dei parametri del modello aumenta gradualmente, l'inferenza e la messa a punto sono difficili da completare su una singola GPU.

Pertanto, il prossimo layout "distribuito" di PyTorch copre in modo completo i tre collegamenti di addestramento, inferenza e messa a punto e propone di ottenere un addestramento distribuito su larga scala, un perfezionamento con elevata efficienza di memoria e un ragionamento distribuito multi-host. .

treno

Le modalità parallele supportate nativamente da PyTorch includono principalmente le seguenti:

- Parallelo dati condivisi completo (FSDP)

-Sharding ibrido dei dati parallelo (HSDP)

-Tensore parallelo (TP)

- Tubazione parallela (PP)

- Sequenza parallela (SP)

-Contesto parallelo (CP)

PyTorch spera di modularizzare ulteriormente vari metodi paralleli in TorchTitan, consentendo agli sviluppatori di combinare liberamente e ottenere il parallelismo N-dimensionale secondo necessità.


Il documento menziona specificamente la necessità di aggiungere il supporto per due architetture emergenti, MoE e multimodalità, come il parallelismo esperto e l'ottimizzazione degli algoritmi di routing.

Oltre all'aggiornamento di TorchTitan stesso, il team distribuito deve anche lavorare a stretto contatto con il team del compilatore per integrarsi meglio con il modulo torch.compile e apportare ulteriori miglioramenti delle prestazioni agli scenari distribuiti su larga scala.

Ottimizzazione e inferenza

Ottimizzazione: in combinazione con torchtune, consente di utilizzare la soluzione FSDP2 LoRA/QLoRA e supporta la quantizzazione NF4 del dizionario degli stati del modello

Ragionamento: PP e DP sono diventati il ​​nucleo delle API distribuite Successivamente, dobbiamo prestare attenzione al ragionamento distribuito di torchtitan, che supporta metodi PP + TP asincroni di grandi dimensioni.

Il documento menziona anche che l'API di inferenza di HuggingFace verrà migrata da PiPPy a PyTorch (completata da HuggingFace).

torchtune, TorchRec, TorchVision

tono della torcia

Il lancio di torchtune mira ad aiutare gli utenti a mettere a punto LLM in modo più conveniente. Questa è anche la soluzione ufficiale per mettere a punto il modello Llama.

Il “fine tuning” definito da torchtune ha un range molto ampio, che può essere riassunto in tre tipologie di scenari:

- Adattamento del modello a set di dati specifici del dominio o attività a valle

- Modellazione di premi e preferenze, come RLHF, DPO, ecc.

- Processo di formazione comprendente distillazione e quantizzazione

Gli aggiornamenti nella seconda metà dell’anno supporteranno la messa a punto dei flussi di lavoro degli agenti, concentrandosi al contempo sui miglioramenti nelle prestazioni di messa a punto.

Il team collaborerà con moduli di compilazione, core, distribuiti e altri moduli per fornire un'ottimizzazione efficiente e stabilire benchmark rappresentativi delle prestazioni di ottimizzazione all'interno dell'ecosistema PyTorch.

Poiché torchtune è anche una libreria open source più recente, anche l'interazione con la comunità open source è essenziale.

Il documento propone di pubblicare articoli di blog e tutorial, tenere conferenze tecniche, ecc. per migliorare la comprensione degli utenti; definirà inoltre indicatori quantitativi per misurare la quota di contributo di torchturn nell'ecosistema LLM.

Oltre alla comunità open source, torchune si integrerà con almeno un partner e parteciperà alla loro comunità per promuovere l'uso di torchune.

Torcia Visione

In quanto attore dominante in assoluto nel campo CV, la tecnologia di TorchVision è relativamente matura, quindi ci sono pochissimi aggiornamenti proposti nella tabella di marcia.

Il team continuerà a lavorare nella direzione della pre-elaborazione, supporterà più formati (come WebP, HEIC) e piattaforme (come CUDA) nello spazio di codifica/decodifica delle immagini e migliorerà le prestazioni di codifica/decodifica del formato jpeg su GPU.

TorciaRec

TorchRec mira a fornire primitive di sparsità e parallelismo comunemente utilizzate nei sistemi di raccomandazione su larga scala. La prima versione stabile, TorchRec 1.0, sarà lanciata in autunno.

Bordo

Attualmente, la libreria open source ExecuTorch ha lanciato una versione Alpha, che si basa principalmente su torch.compile e torch.export per supportare l'analisi dei modelli, il debug e l'inferenza su dispositivi mobili e dispositivi edge (come AR/VR, dispositivi indossabili).

Nella seconda metà dell'anno, il team Edge lancerà la versione Beta di xecuTorch e fornirà soluzioni all'interno dell'ecosistema PyTorch per i modelli della serie Llama di Meta e altri modelli open source.

Gli obiettivi chiave coprono principalmente due direzioni. Il primo è fornire funzioni di base e un’infrastruttura affidabile per l’intelligenza artificiale sui dispositivi, tra cui:

- Garantire la stabilità dell'API per C++ e Python

- Implementare una serie di funzioni principali: supporto della compressione del modello, gestione della posizione della cache proxy, separazione dei dati e dei programmi

Il secondo è proteggere questa nascente base di codice, coltivare l’influenza all’interno della comunità open source e mantenere buoni rapporti di collaborazione con aziende come Arm, Apple e Qualcomm.

L'obiettivo dell'influenza della comunità è stato addirittura quantificato, richiedendo che il codice ottenga 3k stelle su GitHub e venga clonato (fork) 500 volte. I lettori interessati possono continuare a prestare attenzione e vedere se il team riesce a completare questo OKR entro la fine dell'anno.

Caricamento dati

La libreria di set di dati HuggingFace basata sul formato Apache Arrow è emersa improvvisamente negli ultimi anni con il suo caricamento/archiviazione ad alta velocità senza limitazioni di memoria e sembra aver rubato la ribalta alle funzioni relative a PyTorch.

Il documento sul caricamento dei dati inizia con l'ambizione di rendere nuovamente grande la libreria TorchData e ristabilire il dominio di PyTorch nel caricamento dei dati.

Per raggiungere questo obiettivo, è necessario rendere le funzioni rilevanti flessibili, scalabili, ad alte prestazioni ed efficienti in termini di memoria, ottenendo al contempo un funzionamento insensato e supportando la formazione multimodale su varie scale.

Gli obiettivi specifici dell'aggiornamento includono i seguenti aspetti:

- Lo sviluppo funzionale e l'interfaccia di DataLoader implementeranno innanzitutto il principio di GitHub, mentre DataPipes e DataLoader v2 verranno gradualmente deprecati ed eliminati.

- Garantire confini chiari e una buona interoperabilità tra TorchTune, TorchTitan, HuggingFace e TorchData e supportare set multi-dati e caricamento dati multimodale

- HuggingFace utilizza l'API di StatefulDataLoader per garantire compatibilità e aggiornamento tempestivo di campioni e casi di test.

Nucleo del compilatore e distribuzione

Le funzioni principali del compilatore di PyTorch sono diventate sempre più perfette dopo anni di sviluppo. Ciò che deve essere recuperato per ora è un'integrazione più profonda e un maggiore supporto per l'ottimizzazione nei campi di LLM e GenAI.

La roadmap propone di portare la funzione torch.compile() in tutti gli aspetti del ciclo di utilizzo di LLM e GenAI (inferenza, messa a punto, pre-addestramento), in modo che modelli importanti possano essere compilati con PyTorch nativo una volta rilasciati.

Per raggiungere questo obiettivo, il documento propone molte misure specifiche, come la collaborazione con i team di torchtune e TorchTitan per migliorare le prestazioni di compilazione e il rilascio di versioni compilate native di PyTorch di almeno due modelli di alto profilo nella seconda metà dell'anno.

Inoltre, il compilatore può aggiungere funzionalità di visualizzazione per generare grafici modello che esprimono il processo di calcolo in avanti/propagazione all'indietro in modalità di addestramento non eager.

Esistono anche molti piani per il supporto degli utenti, come il miglioramento del monitoraggio e dell'osservabilità del sistema e l'aiuto agli utenti per risolvere da soli i problemi di compilazione. Gli obiettivi chiave includono anche la creazione di un team di supporto utenti per affrontare i problemi sollevati dagli sviluppatori su piattaforme come GitHub in diverse aree chiave (classi di dati, gestione del contesto, ecc.).

Riferimenti:

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

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

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