top of page

Il trasferimento KV push-based di vLLM punta ai tempi di attesa tra prefill e decode

2 ore fa
Tempo di lettura: 13 min

Il trasferimento KV push-based di vLLM anticipa il lavoro di passaggio della cache e AWS segnala una latenza del primo token fino a 3 volte migliore rispetto al proprio benchmark pull-based. Il tempo al primo token, o TTFT, misura quanto a lungo una richiesta attende prima che la generazione inizi a produrre output. La modifica riguarda il coordinamento tra l'elaborazione di un prompt e la generazione della relativa risposta.

Nel suo post del 19 ottobre, AWS segnala anche un tempo per token di output, o TPOT, fino al 30% migliore, che misura il tempo di generazione per ciascun token successivo. I risultati riguardano Qwen3-32B su istanze Amazon EC2 P5en che utilizzano AWS Elastic Fabric Adapter, l'interconnessione server a bassa latenza dell'azienda. Descrivono un confronto specifico, anziché una promessa di accelerazione generale per ogni deployment di vLLM.

Il confronto centrale è tra coordinamento push e pull. Il push prepara prima il motore ricevente; il pull conserva una decisione più tardiva su dove debba essere eseguita la generazione. Per gli operatori che separano l'elaborazione dei prompt dalla generazione, la notizia solleva una domanda concreta: quanta flessibilità di routing sono disposti a scambiare per un passaggio più breve?

Il trasferimento KV push-based di vLLM cambia il momento in cui inizia il passaggio

La modifica anticipa la preparazione rispetto al passaggio, riducendo il lavoro che deve svolgersi dopo il termine dell'elaborazione del prompt.

Il prefill, la fase di inferenza che elabora i token di input, produce una cache chiave-valore contenente lo stato intermedio dell'attenzione necessario per la generazione successiva. Il decode, la fase che genera i token di output, consuma tale stato. L'inferenza disaggregata colloca queste fasi su istanze motore separate, creando un confine di trasferimento tra di esse.

I benchmark di trasferimento KV di AWS confrontano push e pull usando un'istanza di prefill e una di decode. Il test disabilita il caching dei prefissi, che altrimenti consente alle richieste di riutilizzare stato calcolato in precedenza. Utilizza 128 token di output, input da 1.000 a 16.000 token e tassi di richiesta da una a otto query al secondo.

Nella condizione più impegnativa, AWS riporta circa 1.744 millisecondi di TTFT per il pull, rispetto a circa 540 millisecondi per il push. Il confronto TPOT riportato raggiunge circa 10,4 millisecondi per il pull e circa 7 millisecondi per il push. Con carico leggero e input più brevi, le modalità offrono prestazioni simili.

Questi limiti contano più del moltiplicatore in evidenza. Il risultato individua un carico di lavoro in cui il coordinamento del passaggio diventa significativo. Non stabilisce che servizi poco utilizzati, modelli diversi o deployment più grandi ricevano lo stesso beneficio.

L'implicazione pratica è un cambiamento in ciò che gli operatori dovrebbero indagare quando la reattività peggiora. Una prima risposta lenta non significa automaticamente che il calcolo del prompt necessiti di maggiore capacità di accelerazione. Il tempo impiegato per organizzare la fase successiva merita un esame separato.

Questa distinzione cambia anche il modo in cui i team di prodotto interpretano un incidente di prestazioni. Se gli utenti segnalano risposte ritardate, i team devono distinguere l'attesa per il calcolo dall'attesa per il coordinamento. L'aggiunta di risorse affronta queste cause in modo diverso e un grafico di latenza aggregata può nascondere la loro separazione.

Il benchmark supporta quindi una conclusione circoscritta: la sequenza che circonda il trasferimento della cache può influire materialmente sull'esperienza misurata. Il passo successivo appropriato è identificare se tale sequenza occupi una quota significativa del ritardo di un servizio specifico.

Sarebbe eccessivo definire questi dati una sostituzione universale del pull. Una lettura più utile è che vLLM espone ora un'ulteriore scelta di pianificazione. Gli operatori possono valutare tale scelta rispetto al carico di lavoro e al comportamento di routing di cui hanno effettivamente bisogno.

La tempistica è rilevante perché si tratta di un miglioramento del serving a livello di implementazione, anziché di un annuncio di modello. I team possono esaminarlo senza presumere un cambiamento nella qualità del modello. Il potenziale vantaggio risiede nel modo in cui una richiesta esistente attraversa l'infrastruttura.

I team di serving affrontano un problema di coordinamento oltre a quello del calcolo

La pressione ricade sugli operatori i cui obiettivi di latenza dipendono dalla separazione tra elaborazione del prompt e generazione dei token.

La documentazione di vLLM sul prefilling disaggregato presenta la separazione come un modo per ottimizzare in modo indipendente la latenza del primo token e quella tra token. Individua inoltre interferenze quando l'elaborazione del prompt entra in un motore già impegnato a generare risposte. La documentazione etichetta la funzionalità come sperimentale e mette esplicitamente in guardia dal considerare la disaggregazione stessa un miglioramento del throughput.

Si tratta di un importante contrappeso alle ampie affermazioni architetturali. Separare il lavoro crea opportunità di ottimizzazione indipendente, ma introduce anche responsabilità. Il sistema deve coordinare lo stato, selezionare le destinazioni e mantenere l'avanzamento delle richieste oltre un confine aggiuntivo.

Per un ipotetico assistente per documenti, queste responsabilità corrispondono a comportamenti utente riconoscibili. Un utente invia un documento lungo e attende che inizi una risposta. Nel frattempo, altri utenti si aspettano che le loro risposte già avviate continuino ad arrivare con regolarità.

Sono aspettative correlate, ma non intercambiabili. Un servizio può avviare le risposte prontamente e poi fornirle in modo irregolare. Può anche generare senza problemi una volta avviato, facendo però attendere troppo gli utenti prima che appaia qualsiasi cosa.

La proposta push è rilevante perché gli operatori devono valutare entrambe le esperienze. Una decisione sul connettore dovrebbe essere giudicata rispetto all'avvio della risposta e alla generazione continua, anziché su una sola media favorevole. Altrimenti, un team rischia di migliorare la metrica che osserva trascurando l'esperienza che gli utenti notano.

Ciò spinge i responsabili dell'infrastruttura a migliorare il proprio modello di misurazione. Hanno bisogno di visibilità sulle fasi della richiesta, insieme alla sua durata complessiva. Senza questa separazione, l'overhead di coordinamento può essere scambiato per tempo di esecuzione del modello.

Crea inoltre pressione sugli acquirenti che valutano l'inferenza ospitata. Un rapporto di accelerazione dichiarato necessita di una baseline, di un carico di lavoro e di un confine operativo. Gli acquirenti dovrebbero chiedere cosa sia cambiato alla base del risultato prima di usarlo per confrontare servizi.

La distinzione è particolarmente rilevante quando un'applicazione combina richieste lunghe e brevi. Una lunghezza media dei prompt nasconde le richieste che creano le maggiori esigenze di pianificazione. Una valutazione convincente dovrebbe preservare questa variabilità invece di sostituirla con un input uniforme.

Nulla di tutto questo stabilisce che la disaggregazione sia necessaria per ogni applicazione. La decisione inizia comunque dai vincoli osservati di un servizio. Se l'architettura attuale soddisfa i propri obiettivi di risposta, l'aggiunta di un confine di trasferimento richiede una giustificazione propria.

Per i team che già operano con fasi separate, tuttavia, il connettore diventa parte della pianificazione delle prestazioni. Il suo comportamento influenza ciò che il router deve sapere e quando le risorse diventano impegnate. Questo rende la modifica rilevante oltre l'ingegnere che mantiene il codice di trasferimento.

Di conseguenza, i team di prodotto e piattaforma necessitano di una descrizione condivisa del successo. Una descrizione utile collega l'attesa visibile agli utenti con le misurazioni dell'infrastruttura e le condizioni di deployment. Evita di trattare il benchmark di un connettore come una previsione completa per l'applicazione.

I team che mantengono queste valutazioni possono organizzare i risultati in una base di conoscenza ricercabile. Conservare le configurazioni accanto alle conclusioni aiuta i revisori successivi a comprendere perché un risultato precedente fosse o non fosse applicabile.

La configurazione anticipata della destinazione dà al push il suo vantaggio rispetto al pull

Il push modifica l'ordine delle dipendenze attorno al trasferimento, anziché eliminare la necessità di spostare lo stato memorizzato nella cache.

Il design del connettore push documenta NixlPushConnector, un'alternativa che utilizza NVIDIA Inference Xfer Library, o NIXL, per coordinare i trasferimenti. Il motore di decode ricevente alloca la memoria di destinazione e comunica la relativa posizione. Il motore di prefill scrive quindi lo stato completato in quella destinazione predisposta.

La registrazione e lo stato del prompt completato possono arrivare in qualsiasi ordine. Il connettore li associa prima di emettere la scrittura. Un thread writer in background gestisce le operazioni specifiche del push, mentre il conteggio del completamento comunica al motore quando lo stato ricevuto è pronto.

Questa è la spiegazione essenziale del trasferimento push di vLLM: predisporre la destinazione mentre continua il calcolo utile, quindi completare il passaggio quando esistono i suoi prerequisiti. Questa sequenza riduce la necessità di avviare tutto il coordinamento dopo il termine del prefill.

La distinzione è più semplice da valutare come un problema di dipendenze. Se la preparazione non può iniziare finché il calcolo non termina, la richiesta attende entrambi in sequenza. Se la preparazione si sovrappone al calcolo, parte dell'attesa scompare dal percorso che determina quando può iniziare la generazione.

La sovrapposizione mantiene comunque delle condizioni. Il ricevente deve esistere, la sua destinazione deve essere idonea e il trasferimento deve completarsi correttamente. Preparare in anticipo cambia quando queste responsabilità si verificano; non le rende facoltative.

Ecco perché descrivere semplicemente il push come un'operazione di rete più veloce non coglie il meccanismo. La questione architetturale riguarda quale lavoro blocchi l'avanzamento. Un trasferimento può utilizzare hardware capace mentre il software circostante continua a far attendere inutilmente una richiesta.

L'esecuzione in background introduce un'altra distinzione utile. Un lavoro che non blocca più un loop del motore continua a consumare risorse da qualche parte. Gli operatori dovrebbero quindi chiedersi dove sia stato spostato il lavoro e se quella posizione rimanga sana sotto domanda sostenuta.

Lo stesso ragionamento vale per l'interpretazione del TPOT. Una modifica relativa al trasferimento può influire sulla generazione in corso se il coordinamento compete con il percorso di esecuzione che serve le richieste esistenti. Valutare solo la richiesta in arrivo non coglierebbe questa interazione.

Per il push rispetto al pull di vLLM, il confronto decisivo è quindi più ampio della sola scrittura rispetto alla lettura. Include selezione della destinazione, tempistica della preparazione, titolarità dell'esecuzione e segnalazione della disponibilità. Questi dettagli spiegano perché modificare un connettore possa alterare il comportamento dell'applicazione senza cambiare il modello.

L'implementazione illustra inoltre perché la correttezza debba accompagnare le prestazioni in ogni decisione di deployment. Ricevere una parte dello stato è insufficiente se la generazione richiede lo stato completo previsto. Un passaggio riuscito necessita di una condizione di disponibilità inequivocabile, soprattutto quando il lavoro coinvolge più partecipanti.

NVIDIA offre un utile riferimento di settore tramite l'architettura di serving disaggregato di Dynamo. La sua documentazione descrive pool separati di prefill e decode, orchestrazione del router e considerazioni sui trasferimenti consapevoli della topologia. Ciò stabilisce un problema di coordinamento comparabile, anziché dimostrare una classifica delle prestazioni rispetto al connettore vLLM.

Dynamo è anche un contesto di integrazione per motori di serving, quindi presentare la situazione come una semplice gara tra aziende sarebbe fuorviante. La competizione rilevante è tra modi di organizzare le richieste. Ogni approccio deve conciliare collocamento, movimento dello stato e prontezza della generazione.

Quel confronto mette in prospettiva il risultato AWS. Il contributo riguarda un punto specifico in un flusso di serving più ampio. Il suo valore dipende dal fatto che il miglioramento di quel punto faccia avanzare gli effettivi obiettivi di risposta del servizio.

La selezione anticipata del decoder scambia flessibilità con sovrapposizione

La ragione più forte per mantenere il pull è il valore di poter scegliere una destinazione più tardi.

La sequenza push richiede un ricevitore preparato prima del passaggio. Questo impegno consente la sovrapposizione, ma crea anche il compromesso centrale dell’articolo. Un operatore non può valutare la riduzione del ritardo di coordinamento indipendentemente dal momento in cui viene selezionata la destinazione.

Si consideri un servizio ipotetico in cui le richieste arrivano in modo irregolare a un pool di decoder. Selezionare presto una destinazione riserva un percorso prima del completamento dell’elaborazione del prompt. Selezionarla più tardi offre alla decisione di routing informazioni più aggiornate sul sistema.

Nessuna delle due scelte è automaticamente superiore. Se le condizioni restano prevedibili durante il prefill, la selezione anticipata può essere uno scambio ragionevole. Se le condizioni cambiano in modo sostanziale, una selezione successiva può avere un valore operativo che un benchmark incentrato sul trasferimento non rileva.

La domanda rilevante è con quale frequenza questa flessibilità cambi un risultato. Un operatore dovrebbe esaminare se la selezione ritardata riduce in modo significativo le code, evita worker sovraccarichi o migliora la coerenza del servizio. Senza queste osservazioni, la flessibilità resta un vantaggio astratto anziché un requisito misurato.

Questo è anche il motivo per cui un deployment a coppie non può risolvere ogni questione di routing. Fornisce un contesto controllato per esaminare un handoff. Offre meno evidenze sulle scelte tra molte destinazioni, soprattutto quando tali destinazioni hanno carichi di lavoro diversi.

La questione del riutilizzo della cache aggiunge un altro limite. In un post del 12 ottobre, vLLM descrive il trasferimento KV bidirezionale, che restituisce lo stato riutilizzabile dal decode al prefill nei turni successivi della conversazione. Questo lavoro affronta il calcolo ripetuto man mano che cresce la cronologia della conversazione, utilizzando letture NIXL in entrambe le direzioni.

Si tratta di un obiettivo di ottimizzazione diverso. Un handoff in avanti più breve e una minore elaborazione ripetuta dei prompt possono entrambi migliorare la reattività. Non si deve presumere che i loro vantaggi si combinino automaticamente, né confrontarli come se misurassero un lavoro identico.

Un assistente conversazionale illustra la distinzione. La sua prima richiesta e una richiesta successiva che contiene la cronologia accumulata possono imporre esigenze diverse all’infrastruttura. Migliorare una transizione non dimostra la migliore politica per l’intera conversazione.

Per il push rispetto al pull in vLLM, ciò significa che le valutazioni dovrebbero includere il comportamento delle sessioni quando il prodotto ne dipende. Un flusso uniforme di prompt non correlati risponde a una domanda più circoscritta. Non può sostituire il test delle interazioni ripetute dell’applicazione.

Il benchmark con cache disabilitata merita lo stesso trattamento attento. Rimuovere il riutilizzo aiuta a isolare il comportamento del trasferimento, ma il riutilizzo in produzione cambia la frequenza con cui quel comportamento conta. Un’applicazione che evita spesso un trasferimento completo presenta un diverso profilo di opportunità.

Questo non invalida un confronto controllato. Ne definisce lo scopo. Gli operatori dovrebbero preservare il risultato isolato, aggiungendo al contempo una valutazione del carico di lavoro che ripristini le effettive decisioni di caching e routing dell’applicazione.

Esiste inoltre un limite probatorio attorno ai guadagni riportati. I numeri provengono dalla fonte tecnica partecipante, anziché da una replica indipendente esaminata qui. Meritano approfondimento, ma non supportano affermazioni di superiorità universale o risparmi garantiti sull’intera flotta.

La conclusione scettica è quindi specifica: la preparazione anticipata ha un meccanismo comprensibile, mentre il suo valore complessivo resta dipendente dal deployment. Una solida decisione di adozione deve misurare il vantaggio di coordinamento insieme alla flessibilità che sacrifica.

Anche la baseline pull sta cambiando

Parte del vantaggio riportato riguarda dove viene eseguita la preparazione del trasferimento, una scelta progettuale che anche il pull può rivedere.

Una proposta reader-thread pubblica punta all’invio pull di NIXL. Il suo scopo dichiarato è spostare l’invio delle letture a un thread in background dedicato, riducendo il lavoro sul thread di esecuzione forward del motore. La proposta mantiene il polling del completamento sul thread forward.

La pagina esaminata per questo articolo indica la proposta come aperta. Ciò stabilisce uno sviluppo in corso, non un risultato prestazionale già ottenuto. Non fornisce alcuna base per affermare che una futura implementazione pull eguagli il push o colmi una determinata percentuale del divario.

La sua rilevanza è concettuale. Direzione del trasferimento e collocazione dell’esecuzione sono scelte separate. Il push può beneficiare di una preparazione anticipata della destinazione, mentre l’esecuzione in background affronta un’altra fonte di interferenza.

Questa distinzione modifica l’interpretazione di un vantaggio nel benchmark. Un confronto cattura le implementazioni testate in quel momento. Non assegna in modo permanente ogni vantaggio osservato all’etichetta architetturale associata al vincitore.

Per acquirenti e operatori, la conseguenza pratica è la consapevolezza della versione. “Push” e “pull” sono descrizioni insufficienti di un ambiente di valutazione. L’implementazione e la configurazione rilevanti determinano dove vengano eseguiti i passaggi di preparazione.

Questo rende la cronologia della manutenzione parte dell’evidenza prestazionale. Un aggiornamento successivo del connettore può modificare la baseline senza cambiare il modello o l’hardware. I team dovrebbero riesaminare conclusioni precedenti quando il comportamento di esecuzione cambia in modo sostanziale.

Il lavoro sul reader-thread offre anche un test utile della spiegazione sottostante. Se l’invio in background migliora il pull in condizioni comparabili, sosterrebbe l’importanza della collocazione dell’esecuzione. Non eliminerebbe, da solo, il vantaggio distinto della sovrapposizione nella configurazione della destinazione.

Al contrario, anche un miglioramento limitato richiederebbe interpretazione. Il ritardo rimanente potrebbe coinvolgere altre dipendenze, oppure il carico di lavoro potrebbe esporre vincoli diversi. Un risultato deludente non dimostrerebbe automaticamente che il progetto della proposta non abbia valore altrove.

Qui la rendicontazione delle prestazioni richiede cautela. Un rapporto utile separa ciò che è stato misurato, il meccanismo che lo spiega e ciò che resta ipotetico. Combinare queste categorie produce titoli sicuri di sé, ma indicazioni operative deboli.

Per il trasferimento KV basato su push di vLLM, la lezione duratura è esaminare il lavoro che circonda un handoff. I nomi dei connettori riassumono il comportamento, ma non spiegano ogni ritardo. Resta necessario profilare il percorso di esecuzione effettivo.

L’evoluzione della baseline scoraggia anche una decisione di standardizzazione prematura. I team possono adottare una configurazione che soddisfa le esigenze attuali, mantenendo al contempo le evidenze necessarie per riesaminarla. L’obiettivo è un servizio affidabile, non un’adesione permanente a una direzione di trasferimento.

Monitorare le repliche, i progressi del pull-thread e il comportamento del routing

La prossima evidenza utile mostrerà se i guadagni di coordinamento isolati resistono a scelte di deployment realistiche.

Nei prossimi uno-tre mesi, il primo segnale da osservare è una replica indipendente su carichi di lavoro simili a quelli delle applicazioni. I risultati più informativi manterrebbero lo stesso confronto variando al contempo distribuzioni dei prompt, comportamento della cache e dimensione del deployment. Miglioramenti coerenti rafforzerebbero la tesi per un’adozione più ampia.

La replica dovrebbe inoltre distinguere l’avvio della risposta dalla generazione in corso. Un servizio deve sapere se diventa più reattivo durante tutta un’interazione. Risultati favorevoli confinati a un punto di benchmark insolitamente impegnativo sosterrebbero una decisione di deployment più circoscritta.

Il secondo segnale è il progresso dell’invio in background per il pull. Un’implementazione esaminata e rilasciata, seguita da un benchmark comparabile, chiarirebbe quanto contribuisca la collocazione dell’esecuzione. Un divario minore rafforzerebbe la spiegazione del meccanismo, riducendo al contempo gli argomenti per considerare il push categoricamente superiore.

Questo segnale richiede un effettivo risultato misurato. Una modifica sottoposta a merge stabilirebbe soltanto la disponibilità, non la parità delle prestazioni. Gli operatori dovrebbero resistere alla tentazione di trasformare l’attività di sviluppo in un’affermazione numerica prima che sia stato testato il carico di lavoro pertinente.

Il terzo segnale è il comportamento del routing oltre una coppia fissa prefill-decode. I risultati dovrebbero mostrare cosa accade quando la selezione anticipata della destinazione incontra una domanda dei decoder in evoluzione. Una latenza stabile percepita dall’utente rafforzerebbe la tesi che la sovrapposizione resti preziosa sotto una pressione di collocamento realistica.

Se invece gli impegni anticipati producono code più lunghe altrove, il perimetro di deployment preferibile si restringerebbe. Il push potrebbe comunque adattarsi a carichi di lavoro prevedibili, mentre la selezione tardiva resterebbe preziosa per altri. Ciò perfezionerebbe il risultato anziché negarlo.

Questi segnali mantengono la discussione legata all’evento originale. La questione è se anticipare la preparazione migliori un servizio completo, nelle proprie condizioni operative. Affermazioni più ampie sull’economia dell’inferenza richiedono evidenze più ampie di quelle fornite da questo confronto tra connettori.

Per i team che devono decidere cosa fare ora, il punto di partenza è una traccia di richieste rappresentativa e un obiettivo di risposta chiaramente definito. Mantenete modello, policy di caching, comportamento di routing e versione dell’implementazione quando confrontate i risultati dei connettori. Registrate dove si verifica l’attesa, quindi esaminate se la preparazione anticipata riduce quel ritardo senza creare una coda più grande altrove. Mantenete separati il benchmark controllato e la valutazione modellata sulla produzione, così che ciascuno risponda a una domanda chiara. Leggete le condizioni di progettazione e benchmark prima di tradurre un rapporto riportato in una decisione di capacità. Per il trasferimento KV basato su push di vLLM, l’azione utile è una valutazione delimitata dell’handoff che la vostra applicazione esegue davvero. La preparazione anticipata della destinazione migliora l’esperienza ricevuta dagli utenti sotto il carico che il vostro servizio deve gestire?

 
 

Inizia gratis

Un assistente IA local-first con gestione della conoscenza personale

Per una migliore esperienza con l’IA,

al momento remio supporta solo Windows 10+ (x64) e M-Chip Macs.

Il tuo partner AI al lavoro
Fai di più con remio

Pianifica. Crea. Consegna.
Tutto in un unico posto.

bottom of page