L’esecuzione di modelli di intelligenza artificiale richiede sempre più capacità di calcolo, basti pensare che quando leggiamo che GPT3.5 è un modello con 175 miliardi di parametri stiamo parlando del numero di connessioni della rete neurale e che potrebbero dover essere “attivati” in presenza di un particolare input.
Le reti neurali richiedono infatti la capacità di eseguire operazioni di algebra lineare su grandi moli di dati, ed un’esecuzione sequenziale comporterebbe tempi di esecuzione lunghissimi.
È un fatto noto che le GPU possono accelerare sia l’apprendimento che l’inferenza (ovverosia l’abilità di usare il modello a partire da un particolare input) di reti neurali, ma non sono gli unici acceleratori disponibili sul mercato: Google TPU, AWS Trainium e Inferentia, Intel Gaudì 2 e il nuovissimo Intel Core Ultra offrono alternative alle GPU. Ma quali sono le differenze tra questi acceleratori?
Investire in calcolo
È notizia di questi giorni l’investimento di Amazon Web Services (AWS) in Anthropic al fine di offrire il modello LLM Claude 2 nel proprio cloud. Nel comunicato le due aziende parlano dei benefici che gli acceleratori Trainium e Inferentia di AWS porteranno nell’esecuzione del modello. Si tratta di un accordo analogo a quello fatto tra Microsoft e OpenAI che in parte è stato supportato dall’uso del cloud Azure per l’esecuzione dei modelli di OpenAI per cui Microsoft detiene l’esclusiva per l’esecuzione nel proprio cloud.
Allo stesso tempo l’amministratore delegato di Intel, Pat Gelsinger, ha annunciato dal palco di Intel Innovate 2023 l’avvento dell’”AI PC” basato sul processore Intel Core Ultra in uscita il 14 dicembre e che ha al suo interno ha una NPU, ovverosia una Neural Processing Unit, per consentire l’esecuzione di modelli di intelligenza artificiale locali senza dover necessariamente ricorrere a servizi on-line. Sempre nello stesso evento sono state annunciate le ultime novità degli acceleratori Gaudì per supportare apprendimento ed inferenza nei server.
Quali acceleratori di intelligenza artificiale usare?
Innanzitutto, è bene sottolineare che c’è una grande differenza tra una GPU come quelle di nVidia, AMD o Intel e gli altri acceleratori. Le GPU sono dei processori general purpose orientati all’esecuzione di computazioni SIMD (Single Instruction Multiple Data). Si tratta di processori che assomigliano molto alle CPU nella complessità, ma si caratterizzano per questa capacità di poter eseguire la stessa operazione su molti dati in un singolo ciclo, capacità molto importante nell’implementazione di algoritmi di algebra lineare.
Sono molte le tipologie di computazione che beneficiano delle GPU dovendo processare grandi matrici di dati, e tra queste troviamo sicuramente le Deep Neural Networks (DNN), alla base degli odierni modelli di intelligenza artificiale, ma non sono le uniche possibili per l’accelerazione.
Al contrario gli acceleratori come le TPU di Google e Trainium di AWS sono chip decisamente più semplici disegnati per accelerare il calcolo tensoriale usato per la realizzazione delle DNN. Data la minore complessità di questi chip i costi sono inferiori e sono stati spesso messi in competizione con le GPU per il loro costo ridotto nonostante siano decisamente meno flessibili delle GPU. Analoghe considerazioni possono essere fatte per Intel Gaudì che offre 24 TPC, acceleratori per il calcolo tensoriale.
Non è un caso che Intel confronti le performance nell’apprendimento di alcune reti neurali di riferimento come ResNet50 rispetto a delle GPU (le A100 sono le schede di penultima generazione di nVidia che ha recentemente reso disponibili le H100). Ovviamente la flessibilità delle GPU spesso esibiscono prestazioni differenti in applicazioni reali proprio grazie alla propria flessibilità rispetto agli acceleratori tensoriali.
È anche una questione di software
Sia che le GPU che gli acceleratori tensoriali richiedono che le applicazioni siano scritte usandone le proprie istruzioni. L’affermarsi della libreria CUDA di nVidia ha consentito un dominio all’azienda californiana anche grazie ai grandi investimenti fatti a partire dal 2006 per accelerazione di applicazioni di calcolo intensivo. Non è quindi un caso che le GPU di nVidia sono quelle più supportate dai vari framework di AI come ad esempio TensorFlow e PyTorch. Sono stati questi framework, prevalentemente realizzati in Python, a far sì che il linguaggio di programmazione fosse il più utilizzato in questo ambito e non è un caso che i vendor abbiano collaborato con gli sviluppatori di questi framework open source per assicurare che fossero in grado di usare gli acceleratori tensoriali e non solo le GPU. Intel ha addirittura sviluppato un ecosistema open source, One API, disegnato per scrivere programmi di calcolo intensivo capaci di eseguire usando più acceleratori incluse le GPU e gli acceleratori di terze parti.
Nonostante non vi sia ancora un’indagine formale sembra che la commissione Europea stia indagando possibili pratiche sleali da parte del gigante che domina il mercato con oltre l’80% di quota.
Apprendimento vs. inferenza
La flessibilità dei modelli LLM e più in generale di AI generativa, unitamente ai costi sostanziali necessari per poter effettuare un apprendimento partendo dai dati, rendono l’addestramento di una rete neurale complessa un compito che solo in pochi possono svolgere (un apprendimento di ChatGPT 3.5 si stima essere costato oltre 4 milioni di dollari). È inevitabile quindi che l’attenzione si sposterà in parte dai sistemi capaci di accelerare l’apprendimento a sistemi ottimizzati per l’inferenza (ovverosia l’esecuzione del modello appreso). È in questo contesto che va letta la mossa di Intel di integrare nella nuova CPU una Neural Processing Unit, ovverosia un chip specializzato per l’inferenza (analogo a Inferentia di AWS anche se non si hanno molte informazioni sul suo design). C’è da aspettarsi che si tratti di un trend appena iniziato, anche perché la messa in esecuzione di un modello pre-addestrato è molto più facile da industrializzare rendendo molto più semplice l’integrazione dell’AI in sistemi esistenti. Inoltre, l’inferenza richiede molte meno risorse computazionali rispetto a quelle necessarie nella fase di apprendimento, consentendo di utilizzare chip più specializzati e a più basso consumo per questa fase dell’esecuzione del sistema.
Conclusioni
Nonostante il marketing cerchi di convincerci del contrario le GPU e le tensor unit sono acceleratori diversi nel loro funzionamento e anche nel costo. Se qualcuno, ad esempio, si rendesse conto che un’ottimizzazione algoritmica possa accelerare significativamente il processo di apprendimento allora è più probabile che questa sia implementabile per una GPU che per un’unità di calcolo tensoriale. Allo stesso tempo essendo acceleratori specializzati possono offrire ottime prestazioni su casi specifici e non vanno ignorati quando si realizza un cluster di calcolo scientifico orientato all’esecuzione di questi modelli.
Va però detto che i grandi operatori cloud mettono a disposizione acceleratori fornendo solo le librerie di programmazione e scarsi dettagli sulla loro implementazione e funzionamento e possono rappresentare, almeno in parte, una forma di lock-in visto che il codice da eseguire dipende dal dispositivo.
Vedremo cosa accadrà nei prossimi mesi, soprattutto con la diffusione dei primi AI PC capaci di eseguire modelli interamente locali. Un fatto è però certo, questi acceleratori sono qui per rimanere, e svolgeranno un ruolo centrale nell’abbattimento dei costi dell’AI, un aspetto sempre più importante visto che si è reso necessario introdurre licenze specifiche per Microsoft Copilot e Google Duet al fine di superare il modello flat a cui ci ha abituato Internet a partire dalla seconda metà degli anni Novanta.