Incontra FlexGen un motore di generazione ad alta velocità per eseguire grandi modelli di linguaggio (LLM) con una memoria GPU limitata.
Incontra FlexGen, un motore ad alta velocità per grandi modelli di linguaggio (LLM) con memoria GPU limitata.
I modelli di linguaggio di grandi dimensioni (LLM) hanno recentemente mostrato prestazioni impressionanti in varie attività. L’inferenza generativa dei LLM ha un potere mai visto prima, ma affronta anche particolari difficoltà. Questi modelli possono includere miliardi o trilioni di parametri, il che significa che per eseguirli è necessaria una memoria e una potenza di calcolo enormi. GPT-175B, ad esempio, ha bisogno solo di 325GB di RAM GPU per caricare i suoi pesi di modello. Sarebbero necessarie almeno cinque GPU A100 (80GB) e tecniche di parallelismo sofisticate per adattare questo modello alle GPU. Pertanto, ridurre le risorse necessarie per l’inferenza dei LLM ha recentemente suscitato molto interesse.
I LLM vengono utilizzati per varie operazioni “back-of-house”, tra cui benchmarking, estrazione di informazioni, manipolazione dei dati, elaborazione dei moduli e casi d’uso interattivi come i chatbot. In questo studio, si concentrano su una situazione che definiscono come inferenza generativa orientata alla produttività. Il fatto che questi compiti richiedano spesso l’esecuzione dell’inferenza dei LLM a lotti su un gran numero di token, come ad esempio tutti i documenti nel corpus di un’azienda, e siano meno suscettibili al ritardo della generazione dei token è una caratteristica significativa di questi lavori. A causa di ciò, ci sono possibilità di ridurre le esigenze di risorse in determinati carichi di lavoro sacrificando la latenza per ottenere una migliore produttività.
Tre approcci sono stati utilizzati per ridurre le risorse necessarie per l’inferenza dei LLM: la compressione del modello per ridurre l’occupazione complessiva della memoria, l’inferenza collaborativa per distribuire il costo dell’inferenza attraverso la decentralizzazione e lo scarico per fare un uso migliore della memoria sulla CPU e sul disco. Sebbene esistano limiti chiari, queste strategie hanno ridotto notevolmente le esigenze di risorse per l’impiego dei LLM. La ricerca nei primi due metodi spesso richiede l’ausilio per eseguire modelli di scala 175B su una singola GPU di fascia comune perché si presume che il modello si adatti alla memoria della GPU. D’altra parte, a causa della pianificazione inefficace dell’I/O e della collocazione dei tensori, i sistemi all’avanguardia basati sullo scarico nella terza categoria non riescono a raggiungere una produttività accettabile su una singola GPU.
- Questo articolo sull’IA propone un nuovo metodo per il fine-tuning dei pesi del modello per cancellare concetti dai modelli di diffusione utilizzando la loro conoscenza.
- Questo articolo sull’IA introduce una nuova classe di obiettivi privi di simulazione per l’apprendimento di modelli generativi stocastici a tempo continuo tra distribuzioni sorgente e bersaglio generali.
- Migliori strumenti di Open Source Intelligence (OSINT) nel 2023
Con una singola GPU di fascia comune, il loro obiettivo principale è costruire meccanismi di scarico efficaci per un’alta produttività di inferenza generativa. Possono caricare parzialmente un LLM ed eseguire il calcolo a pezzi, scaricandolo nella memoria secondaria per far funzionare un LLM con memoria GPU limitata. La gerarchia della memoria è divisa in tre livelli in un sistema tipico. I livelli inferiori sono più lenti ma più abbondanti, mentre i livelli superiori sono più veloci ma più scarsi. Piccole dimensioni di batch possono causare problemi in questi sistemi. Possono compromettere la latenza in scenari orientati alla produttività utilizzando una dimensione di batch elevata e distribuendo le costose operazioni di I/O su diverse gerarchie di memoria in un ampio batch di input sovrapposto all’elaborazione.
Anche se possono compromettere il ritardo, è difficile ottenere un’alta produttività di inferenza generativa con memoria GPU limitata. La prima difficoltà consiste nel proporre un piano di scarico di successo. Il piano dovrebbe indicare quali tensori devono essere scaricati, dove devono essere scaricati nella struttura di memoria a tre livelli e quando durante l’inferenza. Vengono utilizzati tre tipi di tensori nell’inferenza generativa: pesi, attivazioni e caching chiave-valore (KV).
Esistono diverse modalità di calcolo a causa della struttura ad algoritmo batch-per-batch, token-per-token e layer-per-layer. Queste opzioni si combinano per creare uno spazio di progettazione complicato. I sistemi di inferenza basati sullo scarico attualmente in uso ereditano metodologie basate sull’addestramento che eseguono un’eccessiva I/O e raggiungono una produttività molto inferiore ai vincoli teorici dell’hardware, rendendoli aree deboli per l’inferenza. La creazione di algoritmi di compressione efficienti presenta il secondo problema. I pesi e le attivazioni dei LLM hanno mostrato risultati promettenti di compressione in pubblicazioni precedenti. Tuttavia, quando la compressione e lo scarico sono accoppiati per un’alta produttività di inferenza generativa, le strategie di compressione aggiuntive sono guidate dai costi di I/O e dalla riduzione della memoria dei pesi e della cache KV.
Ricercatori di UCB, Stanford, CMU, Meta, Yandex, ETH ed HSE introducono congiuntamente FlexGen, un framework di scarico per l’alta produttività di inferenza dei LLM, per superare questi problemi. FlexGen pianifica in modo efficace le attività di I/O, le tecniche di compressione potenziali e il parallelismo distribuito della pipeline combinando la memoria dalla GPU, dalla CPU e dal disco. Questi sono i contributi che hanno apportato:
- Descrivono esplicitamente uno spazio di ricerca di potenziali opzioni di scarico considerando la pianificazione del calcolo, la collocazione dei tensori e la delega del calcolo. Dimostrano che il loro spazio di ricerca cattura un ordine di calcolo con complessità di I/O entro 2 dall’ottimalità. Successivamente, creano un algoritmo di ricerca basato sulla programmazione lineare per massimizzare la produttività all’interno dello spazio di ricerca.
- Mostrano che, senza ritraining o calibrazione, è possibile ridurre i pesi e la cache KV per i LLM come l’OPT-175B a 4 bit con una perdita di precisione minima o nulla. Questo viene ottenuto mediante la quantizzazione raggruppata a grana fine, adatta per ridurre i costi di I/O e l’uso della memoria durante lo scarico.
- Dimostrano l’efficienza di FlexGen eseguendo l’OPT-175B su GPU NVIDIA T4 (16GB). FlexGen spesso consente una dimensione di batch maggiore rispetto alle due algoritmi di inferenza basati sullo scarico all’avanguardia, DeepSpeed Zero-Inference e Hugging Face Accelerate. FlexGen può raggiungere produttività notevolmente maggiore come risultato.
Guarda il Paper e il Github. Tutti i crediti per questa ricerca vanno ai ricercatori di questo progetto. Inoltre, non dimenticare di unirti al nostro subreddit di machine learning con oltre 16k membri, al canale Discord e alla newsletter via email, dove condividiamo le ultime notizie sulla ricerca di intelligenza artificiale, progetti interessanti e altro ancora.
Svelare i segreti del deep learning con la piattaforma di spiegabilità di Tensorleap
L’articolo Conosci FlexGen: un motore di generazione ad alto throughput per eseguire modelli di linguaggio di grandi dimensioni (LLM) con memoria GPU limitata è apparso per primo su MarkTechPost.