Incontra LOMO (LOw-Memory Optimization) un nuovo ottimizzatore AI che fonde il calcolo del gradiente e l’aggiornamento dei parametri in un solo passaggio per ridurre l’utilizzo della memoria.

Incontra LOMO, un nuovo ottimizzatore AI che riduce l'utilizzo della memoria combinando il calcolo del gradiente e l'aggiornamento dei parametri in un solo passaggio.

I modelli di linguaggio di grandi dimensioni hanno trasformato l’elaborazione del linguaggio naturale, mostrando abilità straordinarie come l’emersione e il grokking e guidando un aumento continuo della dimensione del modello. La barra per la ricerca in NLP viene alzata addestrando questi modelli con miliardi di parametri, come quelli con 30 miliardi a 175 miliardi di parametri. È una sfida per i laboratori e le aziende di piccole dimensioni partecipare a questo campo di ricerca, poiché l’ottimizzazione dei modelli di linguaggio di grandi dimensioni richiede frequentemente risorse costose come macchine con 880 GB di GPU. Recentemente, l’ottimizzazione dei modelli di linguaggio di grandi dimensioni con risorse limitate è diventata possibile grazie a tecniche di ottimizzazione dei parametri efficienti come LoRA e Prefix-tuning.

Sebbene l’ottimizzazione completa dei parametri sia stata considerata una strategia più efficace rispetto all’ottimizzazione efficiente dei parametri, entrambe le tecniche devono fornire una soluzione funzionante. Vogliono studiare metodi per completare l’ottimizzazione completa dei parametri nelle circostanze con risorse limitate. Esaminano l’attivazione, gli stati dell’ottimizzatore, il tensore del gradiente e i parametri, le quattro caratteristiche dell’utilizzo della memoria nei modelli di linguaggio di grandi dimensioni, e ottimizzano il processo di addestramento in tre modi: 1) Rivalutano la funzionalità algoritmica di un ottimizzatore e scoprono che SGD è un sostituto adatto per l’ottimizzazione completa dei parametri per i modelli di linguaggio di grandi dimensioni. Poiché SGD non mantiene le fasi intermedie, è possibile eliminare l’intera parte degli stati dell’ottimizzatore. 2) Il loro ottimizzatore suggerito, LOMO, come mostrato nella Figura 1, riduce l’utilizzo della memoria dei tensori del gradiente a O, pari al consumo di memoria del tensore del gradiente più grande. 3) Incorporano la normalizzazione del gradiente e la riduzione della perdita e passano alcuni calcoli alla precisione completa durante l’addestramento per stabilizzare l’addestramento a precisione mista con LOMO. Il loro metodo combina la stessa quantità di memoria dei parametri, dell’attivazione e del tensore del gradiente più grande.

Aumentano notevolmente il consumo di memoria dell’ottimizzazione completa dei parametri, riducendolo al livello dell’inferenza. Ciò perché il processo in avanti da solo non dovrebbe richiedere meno memoria rispetto al processo all’indietro. In particolare, assicurano che la funzione di ottimizzazione dei parametri non sia compromessa durante l’utilizzo di LOMO per risparmiare memoria, poiché il processo di aggiornamento dei parametri è simile a SGD. I ricercatori dell’Università Fudan dimostrano come l’utilizzo di LOMO renda possibile addestrare con successo un modello da 65 miliardi con sole 8 GPU RTX 3090 valutando empiricamente le capacità di memoria e throughput di LOMO. Inoltre, utilizzano LOMO per regolare i parametri completi dei modelli di linguaggio di grandi dimensioni sulla collezione di dataset SuperGLUE per convalidare le prestazioni a valle del loro approccio suggerito. I risultati empirici mostrano quanto bene LOMO funzioni nell’ottimizzazione dei modelli di linguaggio di grandi dimensioni con numerosi parametri.

https://arxiv.org/pdf/2306.09782.pdf

Ecco il loro contributo complessivo:

• Offrono uno studio teorico che suggerisce che SGD può regolare con successo tutti i parametri dei modelli di linguaggio di grandi dimensioni. È possibile che gli ostacoli che una volta impedivano l’uso diffuso di SGD non siano così gravi durante l’ottimizzazione dei modelli di linguaggio di grandi dimensioni.

• Suggeriscono LOMO, o ottimizzazione a bassa memoria, per ridurre drasticamente l’utilizzo della memoria GPU pur mantenendo il processo di ottimizzazione.

• Dimostrano empiricamente l’efficienza di LOMO nell’ottimizzazione dei modelli di linguaggio di grandi dimensioni in circostanze con risorse limitate analizzando attentamente l’utilizzo della memoria e le prestazioni di throughput. Le valutazioni delle prestazioni dei lavori a valle forniscono ulteriori giustificazioni per questo.

L’implementazione del codice è disponibile su GitHub.