OpenAI rilascia Triton, un linguaggio di programmazione per l’ottimizzazione del carico di lavoro AI
Lascia che la newsletter di OSS Enterprise guidi il tuo viaggio nell’open source! Iscriviti qui .
OpenAI ha rilasciato oggi Triton , un linguaggio di programmazione open source simile a Python che consente ai ricercatori di scrivere codice GPU altamente efficiente per carichi di lavoro AI. Triton consente di raggiungere le massime prestazioni hardware con uno sforzo relativamente ridotto, afferma OpenAI, producendo codice alla pari con quello che un esperto potrebbe ottenere in appena 25 righe.
Le reti neurali profonde sono emerse come un tipo importante di modello di intelligenza artificiale, in grado di raggiungere prestazioni all’avanguardia nell’elaborazione del linguaggio naturale, nella visione artificiale e in altri domini. La forza di questi modelli risiede nella loro struttura gerarchica, che genera una grande quantità di lavoro altamente parallelizzabile, adatto per hardware multicore come le GPU. I framework per il GPU computing generico come CUDA e OpenCL hanno reso più facile lo sviluppo di programmi ad alte prestazioni negli ultimi anni. Tuttavia, le GPU rimangono particolarmente difficili da ottimizzare, in parte perché le loro architetture si evolvono rapidamente.
Sono emersi linguaggi e compilatori specifici del dominio per affrontare il problema, ma questi sistemi tendono ad essere meno flessibili e più lenti dei migliori kernel di elaborazione scritti a mano disponibili in librerie come cuBLAS, cuDNN o TensorRT. Ragionare su tutti questi fattori può essere difficile anche per i programmatori esperti. Lo scopo di Triton, quindi, è automatizzare queste ottimizzazioni, in modo che gli sviluppatori possano concentrarsi sulla logica di alto livello del loro codice.
“Le nuove idee di ricerca nel campo del deep learning sono generalmente implementate utilizzando una combinazione di operatori di framework nativi … [W]riting kernel GPU specializzati [può migliorare le prestazioni,] ma [è spesso] sorprendentemente difficile a causa delle molte complessità della programmazione GPU. E sebbene sia emersa di recente una varietà di sistemi per rendere questo processo più semplice, abbiamo riscontrato che sono troppo prolissi, mancano di flessibilità, [o] generano codice notevolmente più lento delle nostre linee di base sintonizzate a mano”, Philippe Tillet, il creatore originale di Triton, che ora lavora in OpenAI come membro dello staff tecnico, ha scritto in un post sul blog. “I nostri ricercatori hanno già utilizzato [Triton] per produrre kernel fino a 2 volte più efficienti delle implementazioni Torch equivalenti e siamo entusiasti di lavorare con la community per rendere la programmazione GPU più accessibile a tutti”.
Semplificazione del codice
Secondo OpenAI, Triton – che ha le sue origini in un documento del 2019 presentato all’International Workshop on Machine Learning and Programming Languages - semplifica lo sviluppo di kernel specializzati che possono essere molto più veloci di quelli nelle librerie di uso generale. Il suo compilatore semplifica il codice, lo ottimizza e lo parallelizza automaticamente, convertendolo in codice per l’esecuzione sulle recenti GPU Nvidia. (CPU e GPU AMD e piattaforme diverse da Linux non sono attualmente supportate.)
“La sfida principale posta dal nostro paradigma proposto è quella della pianificazione del lavoro, ovvero come il lavoro svolto da ciascuna istanza del programma dovrebbe essere partizionato per un’esecuzione efficiente sulle GPU moderne”, spiega Tillet sul sito Web di documentazione di Triton . “Per risolvere questo problema, il compilatore Triton fa un uso massiccio dell’analisi del flusso di dati a livello di blocco, una tecnica per pianificare i blocchi di iterazione in modo statico in base alla struttura del flusso di dati e di controllo del programma di destinazione. Il sistema risultante funziona davvero sorprendentemente bene: il nostro compilatore riesce ad applicare automaticamente un’ampia gamma di interessanti ottimizzazioni”.
La prima versione stabile di Triton, insieme ai tutorial, è disponibile dal repository GitHub del progetto.