Che cos'è vLLM?
vLLM, acronimo di "virtual large language model", è una libreria di codice open source gestita dalla community vLLM, che consente ai modelli linguistici di grandi dimensioni (LLM) di eseguire calcoli in modo più efficiente e su larga scala.
Nello specifico, vLLM è un server di inferenza IA che ottimizza l'utilizzo della memoria GPU, accelerando così l'output delle applicazioni di IA generativa.
Come funziona vLLM?
Per capire i vantaggi offerti da vLLM, è importante analizzare il ruolo di un server di inferenza e come funziona un LLM. Con queste nozioni diventa più facile comprendere in che modo vLLM riesce a migliorare le prestazioni dei modelli di linguaggio esistenti.
Cos'è un server di inferenza?
Un server di inferenza (dall'inglese, inference server) è un software che aiuta un modello di IA a trarre nuove conclusioni in base all'addestramento ricevuto. I server di inferenza alimentano le richieste di input tramite un modello di apprendimento automatico e producono un output.
"Inferire" significa trarre una conclusione sulla base di prove e premesse. Ad esempio, se vediamo accesa la luce nella casa di un nostro amico, ma non lo vediamo, possiamo dedurre che sia in casa, ma non abbiamo prove certe in merito.
Un modello di linguaggio non ha prove definitive del significato di una parola o un'espressione (in fondo, è solo un software), quindi usa l'addestramento ricevuto per fare una deduzione. Grazie a una serie di calcoli basati su dati, riesce a generare una conclusione, proprio come noi dedurremo che il nostro amico è uscito se le luci di casa sua sono spente.
Gli LLM utilizzano i calcoli per fare deduzioni
L'addestramento di un LLM avviene tramite calcoli matematici. Per generare una risposta (inferenza), poi, un LLM deve eseguire una serie di calcoli di probabilità (e quindi, ricorrere ancora alla matematica).
Affinché comprenda la richiesta dell'utente, l'LLM deve capire la relazione tra le parole e deve saperle associare tra loro. Gli LLM non conoscono i significati delle parole e non le comprendono come gli umani, ma "ragionano" (di nuovo) con la matematica.
Quando risponde a milioni di utenti al giorno, un LLM svolge numerosi calcoli e, quando l'applicazione è in esecuzione, elaborarli tutti allo stesso tempo può essere complesso. Questo perché, solitamente, la potenza di elaborazione richiesta per utilizzare un LLM può consumare rapidamente una porzione elevata di memoria.
Soluzioni per l'IA di Red Hat
vLLM usa PagedAttention per elaborare i calcoli in modo più efficiente
Secondo uno studio fondamentale, Efficient Memory Management for Large Language Model Serving with PagedAttention, gli attuali sistemi di gestione della memoria degli LLM non elaborano i calcoli in modo molto efficiente. PagedAttention è una tecnica di gestione della memoria introdotta da vLLM, ispirata alla memoria virtuale e alla paginazione dei sistemi operativi.
Questo studio dimostra come la cache key value (KV), che è la memoria a breve termine di un LLM, si amplia e si restringe durante la trasmissione, e indica vLLM come una soluzione per gestire lo spazio e la potenza di elaborazione in modo più stabile.
In sostanza, vLLM funziona come un set di istruzioni che porta la cache KV a creare "batch" delle risposte degli utenti in modo continuo per ottenere maggiore efficienza.
Prima di proseguire, diamo una breve definizione di cache KV e batching continuo.
Cos'è la cache KV?
"KV" sta per "key value", ovvero "valore chiave", e indica il modo in cui un LLM formula il significato di una parola o di un'espressione. Ad esempio, per elaborare il valore chiave di un piatto su un menu, dobbiamo considerare la chiave, una porzione di patatine fritte, e il suo valore, cioè il prezzo, 3,99 $. Quando la porzione di patatine fritte viene battuta in cassa, il "valore" calcolato di questa "chiave" è di 3,99 $. Gli LLM elaborano i KV in modo simile, perché conservano il valore corrispondente di ogni chiave (o token) nella propria cache.
La cache è uno storage di memoria a breve termine. Ad esempio, quando un computer va a rilento, di solito si "pulisce" la cache per ottimizzare e accelerare l'elaborazione dei dati.
Cos'è il batching continuo?
Il batching continuo è una tecnica utilizzata per elaborare più query contemporaneamente, allo scopo di migliorare l'efficienza complessiva dell'elaborazione.
Una chatbot riceve ogni minuto migliaia di query, spesso molto simili tra loro, come "Qual è la capitale dell'India?" e "Qual è la capitale dell'Irlanda?" Entrambe le query includono le parole "Qual è la capitale dell'", che rappresentano una sequenza di token (parole). Per comprenderne il significato, un LLM deve compiere una notevole quantità di calcoli.
Con vLLM, la chatbot può salvare questa sequenza di token ("Qual è la capitale dell'") in una memoria a breve termine (la cache KV) e inviare un'unica "richiesta di traduzione" invece di due richieste separate.
In sostanza, anziché generare una risposta da zero, vLLM consente alla cache KV di memorizzare i dati e trovare soluzioni più rapide per le nuove query simili a quelle già ricevute. L'elaborazione dei calcoli relativi a query simili in batch (piuttosto che singolarmente) migliora la velocità di trasmissione e ottimizza l'allocazione della memoria.
I vantaggi di vLLM per le aziende
In un mercato in cui l'hardware necessario per le applicazioni basate sugli LLM è molto costoso, vLLM consente alle aziende di ottenere risultati migliori con meno risorse.
La creazione di LLM affidabili e convenienti richiede una quantità significativa di potenza di elaborazione, risorse energetiche e competenze specialistiche. Di conseguenza, per molte aziende diventa difficile usufruire dei vantaggi offerti da un'IA più sicura, personalizzata e pronta al deployment.
vLLM e PagedAttention, l'algoritmo su cui è basato, puntano a risolvere queste difficoltà utilizzando in modo più efficiente l'hardware richiesto per supportare i carichi di lavoro dell'IA.
I vantaggi di vLLM
L'utilizzo di vLLM come server di inferenza per gli LMM offre svariati vantaggi:
Tempi di risposta più rapidi: secondo alcuni calcoli, vLLM può processare i dati con una capacità di trasmissione fino a 24 volte più elevata rispetto a Hugging Face Transformers, una libreria open source molto usata per gli LLM.
Costi ridotti per l'hardware: un utilizzo più efficiente delle risorse consente di ridurre il numero delle GPU necessarie per gestire l'elaborazione degli LLM.
Scalabilità: vLLM organizza la memoria virtuale in modo che la GPU possa gestire più richieste contemporaneamente.
Privacy dei dati: il self-hosting di un LLM con vLLM consente di avere maggiore controllo sulla privacy e sull'utilizzo dei dati rispetto all'utilizzo di un LLM o un'applicazione di terze parti come ChatGPT.
Innovazione open source: il coinvolgimento della community nella manutenzione e nella gestione di vLLM permette di migliorare il codice in modo uniforme. Gli accessi e le modifiche del codice avvengono in modo trasparente, e ciò consente agli sviluppatori di utilizzare vLLM secondo le proprie esigenze.
Perché vLLM sta diventando la soluzione standard per migliorare le prestazioni degli LLM
PagedAttention è il principale algoritmo originato da vLLM, ma non è l'unica soluzione offerta. Tra le altre funzionalità disponibili per l'ottimizzazione delle prestazioni sono inclusi:
- PyTorch Compile/CUDA Graph, per migliorare la memoria GPU.
- Quantizzazione, per ridurre lo spazio in memoria necessario per eseguire i modelli.
- Parallelismo tensoriale, per suddividere i processi di elaborazione tra più GPU.
- Decodifica speculativa, per accelerare la generazione di testi grazie a un modello più piccolo per predire i token e un modello più grande per convalidare la previsione
- Flash Attention, per migliorare l'efficienza dei modelli dei trasformatori.
Oltre alle funzionalità di ottimizzazione, vLLM offre anche flessibilità: funziona infatti con modelli di linguaggio grandi e piccoli e si integra con framework e modelli diffusi. Infine, la natura open source di vLLM consente la trasparenza del codice, la personalizzazione e la correzione rapida dei bug.
Gestisci le tue soluzioni di IA con l'open source
Il portfolio Red Hat® AI sfrutta l'innovazione open source per superare le difficoltà legate all'utilizzo dell'IA aziendale su larga scala.
Strumento fondamentale all'interno delle nostre soluzioni per l'IA e adatto a inferenze multiple, vLLM è offerto con Red Hat® OpenShift® AI.
OpenShift AI è una piattaforma MLOps, flessibile e scalabile, dotata di strumenti per creare, distribuire e gestire le applicazioni basate sull'intelligenza artificiale. OpenShift AI supporta l'intero ciclo di vita dei modelli e degli esperimenti di AI/ML, sia on premise che nel cloud pubblico.