Possono essere abilitati modelli di deep learning personalizzati chatbot di intelligenza artificiale che si adattano per comprendere l’accento di un utente o tastiere intelligenti che si aggiornano continuamente per prevedere meglio la parola successiva in base alla cronologia di digitazione di qualcuno. Questa personalizzazione richiede un costante perfezionamento di un modello di apprendimento automatico con nuovi dati.
Poiché gli smartphone e altri dispositivi edge non hanno la memoria e la potenza di calcolo necessarie per questo processo di messa a punto, i dati degli utenti vengono generalmente caricati su server cloud dove il modello viene aggiornato. Ma la trasmissione dei dati consuma una grande quantità di energia e l’invio di dati sensibili degli utenti a un server cloud rappresenta un rischio per la sicurezza.
I ricercatori del MIT, del MIT-IBM Watson AI Lab e di altri centri hanno sviluppato una tecnica che consente ai modelli di deep learning di adattarsi in modo efficiente ai nuovi dati dei sensori direttamente su un dispositivo edge.
Il loro metodo di formazione sul dispositivo, chiamato PockEngine, determina quali parti di un enorme modello di machine learning devono essere aggiornate per migliorare la precisione e archivia ed elabora solo quelle parti specifiche. Esegue la maggior parte di questi calcoli mentre il modello viene preparato, prima della fase di esecuzione, riducendo al minimo il sovraccarico computazionale e aumentando la velocità del processo di messa a punto.
Rispetto ad altri metodi, PockEngine ha notevolmente accelerato l’addestramento sul dispositivo, ottenendo prestazioni fino a 15 volte più veloci su alcune piattaforme hardware. Inoltre, PockEngine non ha causato alcun calo di precisione nei modelli. I ricercatori hanno anche scoperto che il loro metodo di messa a punto ha consentito a un popolare chatbot AI di rispondere a domande complesse in modo più accurato.
“La messa a punto sul dispositivo può consentire una migliore privacy, costi inferiori, capacità di personalizzazione e anche apprendimento permanente, ma non è facile. Tutto deve avvenire con un numero limitato di risorse. Vogliamo essere in grado di eseguire non solo l’inferenza ma anche l’addestramento su un dispositivo edge. Con PockEngine, ora possiamo”, afferma Song Han, professore associato presso il Dipartimento di ingegneria elettrica e informatica (EECS), membro del MIT-IBM Watson AI Lab, illustre scienziato di NVIDIA e autore senior di uno studio accesso libero articolo che descrive PockEngine.
Han è affiancato nello studio dall’autore principale Ligeng Zhu, uno studente laureato dell’EECS, così come da altri del MIT, del MIT-IBM Watson AI Lab e dell’Università della California a San Diego. Il documento è stato recentemente presentato al Simposio internazionale IEEE/ACM sulla microarchitettura.
Strato dopo strato
I modelli di deep learning sono basati su reti neurali, che comprendono molti strati interconnessi di nodi, o “neuroni”, che elaborano i dati per fare una previsione. Quando il modello viene eseguito, un processo chiamato inferenza, un input di dati (come un’immagine) viene passato da un livello all’altro fino a quando la previsione (forse l’etichetta dell’immagine) viene restituita alla fine. Durante l’inferenza, ogni livello non deve più essere archiviato dopo aver elaborato l’input.
Ma durante l’addestramento e il perfezionamento, il modello subisce un processo noto come backpropagation. Nella propagazione inversa, l’output viene confrontato con la risposta corretta, quindi il modello viene eseguito al contrario. Ogni livello viene aggiornato man mano che l’output del modello si avvicina alla risposta corretta.
Poiché potrebbe essere necessario aggiornare ogni livello, è necessario archiviare l’intero modello e i risultati intermedi, rendendo la messa a punto più impegnativa in termini di memoria rispetto all’inferenza
Tuttavia, non tutti gli strati della rete neurale sono importanti per migliorare la precisione. E anche per i livelli importanti, potrebbe non essere necessario aggiornare l’intero livello. Quegli strati e pezzi di strati non hanno bisogno di essere archiviati. Inoltre, potrebbe non essere necessario tornare indietro fino al primo livello per migliorare la precisione: il processo potrebbe essere interrotto da qualche parte nel mezzo.
PockEngine sfrutta questi fattori per accelerare il processo di messa a punto e ridurre la quantità di calcoli e memoria richiesti.
Il sistema prima mette a punto ogni livello, uno alla volta, su una determinata attività e misura il miglioramento della precisione dopo ogni singolo livello. In questo modo, PockEngine identifica il contributo di ciascun livello, nonché i compromessi tra accuratezza e costo di messa a punto, e determina automaticamente la percentuale di ciascun livello che deve essere messa a punto.
“Questo metodo corrisponde molto bene alla precisione rispetto alla propagazione full back su diversi compiti e diverse reti neurali”, aggiunge Han.
Un modello ridotto
Convenzionalmente, il grafico di backpropagation viene generato durante il runtime, il che comporta una grande quantità di calcoli. Invece, PockEngine lo fa durante la fase di compilazione, mentre il modello viene preparato per la distribuzione.
PockEngine elimina frammenti di codice per rimuovere livelli o pezzi di livelli non necessari, creando un grafico ridotto del modello da utilizzare durante il runtime. Quindi esegue altre ottimizzazioni su questo grafico per migliorare ulteriormente l’efficienza.
Poiché tutto ciò deve essere fatto una sola volta, si risparmia sul sovraccarico computazionale per il runtime.
“È come prima di partire per un’escursione. A casa, faresti un’attenta pianificazione: quali sentieri seguirai e quali ignorerai. Quindi al momento dell’esecuzione, quando stai effettivamente facendo un’escursione, hai già un piano molto accurato da seguire”, spiega Han.
Quando hanno applicato PockEngine a modelli di deep learning su diversi dispositivi edge, inclusi i chip Apple M1 e i processori di segnale digitale comuni in molti smartphone e computer Raspberry Pi, ha eseguito l’addestramento sul dispositivo fino a 15 volte più velocemente, senza alcun calo di precisione. PockEngine ha inoltre ridotto significativamente la quantità di memoria richiesta per la messa a punto.
Il team ha anche applicato la tecnica al grande modello linguistico Llama-V2. Con modelli linguistici di grandi dimensioni, il processo di messa a punto prevede la fornitura di molti esempi ed è fondamentale che il modello impari come interagire con gli utenti, afferma Han. Il processo è importante anche per i modelli incaricati di risolvere problemi complessi o ragionare sulle soluzioni.
Ad esempio, i modelli Llama-V2 che sono stati messi a punto utilizzando PockEngine hanno risposto alla domanda “Qual è stato l’ultimo album di Michael Jackson?” correttamente, mentre i modelli che non erano stati perfezionati fallirono. PockEngine ha ridotto il tempo necessario per ciascuna iterazione del processo di messa a punto da circa sette secondi a meno di un secondo su una NVIDIA Jetson Orin, una piattaforma GPU edge.
In futuro, i ricercatori vogliono utilizzare PockEngine per mettere a punto modelli ancora più grandi progettati per elaborare insieme testo e immagini.
“Questo lavoro affronta le crescenti sfide di efficienza poste dall’adozione di grandi modelli di intelligenza artificiale come gli LLM in diverse applicazioni in molti settori diversi. Non solo è promettente per le applicazioni edge che incorporano modelli più grandi, ma anche per ridurre i costi di manutenzione e aggiornamento di grandi modelli di intelligenza artificiale nel cloud”, afferma Ehry MacRostie, senior manager della divisione Artificial General Intelligence di Amazon, non coinvolto in questo progetto. studia ma collabora con il MIT sulla ricerca correlata all’intelligenza artificiale attraverso il MIT-Amazon Science Hub.
Scritto da Adam Zewe
Da un’altra testata giornalistica. news de www.technology.org