Si chiama Triton ed è un nuovo linguaggio di programmazione progettato per implementare sulle GPU algoritmi di intelligenza artificiale e realizzare reti neurali.
A presentarlo sono stati i tecnici di OpenAI, startup con sede a San Francisco e sostenuta da Microsoft, che hanno innanzi tutto voluto evidenziare i vantaggi in termini di facilità d’uso rispetto allo strumento di programmazione NVidia CUDA.
L’obiettivo di OpenAI è quello di fare in modo che Triton diventi una valida alternativa a CUDA per il deep learning. La nuova soluzione di sviluppo, infatti, è progettata per ricercatori e ingegneri che si occupano di machine learning e che non hanno familiarità con la programmazione su GPU pur avendo buone competenze sul versante software.
Il fatto Triton sia stato concepito da OpenAI, realtà che ha sviluppato il noto software per l’elaborazione del linguaggio naturale GPT-3, è già una garanzia dei risultati che si possono ottenere e dell’impulso che la nuova soluzione potrà dare al settore delle applicazioni basate sull’intelligenza artificiale.
Il software è offerto come prodotto opensource: gli sviluppatori dovranno soltanto inserire opportuni riferimenti in qualsiasi progetto derivato.
Philippe Tillet, responsabile del progetto Triton, spiega che l’idea fu partorita nel 2019 quando si era appena laureato presso l’Università di Harvard.
Egli si è concentrato in particolare sull’uso delle tile: ampiamente utilizzate nella programmazione CUDA esse utilizzano le matrici utilizzate per il machine learning e le suddividono in porzioni più piccole facilmente distribuibili attraverso la memoria SRAM condivisa e la memoria di registro quindi gestite in modo efficiente attraverso più thread in parallelo.
Le GPU rimangono però incredibilmente impegnative da ottimizzare, soprattutto quando si parla dell’esecuzione di istruzioni in parallelo.
È qui che entra in campo Triton: il suo compilatore è in grado di svolgere autonomamente tutto il “lavoro sporco” stabilendo come i vari frammenti possono essere ripartiti in modo efficiente tra i moltissimi core che compongono una GPU e tra i loro registri.
Con questo approccio tutto il lavoro di parallelizzazione e ottimizzazione del codice viene spostato dal linguaggio al compilatore.
Il codice di alto livello prodotto dal programmatore con Triton viene dapprima trasformato in una rappresentazione intermedia poi data in pasto a un compilatore just-in-time (JIT) che fa il lavoro di modellare le varie matrici in frammenti in modo da adattarsi in modo ottimale alla memoria condivisa e ai registri dei core della GPU.
Il compilatore JIT organizza i thread all’interno dei core della GPU e colloca i dati che sono di interesse per gli stessi thread nella memoria condivisa in modo da ottimizzarne la gestione.
Gli sforzi di Tillet e OpenAI si concretizzano in un momento molto interessante per le soluzioni di intelligenza artificiale accelerate in hardware. I concorrenti di NVidia si chiamano Cerebras Systems, Graphcore e SambaNova. Queste aziende dispongono tutte di varie architetture che possono ripartire i calcoli paralleli su più core “on-die“. SambaNova, ad esempio, ha sviluppato un’architettura per i suoi chip che condivide alcuni dei principi di Triton.