Calcolatore del throughput di inferenza in batch
Dati di input
| Dimensione del batch | 32 |
|---|---|
| Token in uscita per richiesta | 256 |
| Tempo di completamento del batch | 5 sec |
Calcolatore del throughput di inferenza in batch
Trasforma un tempo di completamento del batch misurato in token al secondo aggregati, velocità per richiesta e richieste al secondo — il compromesso fra throughput e latenza del servizio LLM in batch.
Dati di input
Batch
Risultati
Inserisci un valore per visualizzare i risultati.
Dettagli
Il throughput di inferenza in batch
L'inferenza in batch è il modo in cui i server di produzione dei modelli linguistici raggiungono un alto utilizzo: invece di decodificare una richiesta alla volta, ne elaborano molte insieme. Poiché i pesi del modello vengono letti una volta e riutilizzati per l'intero gruppo, l'uscita totale del server sale nettamente con la dimensione del batch — ma ogni singola richiesta attende che il batch finisca. Questo calcolatore separa quei due punti di vista, trasformando un tempo di completamento del batch misurato in throughput aggregato, velocità per richiesta e tasso di richieste.
Il compromesso del batching
La decodifica autoregressiva è limitata dalla memoria: ogni passo legge ogni peso per produrre un token. Quando una sola richiesta è in corso, quasi tutto quel traffico di memoria serve un solo utente. Si raggruppino diverse richieste in un batch e la stessa lettura dei pesi produce un token per ogni richiesta in una volta, perciò il ritmo aggregato dei token sale con la dimensione del batch mentre il costo in larghezza di banda cambia appena. Il rovescio è la latenza: una richiesta non può uscire finché non si completa il passo del batch che la contiene, perciò la velocità per richiesta non migliora e può calare leggermente al crescere dei batch.
Le formule
Dalla dimensione del batch , dai token in uscita per richiesta e dal tempo di completamento del batch misurato :
vaggvreqR=tbB×Nout=tbNout=tbBdove è il throughput aggregato, è il throughput per richiesta e sono le richieste completate al secondo. L'aggregato è semplicemente la velocità per richiesta moltiplicata per la dimensione del batch.
Esempio svolto
Un server decodifica un batch di 32 richieste, ciascuna che produce 256 token, e il batch si conclude in 5 secondi:
vaggvreqR=532×256=1638,4 token/s=5256=51,2 token/s=532=6,4 richieste/sL'operatore vede più di 1.600 token al secondo uscire dal server, ma ogni utente legge a circa 51 token al secondo. Raddoppiare il batch a 64 — se la memoria lo consente e il tempo di completamento resta attorno ai 5 secondi — raddoppierebbe all'incirca l'aggregato lasciando invariata la cifra per richiesta.
Scegliere una dimensione di batch
Il throughput aggregato continua a salire con la dimensione del batch solo finché il lavoro resta limitato dalla memoria. Una volta che il batch satura il calcolo o la cache chiave-valore esaurisce la memoria del dispositivo, il tempo di completamento cresce più rapidamente del batch e la latenza per richiesta si degrada. L'obiettivo pratico è il batch più grande che mantiene accettabile la latenza per richiesta mentre la memoria è ancora sufficiente, trovato misurando il tempo di completamento a diverse dimensioni di batch. I server reali usano anche il batching continuo, in cui le richieste si uniscono ed escono a ogni passo anziché come gruppo fisso, il che alza ulteriormente il throughput sostenuto. Per il tetto a singolo flusso che fissa , si veda il Calcolatore del throughput di inferenza; per la capacità a livello di flotta su molte repliche, si veda l'Calcolatore dei token al secondo effettivi.
Domande frequenti (FAQ)
Perché il throughput aggregato è molto più alto del throughput per richiesta?
Il throughput aggregato conteggia ogni token che il server emette per tutte le richieste del batch, mentre il throughput per richiesta è ciò che sperimenta un singolo utente. Il batching legge ogni peso del modello una volta e lo riutilizza per l'intero gruppo, perciò i token totali serviti salgono all'incirca in proporzione alla dimensione del batch.
La singola richiesta, però, deve comunque attendere che il batch finisca, perciò la velocità percepita non migliora — e può persino calare leggermente al crescere del batch. Questo è il compromesso centrale del servizio in batch: throughput per l'operatore contro latenza per l'utente.
Un batch più grande è sempre meglio?
Solo fino a un certo punto. Il throughput aggregato cresce con la dimensione del batch finché il lavoro resta limitato dalla memoria, ma una volta che il batch satura il calcolo o la cache chiave-valore esaurisce la memoria, il tempo di completamento cresce più rapidamente del batch e la latenza per richiesta peggiora.
Il punto ottimale pratico è il batch più grande che mantiene la latenza per richiesta entro l'obiettivo mentre la memoria è ancora sufficiente, che si trova misurando il tempo di completamento a diverse dimensioni di batch.
Come cambia tutto questo il batching continuo?
Questo calcolatore modella un batch fisso che inizia e finisce insieme. I server moderni usano il batching continuo (in-flight), in cui nuove richieste si uniscono e quelle completate escono a ogni passo, mantenendo pieno l'acceleratore anche quando le lunghezze delle sequenze differiscono.
Ciò alza il throughput aggregato sostenuto al di sopra della stima a batch fisso, ma vale lo stesso compromesso: i token totali al secondo migliorano mentre ogni singola richiesta resta limitata dalla velocità di decodifica.
Avvertenze legali
Le stime presuppongono che tutte le richieste del batch generino lo stesso numero di token e inizino insieme. I carichi di lavoro reali mescolano lunghezze di sequenza e usano il batching continuo, perciò il throughput aggregato misurato sarà diverso. Eseguire benchmark a diverse dimensioni di batch sull'hardware di destinazione prima di dimensionare la capacità.
Da provare dopo
Calcolatore del throughput di inferenza
Stima il limite imposto dalla larghezza di banda della memoria alla velocità di decodifica di un LLM a partire dalla dimensione del modello, dalla precisione dei pesi e dalla larghezza di banda della memoria dell'acceleratore — il tetto in token al secondo per un singolo flusso.