Home Tecnologia Nvidia afferma che può ridurre la memoria LLM di 20 volte senza...

Nvidia afferma che può ridurre la memoria LLM di 20 volte senza modificare il peso del modello

10
0

I ricercatori di Nvidia hanno introdotto una nuova tecnica che riduce drasticamente la quantità di memoria necessaria ai modelli linguistici di grandi dimensioni per tenere traccia della cronologia delle conversazioni – fino a 20 volte – senza modificare il modello stesso. Il metodo, chiamato KV Cache Transform Coding (KVTC)applica idee provenienti da formati di compressione multimediale come JPEG per ridurre la cache dei valori-chiave dietro i sistemi IA multi-turn, riducendo le richieste di memoria della GPU e accelerando il time-to-first-token fino a 8 volte.

Per le applicazioni IA aziendali che si basano su agenti e contesti lunghi, ciò si traduce in costi di memoria GPU ridotti, riutilizzo più rapido e riduzione fino a 8 volte della latenza evitando la necessità di ricalcolare i valori della cache KV perduti.

Servire modelli linguistici di grandi dimensioni su larga scala richiede la gestione di un’enorme quantità di dati, in particolare per conversazioni a più turni e lunghe sessioni di codifica. Ogni volta che un utente aggiunge un messaggio, il sistema fa affidamento sulla memoria archiviata per evitare di ricalcolare da zero l’intera cronologia delle conversazioni.

Tuttavia, questa occupazione di memoria cresce rapidamente, creando un grave collo di bottiglia per la latenza e i costi di infrastruttura.

Perché la cache KV diventa un collo di bottiglia su larga scala

Per alimentare applicazioni di intelligenza artificiale multi-turno come assistenti di codifica o app di chat, i modelli linguistici di grandi dimensioni si basano su un meccanismo noto come cache dei valori-chiave (KV).. Questa cache memorizza le rappresentazioni numeriche nascoste per ogni token precedente in una conversazione. Poiché il modello ricorda la conversazione passata, non è necessario rielaborare in modo ridondante l’intera cronologia della chat ogni volta che l’utente invia una nuova richiesta.

Tuttavia, per le applicazioni IA con attività contestuali lunghe, questa cache può facilmente raggiungere più gigabyte. Man mano che i modelli crescono e generano catene di ragionamento sempre più lunghe, la cache KV diventa un collo di bottiglia critico per il throughput e la latenza del sistema.

Ciò crea una sfida difficile per gli ambienti di produzione. Poiché gli LLM sono fortemente vincolati alla memoria durante l’inferenza, servire più utenti contemporaneamente è vincolato dall’esaurimento della memoria della GPU piuttosto che dal tempo di calcolo. “Una gestione efficace della cache KV diventa fondamentale, poiché le cache inattive devono essere rapidamente scaricate dalla memoria della GPU per accogliere altri utenti e ripristinate rapidamente per riprendere le conversazioni”, ha dichiarato a VentureBeat Adrian Lancucki, Senior Deep Studying Engineer di Nvidia. “Questi costi infrastrutturali si riflettono ora nei prezzi commerciali (advert esempio, come ‘promp caching’) con costi aggiuntivi per il caching.”

Anche le soluzioni di compromesso, come lo scaricamento della cache su dispositivi di archiviazione di livello inferiore come la memoria della CPU o gli SSD, introducono notevoli spese di trasferimento dei dati che possono saturare la larghezza di banda della rete e creare colli di bottiglia.

Una soluzione comune è comprimere la cache KV in modo che occupi meno memoria. Tuttavia, le soluzioni esistenti spesso non riescono a risolvere il problema in modo olistico. Gli strumenti progettati per comprimere le cache per la trasmissione in rete raggiungono tassi di compressione bassi. Altri metodi di compressione richiedono calcoli al volo advert alto consumo di risorse per ogni singolo immediate dell’utente. Nel frattempo, tecniche popolari come quantizzazione oppure la sparsificazione può introdurre cali di latenza e precisione o richiedere modifiche permanenti ai pesi del modello, il che ne limita la praticità.

Nel loro articolo, i ricercatori di Nvidia notano che gli approcci esistenti “raramente sfruttano la forte struttura di basso rango dei tensori KV”. Ciò significa che, nonostante l’enorme numero di dimensioni e gigabyte di dimensioni, le effettive informazioni sottostanti nella cache KV sono altamente correlate e possono essere rappresentate accuratamente utilizzando un numero molto inferiore di variabili. Sfruttare questa caratteristica è ciò su cui si concentra KVTC.

Prendendo in prestito trucchi dai codec multimediali

Advert alto livello, KVTC affronta il collo di bottiglia della memoria AI prendendo in prestito un concetto collaudato dai media classici: la codifica di trasformazione, la metodologia che alimenta formati di compressione di immagini e video familiari come JPEG. Il framework riduce l’ingombro della cache attraverso un processo rapido a più passaggi che viene eseguito tra le fasi di inferenza per evitare di rallentare la generazione effettiva dei token. “Questo approccio di ‘compressione dei media’ è vantaggioso per l’implementazione aziendale perché non è invasivo: non richiede modifiche ai pesi del modello o al codice e funziona vicino al livello di trasporto”, ha affermato Lancucki.

Innanzitutto, KVTC utilizza analisi delle componenti principali (PCA) per allineare le caratteristiche dei dati della cache KV in base alla loro importanza. La PCA è una tecnica statistica spesso utilizzato nell’apprendimento automatico per rendere i modelli più efficienti isolando le caratteristiche più critiche dei dati ed eliminando le ridondanze. Questa parte del processo viene eseguita solo una volta durante una fase di calibrazione iniziale per ciascun modello. Poiché la matrice di allineamento PCA viene calcolata offline e riutilizzata, non rallenta il processo di compressione al momento dell’inferenza per i singoli immediate utente.

KVTC

Struttura KVTC (fonte: arXiv)

Successivamente, il sistema utilizza un algoritmo di programmazione dinamica per stabilire automaticamente la quantità di memoria effettivamente necessaria per ciascuna dimensione di dati specifica. I componenti principali più critici ottengono un’elevata precisione, mentre i componenti finali e meno importanti ricevono meno bit o vengono loro assegnati zero bit e vengono eliminati completamente.

Infine, la pipeline prende questi dati ottimizzati e quantizzati e li inserisce in un array di byte, facendoli passare attraverso un codificatore entropico chiamato DEFLATE. Poiché questo passaggio viene eseguito in parallelo direttamente sulla GPU utilizzando la libreria nvCOMP di Nvidia, funziona a velocità molto elevate.

Per decomprimere i dati quando l’utente ritorna, KVTC esegue semplicemente i calcoli al contrario. Per accelerare il processo, esegue il pesante lavoro di decompressione in blocchi, strato per strato. Ciò consente al modello AI di iniziare a calcolare anticipatamente la risposta successiva utilizzando il primo blocco decompresso mentre i blocchi successivi vengono decompressi in background.

KVTC serve l'architettura

Architettura di distribuzione KVTC (fonte: arXiv)

Compressione 20x, penalità di precisione inferiore all’1%.

I ricercatori di Nvidia hanno testato KVTC su un elenco diversificato di modelli che vanno da 1,5B a 70B parametri, tra cui la famiglia Llama 3, Mistral NeMo e i modelli Qwen 2.5 distillati con R1 advert alto ragionamento. Hanno valutato questi modelli sulla base di una serie di parametri di riferimento, tra cui complesse sfide matematiche e di codifica come MATH-500 e LiveCodeBench, nonché attività intensive di recupero di contesti lunghi come “Needle In A Haystack” e recupero di valori-chiave.

Hanno contrapposto KVTC a various linee di base popolari: metodi di eliminazione dei token (advert esempio, H2O e TOVA), tecniche di quantizzazione pesante (advert esempio, KIVI e GEAR) e xKV (una tecnica di compressione rapida basata su scomposizione in valori singolari).

Con un rapporto di compressione effettivo di 20x, KVTC ha mantenuto costantemente le prestazioni entro meno di un punto percentuale di penalità di precisione rispetto ai modelli Vanilla originali non compressi nella maggior parte delle attività. Quando i ricercatori hanno spinto il sistema ai limiti estremi della compressione fino a 32x e 64x, KVTC ha resistito molto bene.

Al contrario, linee di base popolari come KIVI e GEAR hanno iniziato a subire un massiccio degrado della precisione con un rapporto di compressione di appena 5x, in particolare su attività a lungo contesto. I metodi normal di eliminazione della cache come H2O e TOVA si sono rivelati del tutto inadeguati come compressori generici, fallendo di fatto quando è stato chiesto di recuperare informazioni contestuali profonde.

Prestazioni KVTC

KVTC preserva la precisione sui benchmark chiave comprimendo significativamente la cache KV (fonte: arXiv)

Considera l’implementazione di un modello di ragionamento più piccolo come Qwen 2.5 1.5B per un assistente di codifica. Normalmente questo modello richiede 29 KB di memoria per ogni singolo token. Utilizzando un’impostazione di compressione 8x, KVTC ha ridotto l’impronta a circa 3,2 KB per token, subendo al contempo un trascurabile calo di 0,3 punti percentuali nella precisione della codifica.

Per gli architetti aziendali, decidere quando implementare questa tecnica dipende in larga misura dal caso d’uso. “KVTC è ottimizzato per scenari a lungo contesto e multi-turno”, ha affermato Lancucki. Ha indicato gli assistenti di codifica, i flussi di lavoro di ragionamento iterativo con agenti, in particolare in attesa di output di strumenti advert alta latenza, e il RAG iterativo come applicazioni ideali. “Tuttavia, gli utenti dovrebbero evitare KVTC per conversazioni brevi”, ha aggiunto, perché la finestra scorrevole non compressa dei token più recenti domina la sequenza nelle interazioni più brevi, impedendo rapporti di compressione significativi.

KVTC è altamente portabile e un’implementazione ottimizzata verrà presto integrata nel KV Block Supervisor (KVBM) all’interno del framework Dynamo, rendendolo compatibile con i più diffusi motori di inferenza open supply come vLLM.

Ancora più importante per l’esperienza dell’utente, KVTC riduce considerevolmente il time to first token (TTFT), il ritardo tra l’invio di un immediate e la generazione del primo token di risposta da parte del modello. Su un immediate di 8.000 token, un modello vanilla 12B in esecuzione su una GPU Nvidia H100 impiega circa 3 secondi per ricalcolare la cronologia da zero. Nel frattempo un sistema può decomprimere la cache KVTC in soli 380 millisecondi, garantendo una riduzione fino a 8 volte del tempo necessario per generare il primo token.

Poiché KVTC non altera il modo in cui il modello presta attenzione ai token, è teoricamente compatibile con metodi di sfratto dei token come Sparsificazione dinamica della memoria (DMS), un’altra tecnica di compressione avanzata. DMS è un metodo di eliminazione autoregressivo dei token che ottimizza la memoria identificando ed eliminando completamente i token meno importanti dalla finestra di contesto.

“In linea di principio, KVTC è complementare al DMS”, ha affermato Lancucki. “Mentre DMS elimina i singoli token lungo l’asse del tempo, KVTC comprime i dati separatamente in ciascuna posizione.” Tuttavia, ha avvertito che, sebbene mirino a dimensioni numerous, “resta da testare quali rapporti di compressione possono essere raggiunti con KVTC su cache sparse”.

Poiché i modelli continuano a scalare in modo nativo fino a finestre di contesto multimilionarie, la necessità di una solida gestione della memoria non potrà che aumentare. “Date le somiglianze strutturali e i modelli ricorrenti nelle cache KV in varie architetture di modelli, è probabile l’emergere di uno strato di compressione dedicato e standardizzato”, ha affermato Lancucki. Supportata dai progressi {hardware}, l’infrastruttura AI potrebbe presto trattare la compressione della cache KV come un livello invisibile e standardizzato, proprio come lo è oggi la compressione video per lo streaming.

fonte

LEAVE A REPLY

Please enter your comment!
Please enter your name here