Il backend per modelli di inferenza transformers su vLLM è ora comparabile, in termini di velocità, con le implementazioni native di vLLM per una grande varietà di architetture di modelli linguistici. Gli autori dei modelli possono automaticamente sfruttare le loro implementazioni transformers e ottenere inferenze vLLM ultraveloci, totalmente gratuite, e senza dover apportare modifiche.
Standardizzazione e flessibilità
La libreria transformers è diventata la libreria di riferimento nell’apprendimento automatico, con il supporto a 450+ architetture attraverso API coerenti. La sua struttura mira a rendere ogni implementazione di modelli autocontenuta, facile da comprendere e facilmente adattabile ad altri framework, come vLLM, SGLang, MLX, llama.cpp e molti altri.
Ogni volta che si studia il codice transformers, è semplice per i contributori apprendere il funzionamento di un’architettura e portarla a funzionare in un framework diverso. La flessibilità e la natura modulare della libreria ne fanno uno strumento ideale per sperimentare con nuovi modelli.
Integrazione con vLLM
Stiamo investendo considerevolmente nella collaborazione tra transformers e vLLM per rendere più semplice l’utilizzo di questi framework. Un passo significativo in questa direzione è stata l’integrazione dei transformers nel backend dei modelli del motore vLLM. Questo permette agli autori di modelli di eseguire modelli Hugging Face direttamente all’interno di vLLM senza dover apportare alcun cambiamento.
Il transformers fornisce il codice per i modelli, mentre vLLM introduce tecniche avanzate per l’ottimizzazione dell’inferenza, come il batching continuo e i kernel di attenzione personalizzati.
Confronto con i modelli implementati internamente
Per mostrare le capacità di transformers su vLLM, abbiamo eseguito un confronto rigoroso con le implementazioni native vLLM su tre modelli Qwen3 molto diversi. Il benchmarking si è concentrato su modelli Hugging Face, ed è stato eseguito attivando un unico flag: --model-impl transformers.
- L'implementazione --model-impl transformers si integra con le opzioni di parallelismo esistenti.
- Non tutti i modelli sono supportati — ad esempio quelli che utilizzano un attenzione lineare non sono supportati, ma lo saranno a breve.
- I modelli personalizzati non presenti sul Hub potrebbero non funzionare, poiché non sono riconoscibili dal framework transformers.
Per ciascun modello, sono state testate tre configurazioni identiche a parte il percorso di esecuzione. Il benchmark è stato completamento replicabile e messo a disposizione in un gist: benchmark.sh.
Velocità e ottimizzazioni
Il backend transformers su vLLM ha inizialmente concentrato i propri sforzi sull’ottimizzazione dell’attenzione durante l’inferenza. Implementando i kernel di attenzione vLLM in runtime, è stato possibile eseguire modelli transformers in maniera molto efficiente all’interno di vLLM.
Tuttavia, per ottenere una performance massima, erano necessarie implementazioni personalizzate per sfruttare al massimo le caratteristiche hardware, come:
- Parallelizzazione tra GPU
- Compilazione dei modelli
- Fusione dei kernel specifici
- Utilizzo di architetture specifiche di sistema
Per questo motivo, fino a poco tempo fa, gli autori che richiedevano la massima velocità dovevano scrivere una versione completa e personalizzata per vLLM.
Layer fusioni e ottimizzazioni native
Ora, la versione aggiornata del backend transformers di vLLM è in grado di applicare dinamicamente delle fusioni di layer specifiche per l’inferenza durante l’esecuzione. Ciò permette di ottenere, per architetture compatibili, velocità native simili a quelle delle implementazioni tradizionali di vLLM.
Nel nuovo sistema, il backend sfrutta torch.fx per eseguire un’analisi statica del modello. Questo processo cerca pattern specifici del codice che possono essere ottimizzati. Una volta individuati tali pattern, vengono utilizzate le strutture AST (Abstract Syntax Tree) per manipolare il codice sorgente e riscrivere alcune operazioni in-place.
Prospettive future
Il risultato, come mostrato, sono inferenze native vLLM per modelli compatibili senza dover modificare un solo riga di codice per l’ottimizzazione. Per ulteriori dettagli e approfondimenti tecnici, stiamo preparando un post blog completo che descriverà queste ottimizzazioni in profondità e illustrerà come il modello venga modificato per adattarsi al framework.