vLLM: serving ad alte prestazioni per modelli linguistici

Il team di Berkeley introduce vLLM con PagedAttention: gestione della KV cache ispirata alla memoria virtuale, continuous batching e condivisione della memoria tra sequenze per un throughput 2-4x superiore.

Open SourceAI Open SourcevLLMLLMInferencePerformancePagedAttention

Il collo di bottiglia del serving

Addestrare un modello linguistico di grandi dimensioni è costoso, ma servirlo in produzione presenta sfide altrettanto complesse. Ogni richiesta di generazione richiede una KV cache (key-value cache) che cresce proporzionalmente alla lunghezza della sequenza e al numero di layer del modello. Con centinaia di richieste concorrenti, la gestione della memoria GPU diventa il fattore limitante: l’approccio ingenuo pre-alloca blocchi di memoria contigui per ogni sequenza, sprecando dal 60% al 80% della memoria disponibile a causa della frammentazione e della pre-allocazione conservativa.

PagedAttention: la memoria virtuale per i Transformer

vLLM, sviluppato dal team di ricerca di UC Berkeley, introduce PagedAttention, un meccanismo di gestione della KV cache ispirato al concetto di paginazione della memoria virtuale dei sistemi operativi. Invece di allocare blocchi contigui per l’intera sequenza, PagedAttention suddivide la KV cache in blocchi di dimensione fissa (le “pagine”) che possono essere allocati in posizioni non contigue della memoria GPU.

Una tabella di mapping — analoga alla page table di un sistema operativo — traduce gli indirizzi logici della sequenza in indirizzi fisici dei blocchi. I blocchi vengono allocati on-demand man mano che la generazione procede, eliminando la necessità di pre-allocare memoria per la lunghezza massima della sequenza.

Continuous batching e condivisione

Il secondo contributo fondamentale è il continuous batching: nuove richieste vengono inserite nel batch di esecuzione appena una sequenza termina, senza attendere che l’intero batch sia completato. Questo elimina i tempi morti in cui la GPU resta inattiva in attesa che tutte le sequenze del batch raggiungano la fine.

PagedAttention abilita inoltre la condivisione della memoria tra sequenze: quando tecniche come il beam search o il parallel sampling generano più sequenze dallo stesso prompt, i blocchi di KV cache del prefisso condiviso vengono referenziati tramite contatori, non duplicati. Il risparmio di memoria può raggiungere il 55%.

Risultati e adozione

Nei benchmark pubblicati, vLLM raggiunge un throughput 2-4 volte superiore rispetto all’inferenza naive con HuggingFace Transformers, e fino a 24 volte superiore in scenari con sequenze lunghe e alto parallelismo. Il progetto è rilasciato come libreria open source con un’API compatibile con lo standard OpenAI, permettendo un’integrazione trasparente in sistemi esistenti. Per il deployment in produzione di modelli linguistici, il layer di serving diventa tanto critico quanto il modello stesso.

Link: docs.vllm.ai

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi