Ciao a tutti, sono Vincenzo Lomonaco, ricercatore all'Università di Pisa. Nella puntata di oggi discuteremo di un tema tecnico particolarmente utile per tutti coloro che abbiano intenzione di utilizzare questi grandi modelli di intelligenza artificiale open source, disponibili liberamente per scopi di ricerca e anche commerciali.
Come renderli efficienti quando li usiamo? Come abbiamo già raccontato nelle puntate precedenti, sebbene si parli spesso dei tempi e costi significativi per l'addestramento di modelli di machine learning, vanno registrati costi significativi anche per chi vuole semplicemente utilizzare per l'inferenza, banalmente per effettuare delle predizioni, cioè usarli a valle del processo di addestramento.
Ecco, partiamo da un esempio concreto. Riprendendo quanto scritto da Maryam Ashoori in un suo recente articolo, immaginiamo di voler utilizzare un modello fondazionale per l'elaborazione del linguaggio naturale allo stato dell'arte per riassumere automaticamente le note prodotte dalla trascrizione automatica del parlato di ogni meeting tenuto in un'azienda.
Ovviamente si tratterebbe di informazioni molto utili, da collezionare in maniera automatica, da inserire nel sistema informativo aziendale, per esempio per tener traccia delle decisioni chiave, azioni da compiere, ecc. ecc..
Immaginiamo quindi che questa azienda abbia un numero di impiegati pari a 700 e che un meeting in media duri circa 30 minuti. Ragionevole. Ogni impiegato, inoltre, ha in media cinque meeting al giorno, con – sempre in media – due colleghi della stessa azienda.
In totale si tratterebbe di 1.166 eventi al giorno, al costo stimato di circa 0,09 $ per l'utilizzo in inferenza, quindi per effettuare predizioni, e quindi creare questi riassunti, del modello fondazionale I costi totali per analizzare le trascrizioni e produrre i riassunti ammonterebbero a 105 $ al giorno e circa 40.000 € annui, un costo sicuramente notevole.
Allo stesso tempo è utile notare come nel corso della storia del machine learning, o meglio del deep learning, il numero di parametri e quindi la grandezza di questi modelli sia cresciuta esponenzialmente.
Notiamo in questo grafico, in scala logaritmica, come sia ravvisabile un trend di crescita lineare del numero di parametri nel tempo rispetto a dei modelli fondazionali comunemente accettati e conosciuti dalla nostra comunità.
Questo sicuramente non significa che potremmo aspettarci un incremento esponenziale dei costi, visto che anche l'hardware, per supportare i calcoli di questi modelli si evolve esponenzialmente in termini di capacità.
Tuttavia, una crescita lineare dei costi sembra ragionevole.
E quindi necessario considerare tutto l'insieme di metodologie volte esclusivamente all'ottimizzazione dell'inferenza nell'uso di questi modelli, a partire da modelli fondazionali pre-trained, cioè pre-addestrati, già allenati da qualcun altro.
In sostanza, dobbiamo capire molto pragmaticamente come effettuare delle predizioni rilevanti, come produrre testo riassuntivo a partire da un testo più grande nel nostro esempio, riducendo al massimo il numero di calcoli utilizzati.
Le tecniche principali per l'ottimizzazione di modelli già allenati si dividono in due categorie fondamentali: la compressione di modelli e l'accelerazione hardware.
La compressione di modelli si basa su un'idea molto intuitiva, quella di trasformare, a valle del processo di addestramento, un modello molto grande in uno più piccolo che, pur approssimi, per l'inferenza per le sue capacità predittive, le funzionalità di quello più grande.
L'accelerazione hardware, invece, si basa sullo sviluppo di componentistica più specializzata per soddisfare determinati calcoli propri dell'inferenza di modelli fondazionali.
La cosa più semplice da fare senza l'acquisto di hardware specializzato è l'ottimizzazione di modelli.
L'aspetto positivo è che si tratta di metodologie che possono essere usate agnosticamente rispetto al modello di AI specifico o all'architettura neurale utilizzata e sono modulabili in funzione dello specifico trade-off tra efficienza ed efficacia che abbiamo in mente rispetto all'applicazione in cui operiamo.
È importante ricordare, infatti, che nulla è gratuito e ridurre la computazione significa spesso rinunciare a una parte dell'efficacia predittiva.
Tuttavia, una nozione empirica abbastanza consolidata nella letteratura nella nostra comunità suggerisce come sia sicuramente possibile ottenere dei trade-off, dei compromessi eccellenti per significative migliorie dal punto di vista dell'efficientamento, con una perdita minimale in termini di performance predittiva.
Tra le tecniche più importanti di ottimizzazione vanno ricordate il pruning – la potatura –, la quantizzazione e la distillazione.
Il pruning si concentra sulla rimozione selettiva dei pesi meno rilevanti nella rete neurale, riducendo così la complessità del modello e rendendolo più efficiente in termini di risorse computazionali.
Questo processo si basa sull'identificazione e sulla successiva eliminazione dei collegamenti, delle sinapsi in questa metafora biologica dei neuroni, quelle che sono meno significative, spesso utilizzando tecniche di valutazione della sensibilità dei pesi rispetto all'errore di previsione, ossia semplicemente cosa succede se elimino il contributo di questo peso all'intero del modello? La mia predizione varia significativamente, comporta degli errori maggiori? Ecco, sulla base di questa valutazione è possibile eliminare quelli che sono in realtà dei contributi superflui, partendo dall'ipotesi che in una rete neurale gran parte di questi pesi lo siano, in effetti.
La quantizzazione, d'altra parte, coinvolge la rappresentazione dei pesi della rete neurale con un numero inferiore di bit, sostituendo i valori a precisione float con valori a precisione ridotta, ad esempio interi a otto bit.
Questo approccio riduce notevolmente la memoria richiesta per memorizzare i pesi del modello e accelera i calcoli computazionali, sebbene possa portare a una leggera diminuzione delle prestazioni a causa della perdita di precisione.
Quindi siamo proprio meno precisi nel fare i calcoli e quindi l'accumulo di un certo errore potrebbe comportare un errore anche di predizione.
Infine, la distillazione è un processo in cui un modello più grande, spesso chiamato docente, trasferisce le sue conoscenze a un modello più piccolo chiamato studente.
Il modello docente fornisce informazioni al modello studente sotto forma di output desiderati o soft targets, che sono in realtà distribuzioni di probabilità rispetto delle etichette binarie, per esempio.
In questo modo il modello studente impara non solo delle etichette di classe, cioè l'appartenenza ad esempio, di un oggetto a una determinata categoria, ma anche la distribuzione di probabilità associata, incorporando così una maggiore conoscenza complessiva del problema di apprendimento, che ci consente quindi di distillare a tutti gli effetti della conoscenza in un modello più piccolo.
Per quanto riguarda l'accelerazione hardware, le tipologie di acceleratori variano significativamente e sono basate su diverse tecnologie.
Per esempio FPGA – Field Programmable Gate Array, ASIC – Application Specific Integrated Circuit e GPU che già conosciamo, Graphics Processing Unit o addirittura su unità più recenti di elaborazione naturale chiamate NPU, più dedicate a specifici usi applicativi.
Questi dispositivi sono ottimizzati per svolgere operazioni matriciali computazionali legate all'algebra lineare e alle operazioni fondamentali tipiche dei modelli di machine learning, consentendo quindi di ottenere prestazioni superiori rispetto a dei processori di tipo tradizionale, quindi general purpose.
L'utilizzo di acceleratori hardware per l'inferenza consente quindi di ridurre i tempi di esecuzione dei modelli, aumenta la scalabilità e migliorare l'efficienza energetica, rendendo quindi possibile l'implementazione di applicazioni di AI in una vasta gamma di settori e soprattutto su dispositivi meno potenti e integrati, aumentandone la pervasività.
Per concludere, oggi abbiamo discusso come è possibile ottimizzare modelli fondazionali allo stato dell'arte per renderli più efficienti ed economici nel loro utilizzo.
Quindi per chiunque voglia utilizzare quanto fatto da aziende e organizzazioni che possono permettersi l'addestramento e che hanno rilasciato liberamente, diciamo, i loro risultati e focalizzandoci su tecniche di ottimizzazione sia software che hardware, raccomandando quindi l'utilizzo di quelle software che sono a una portata davvero significativa per chiunque voglia utilizzare questi modelli, quindi sempre da utilizzare come elemento complementare all'utilizzo di modelli fondazionali.
Ciao! Alla prossima puntata.