top of page

Le transfert KV en mode push de vLLM cible l’attente entre prefill et decode

il y a 2 heures
14 min de lecture

Le transfert KV en mode push de vLLM avance le travail de transfert de cache, AWS faisant état d’une latence jusqu’au premier token jusqu’à trois fois meilleure que dans son benchmark fondé sur le pull. Le délai jusqu’au premier token, ou TTFT, mesure le temps pendant lequel une requête attend avant que la génération ne commence à produire une sortie. Cette évolution vise la coordination entre le traitement d’un prompt et la génération de sa réponse.

Dans son billet du 19 octobre, AWS fait également état d’un temps par token de sortie, ou TPOT, jusqu’à 30 % meilleur, une mesure du temps de génération pour chaque token suivant. Ces résultats concernent Qwen3-32B sur des instances Amazon EC2 P5en utilisant AWS Elastic Fabric Adapter, l’interconnexion serveur à faible latence de l’entreprise. Ils décrivent une comparaison précise, et non une promesse d’accélération générale pour chaque déploiement vLLM.

L’enjeu central oppose la coordination par push et par pull. Le push prépare plus tôt le moteur récepteur ; le pull préserve une décision plus tardive sur l’emplacement d’exécution de la génération. Pour les opérateurs qui séparent le traitement des prompts de la génération, cette nouveauté soulève une question concrète : quelle part de flexibilité de routage échanger contre un transfert plus court ?

Le transfert KV en mode push de vLLM modifie le moment où commence le transfert

Cette évolution avance la préparation avant le transfert, réduisant le travail qui doit intervenir une fois le traitement du prompt terminé.

Le prefill, l’étape d’inférence qui traite les tokens d’entrée, produit un cache clé-valeur contenant l’état intermédiaire d’attention nécessaire à la génération suivante. Le decode, l’étape qui génère les tokens de sortie, consomme cet état. L’inférence désagrégée place ces étapes sur des instances de moteur distinctes, créant une frontière de transfert entre elles.

Les benchmarks de transfert KV d’AWS comparent le push et le pull avec une instance de prefill et une instance de decode. Le test désactive le cache de préfixes, qui permettrait autrement aux requêtes de réutiliser un état déjà calculé. Il utilise 128 tokens de sortie, des longueurs d’entrée allant de 1 000 à 16 000 tokens, et des cadences de requêtes allant de une à huit requêtes par seconde.

Dans les conditions les plus exigeantes, AWS rapporte environ 1 744 millisecondes de TTFT pour le pull, contre environ 540 millisecondes pour le push. Sa comparaison TPOT rapportée atteint environ 10,4 millisecondes pour le pull et environ 7 millisecondes pour le push. Sous faible charge et avec des entrées plus courtes, les deux modes affichent des performances comparables.

Ces limites importent davantage que le multiplicateur mis en avant. Le résultat identifie une charge de travail où la coordination du transfert devient déterminante. Il ne démontre pas que les services peu utilisés, d’autres modèles ou des déploiements plus vastes obtiennent le même bénéfice.

L’implication pratique est une évolution de ce que les opérateurs devraient examiner lorsque la réactivité se dégrade. Une première réponse lente ne signifie pas automatiquement que le calcul du prompt nécessite davantage de capacité d’accélération. Le temps passé à organiser l’étape suivante mérite un examen distinct.

Cette distinction modifie aussi la façon dont les équipes produit interprètent un incident de performance. Si les utilisateurs signalent des réponses tardives, les équipes doivent distinguer l’attente liée au calcul de celle liée à la coordination. L’ajout de ressources répond différemment à ces causes, et un graphique de latence agrégée peut masquer leur séparation.

Le benchmark étaye donc une conclusion ciblée : la séquence entourant le transfert de cache peut affecter sensiblement l’expérience mesurée. L’étape suivante appropriée consiste à déterminer si cette séquence occupe une part significative du délai d’un service donné.

Il serait excessif de présenter cela comme un remplacement universel du pull. Une interprétation plus utile est que vLLM expose désormais un choix supplémentaire d’ordonnancement. Les opérateurs peuvent évaluer ce choix au regard de la charge de travail et du comportement de routage dont ils ont réellement besoin.

Le moment est pertinent, car il s’agit d’une amélioration du service au niveau de l’implémentation plutôt que d’une annonce de modèle. Les équipes peuvent l’étudier sans supposer un changement de la qualité du modèle. Le bénéfice potentiel réside dans la façon dont une requête existante traverse l’infrastructure.

Les équipes de serving font face à un problème de coordination en plus d’un problème de calcul

La pression pèse sur les opérateurs dont les objectifs de latence reposent sur la séparation du traitement des prompts et de la génération de tokens.

La documentation de vLLM sur le prefilling désagrégé présente cette séparation comme un moyen d’ajuster indépendamment la latence jusqu’au premier token et celle entre les tokens. Elle identifie aussi les interférences lorsque le traitement d’un prompt entre dans un moteur qui génère déjà des réponses. La documentation qualifie la fonctionnalité d’expérimentale et déconseille explicitement de considérer la désagrégation elle-même comme une amélioration du débit.

C’est un contrepoids important aux affirmations architecturales générales. Séparer le travail crée des possibilités de réglage indépendant, mais introduit aussi des responsabilités. Le système doit coordonner l’état, sélectionner des destinations et faire progresser les requêtes à travers une frontière supplémentaire.

Pour un assistant documentaire hypothétique, ces responsabilités correspondent à un comportement utilisateur reconnaissable. Un utilisateur soumet un document volumineux et attend qu’une réponse commence. Pendant ce temps, d’autres utilisateurs s’attendent à ce que leurs réponses déjà en cours continuent d’arriver de façon régulière.

Ces attentes sont liées, mais elles ne sont pas interchangeables. Un service peut démarrer les réponses rapidement, puis les délivrer de façon irrégulière. Il peut aussi générer de manière fluide une fois lancé tout en faisant attendre les utilisateurs trop longtemps avant que quoi que ce soit n’apparaisse.

La proposition du push importe parce que les opérateurs doivent évaluer ces deux expériences. Une décision de connecteur doit être jugée à l’aune du démarrage des réponses et de la génération continue, plutôt que selon une seule moyenne favorable. Sinon, une équipe risque d’améliorer la métrique qu’elle surveille tout en négligeant l’expérience que les utilisateurs remarquent.

Cela pousse les responsables d’infrastructure à améliorer leur modèle de mesure. Ils ont besoin de visibilité sur les étapes de la requête, en plus de sa durée totale. Sans cette séparation, la surcharge de coordination peut être confondue avec le temps d’exécution du modèle.

Cela exerce également une pression sur les acheteurs évaluant l’inférence hébergée. Un ratio d’accélération annoncé nécessite une référence, une charge de travail et une limite opérationnelle. Les acheteurs devraient demander ce qui a changé sous-jacent au résultat avant de l’utiliser pour comparer des services.

La distinction est particulièrement pertinente lorsqu’une application mélange des requêtes longues et courtes. Une longueur moyenne de prompt masque les requêtes qui créent les plus fortes exigences d’ordonnancement. Une évaluation convaincante devrait préserver cette variation au lieu de la remplacer par une entrée uniforme.

Rien de cela n’établit que la désagrégation est nécessaire pour chaque application. La décision commence toujours par les contraintes observées du service. Si l’architecture actuelle atteint ses objectifs de réponse, l’ajout d’une frontière de transfert nécessite sa propre justification.

Pour les équipes qui exploitent déjà des étapes distinctes, cependant, le connecteur devient un élément de la planification des performances. Son comportement affecte ce que le routeur doit savoir et le moment où les ressources sont engagées. Cela rend ce changement pertinent au-delà de l’ingénieur qui maintient le code de transfert.

Les équipes produit et plateforme ont donc besoin d’une description commune de la réussite. Une description utile relie l’attente visible par l’utilisateur aux mesures d’infrastructure et aux conditions de déploiement. Elle évite de traiter le benchmark d’un connecteur comme une prévision complète pour l’application.

Les équipes qui assurent le suivi de ces évaluations peuvent organiser leurs conclusions dans une base de connaissances consultable. Conserver les configurations à côté des conclusions aide les évaluateurs ultérieurs à comprendre pourquoi un résultat antérieur s’appliquait ou non.

La préparation précoce de la destination donne au push son avantage sur le pull

Le push modifie l’ordre des dépendances autour du transfert, plutôt que d’éliminer la nécessité de déplacer l’état mis en cache.

La conception du connecteur push documente NixlPushConnector, une alternative utilisant NVIDIA Inference Xfer Library, ou NIXL, pour coordonner les transferts. Le moteur de decode récepteur alloue la mémoire de destination et communique son emplacement. Le moteur de prefill écrit ensuite l’état terminé dans cette destination préparée.

L’enregistrement et l’état de prompt terminé peuvent arriver dans n’importe quel ordre. Le connecteur les associe avant d’effectuer l’écriture. Un thread d’écriture en arrière-plan gère les opérations propres au push, tandis que le suivi des achèvements indique au moteur quand l’état reçu est prêt.

Voici l’explication essentielle du transfert push de vLLM : préparer la destination pendant que des calculs utiles se poursuivent, puis achever le transfert lorsque ses prérequis existent. Cet enchaînement réduit la nécessité d’entamer toute la coordination une fois le prefill terminé.

La distinction s’évalue plus facilement comme un problème de dépendances. Si la préparation ne peut commencer qu’après la fin du calcul, la requête attend les deux opérations en séquence. Si la préparation chevauche le calcul, une partie de l’attente disparaît du chemin qui détermine quand la génération peut commencer.

Le chevauchement reste soumis à des conditions. Le récepteur doit exister, sa destination doit convenir et le transfert doit se terminer correctement. Préparer tôt modifie le moment où ces responsabilités interviennent ; cela ne les rend pas facultatives.

C’est pourquoi décrire simplement le push comme une opération réseau plus rapide manque le mécanisme. La question architecturale porte sur le travail qui bloque la progression. Un transfert peut utiliser un matériel performant tout en laissant le logiciel environnant faire attendre inutilement une requête.

L’exécution en arrière-plan introduit une autre distinction utile. Un travail qui ne bloque plus une boucle de moteur consomme encore des ressources quelque part. Les opérateurs devraient donc demander où le travail a été déplacé et si cet emplacement reste sain sous une demande soutenue.

Le même raisonnement s’applique à l’interprétation du TPOT. Une évolution liée au transfert peut affecter la génération en cours si la coordination entre en concurrence avec le chemin d’exécution servant les requêtes existantes. Évaluer uniquement la requête entrante manquerait cette interaction.

Pour le push par rapport au pull dans vLLM, la comparaison décisive est donc plus large que l’écriture contre la lecture. Elle comprend la sélection de destination, le moment de la préparation, la responsabilité d’exécution et la signalisation de disponibilité. Ces détails expliquent pourquoi modifier un connecteur peut changer le comportement d’une application sans modifier le modèle.

L’implémentation illustre aussi pourquoi la correction doit accompagner la performance dans toute décision de déploiement. Recevoir une partie de l’état est insuffisant si la génération nécessite l’état complet attendu. Un transfert réussi a besoin d’une condition de disponibilité non ambiguë, surtout lorsque le travail couvre plusieurs participants.

NVIDIA fournit une référence industrielle utile avec l’architecture de serving désagrégé de Dynamo. Sa documentation décrit des pools de prefill et de decode distincts, l’orchestration du routeur et des considérations de transfert tenant compte de la topologie. Cela établit un problème de coordination comparable, plutôt qu’une preuve de classement des performances face au connecteur vLLM.

Dynamo est également un contexte d’intégration pour les moteurs de serving ; présenter cela comme une simple course entre entreprises serait donc trompeur. La concurrence pertinente oppose des façons d’organiser les requêtes. Chaque approche doit concilier le placement, le mouvement d’état et la disponibilité pour la génération.

Cette comparaison remet le résultat d’AWS en perspective. La contribution porte sur un point spécifique d’un flux de serving plus large. Sa valeur dépend de la capacité de l’amélioration de ce point à faire progresser les objectifs réels de réponse du service.

Une sélection plus précoce du décodeur troque de la flexibilité contre du chevauchement

La raison la plus forte de conserver le pull est la possibilité de choisir une destination plus tard.

La séquence push exige qu’un récepteur soit préparé avant le transfert. Cet engagement permet le chevauchement, mais crée aussi le compromis central de l’article. Un opérateur ne peut pas évaluer la réduction du délai de coordination indépendamment du moment choisi pour sélectionner la destination.

Prenons un service hypothétique où les requêtes arrivent de manière inégale dans un pool de décodeurs. Sélectionner une destination tôt réserve un chemin avant la fin du traitement du prompt. La sélectionner plus tard donne à la décision de routage des informations plus récentes sur le système.

Aucun de ces choix n’est automatiquement supérieur. Si les conditions restent prévisibles pendant le prefill, une sélection précoce peut constituer un échange raisonnable. Si les conditions évoluent fortement, une sélection tardive peut avoir une valeur opérationnelle qu’un benchmark centré sur le transfert ne capture pas.

La question pertinente est de savoir à quelle fréquence cette flexibilité modifie un résultat. Un opérateur doit examiner si une sélection différée réduit sensiblement les files d’attente, évite des workers surchargés ou améliore la régularité du service. Sans ces observations, la flexibilité reste un avantage abstrait plutôt qu’une exigence mesurée.

C’est également pourquoi un déploiement par paire ne peut pas trancher toutes les questions de routage. Il fournit un cadre contrôlé pour examiner un transfert. Il apporte moins d’éléments sur les choix entre de nombreuses destinations, surtout lorsque ces destinations ont des charges de travail différentes.

La question de la réutilisation du cache ajoute une autre limite. Dans un billet du 12 octobre, vLLM décrit le transfert KV bidirectionnel, qui renvoie l’état réutilisable du decode au prefill lors des tours de conversation ultérieurs. Ce travail traite les calculs répétés à mesure que l’historique de conversation s’allonge, en utilisant des lectures NIXL dans les deux sens.

Il s’agit d’un objectif d’optimisation différent. Un transfert avant plus court et moins de calcul répété des prompts peuvent tous deux améliorer la réactivité. Il ne faut pas supposer que leurs bénéfices se combinent automatiquement, ni les comparer comme s’ils mesuraient un travail identique.

Un assistant conversationnel illustre cette distinction. Sa première requête et une requête ultérieure contenant l’historique accumulé peuvent imposer des exigences différentes à l’infrastructure. Améliorer une transition n’établit pas la meilleure politique pour l’ensemble de la conversation.

Pour le push face au pull de vLLM, cela signifie que les évaluations doivent inclure le comportement des sessions lorsque le produit en dépend. Un flux uniforme de prompts sans lien entre eux répond à une question plus limitée. Il ne peut pas remplacer le test des interactions répétées de l’application.

Le benchmark avec cache désactivé mérite le même traitement attentif. La suppression de la réutilisation aide à isoler le comportement de transfert, mais la réutilisation en production modifie la fréquence à laquelle ce comportement importe. Une application qui évite souvent un transfert complet présente un profil d’opportunités différent.

Cela n’invalide pas une comparaison contrôlée. Cela en définit l’objectif. Les opérateurs doivent conserver le résultat isolé tout en ajoutant une évaluation de la charge de travail qui rétablit les décisions réelles de l’application concernant le cache et le routage.

Une autre limite concerne les gains rapportés. Les chiffres proviennent de la source technique participante, plutôt que d’une réplication indépendante examinée ici. Ils justifient une investigation, mais ne permettent pas d’affirmer une supériorité universelle ou des économies garanties à l’échelle d’une flotte.

La conclusion sceptique est donc précise : la préparation anticipée dispose d’un mécanisme compréhensible, tandis que sa valeur globale reste dépendante du déploiement. Une décision d’adoption solide doit mesurer le bénéfice de coordination en regard de la flexibilité à laquelle elle renonce.

La référence pull évolue elle aussi

Une partie de l’avantage rapporté concerne l’endroit où s’exécute la préparation du transfert, un choix de conception que le pull peut également revoir.

Une proposition reader-thread publique cible la soumission pull de NIXL. Son objectif déclaré est de déplacer la soumission des lectures vers un thread d’arrière-plan dédié, réduisant le travail sur le thread d’exécution forward du moteur. La proposition conserve l’interrogation de fin d’opération sur le thread forward.

La page examinée pour cet article présente la proposition comme ouverte. Cela atteste d’un développement en cours, pas d’un résultat de performance livré. Elle ne permet pas d’affirmer qu’une future implémentation pull égalera le push ou comblera un pourcentage précis de l’écart.

Son importance est conceptuelle. La direction du transfert et l’emplacement de l’exécution sont des choix distincts. Le push peut bénéficier d’une préparation plus précoce de la destination, tandis que l’exécution en arrière-plan traite une autre source d’interférences.

Cette distinction modifie l’interprétation d’une avance observée dans un benchmark. Une comparaison capture les implémentations testées à ce moment précis. Elle n’attribue pas de manière permanente chaque bénéfice observé à l’étiquette architecturale associée au gagnant.

Pour les acheteurs et les opérateurs, la conséquence pratique est la prise en compte des versions. « Push » et « pull » ne suffisent pas à décrire un environnement d’évaluation. L’implémentation et la configuration pertinentes déterminent les étapes de préparation qui s’exécutent et leur emplacement.

L’historique de maintenance devient ainsi une partie des éléments de preuve sur les performances. Une mise à jour ultérieure du connecteur peut modifier la référence sans changer le modèle ni le matériel. Les équipes doivent réexaminer leurs conclusions antérieures lorsque le comportement d’exécution évolue de manière significative.

Le travail sur le reader-thread offre aussi un test utile de l’explication sous-jacente. Si la soumission en arrière-plan améliore le pull dans des conditions comparables, cela étayerait l’importance de l’emplacement de l’exécution. Cela n’effacerait pas, à lui seul, le bénéfice distinct du chevauchement de la configuration de destination.

À l’inverse, une amélioration limitée exigerait également une interprétation. Le délai restant pourrait impliquer d’autres dépendances, ou la charge de travail pourrait révéler des contraintes différentes. Un résultat décevant ne prouverait pas automatiquement que la conception de la proposition n’a aucune valeur ailleurs.

C’est ici que les rapports sur les performances doivent faire preuve de retenue. Un rapport utile sépare ce qui a été mesuré, le mécanisme qui l’explique et ce qui reste hypothétique. Confondre ces catégories produit des titres assurés, mais des orientations opérationnelles faibles.

Pour le transfert KV basé sur push de vLLM, la leçon durable consiste à examiner le travail qui entoure un transfert. Les noms des connecteurs résument un comportement, mais n’expliquent pas chaque délai. Le profilage du chemin d’exécution réel reste nécessaire.

L’évolution de la référence décourage également une décision de standardisation prématurée. Les équipes peuvent adopter une configuration qui répond aux besoins actuels tout en conservant des éléments pour la réexaminer. L’objectif est un service fiable, plutôt qu’une fidélité permanente à une direction de transfert.

Surveillez les réplications, les progrès du pull-thread et le comportement de routage

Les prochains éléments utiles montreront si les gains de coordination isolés résistent à des choix de déploiement réalistes.

Au cours des un à trois prochains mois, le premier signal à surveiller est une réplication indépendante sur des charges de travail représentatives des applications. Les résultats les plus informatifs conserveraient la même comparaison tout en faisant varier les distributions de prompts, le comportement du cache et la taille du déploiement. Des améliorations cohérentes renforceraient l’argument en faveur d’une adoption plus large.

La réplication doit également distinguer le démarrage de la réponse de la génération en cours. Un service doit savoir s’il devient plus réactif tout au long d’une interaction. Des résultats favorables limités à un point de benchmark inhabituellement exigeant justifieraient une décision de déploiement plus étroite.

Le deuxième signal est l’avancement de la soumission en arrière-plan pour le pull. Une implémentation examinée et publiée, suivie d’un benchmark comparable, clarifierait la contribution de l’emplacement de l’exécution. Un écart plus faible renforcerait l’explication mécaniste tout en réduisant l’argument consistant à considérer le push comme catégoriquement supérieur.

Ce signal exige un résultat effectivement mesuré. Une modification fusionnée établirait seulement la disponibilité, et non la parité de performances. Les opérateurs doivent résister à la tentation de transformer l’activité de développement en affirmation chiffrée avant que la charge de travail pertinente ait été testée.

Le troisième signal concerne le comportement de routage au-delà d’une paire prefill-decode fixe. Les résultats doivent montrer ce qui se passe lorsque la sélection précoce de destination rencontre une demande changeante en décodeurs. Une latence stable côté utilisateur renforcerait l’argument selon lequel le chevauchement reste précieux sous une pression de placement réaliste.

Si les engagements précoces produisent au contraire des files d’attente plus longues ailleurs, la limite de déploiement privilégiée se resserrerait. Le push pourrait toujours convenir à des charges de travail prévisibles, tandis qu’une sélection plus tardive resterait utile pour d’autres. Cela affinerait le résultat plutôt que de l’invalider.

Ces signaux maintiennent la discussion liée à l’événement initial. La question est de savoir si déplacer la préparation plus tôt améliore un service complet, dans ses propres conditions d’exploitation. Des affirmations plus larges sur l’économie de l’inférence exigent des preuves plus étendues que ne le fournit cette comparaison de connecteurs.

Pour les équipes qui décident quoi faire maintenant, commencez par une trace de requêtes représentative et un objectif de réponse clairement défini. Conservez le modèle, la politique de cache, le comportement de routage et la version d’implémentation lorsque vous comparez les résultats des connecteurs. Consignez où survient l’attente, puis examinez si une préparation plus précoce réduit ce délai sans créer une file d’attente plus importante ailleurs. Séparez le benchmark contrôlé de l’évaluation représentative de la production afin que chacun réponde à une question claire. Consultez les conditions de conception et de benchmark avant de traduire un ratio rapporté en décision de capacité. Pour le transfert KV basé sur push de vLLM, l’action utile consiste en une évaluation limitée du transfert que votre application effectue réellement. Une préparation plus précoce de la destination améliore-t-elle l’expérience de vos utilisateurs sous la charge que votre service doit gérer ?

 
 

Commencez pour Gratuit

Un premier assistant IA local avec gestion des connaissances personnelles

Pour une meilleure expérience IA,

remio ne supporte que Windows 10+ (x64) et M-Chip Macs actuellement.

Votre partenaire IA au travail
Faites-en plus avec remio

Planifiez. Créez. Livrez.
Tout au même endroit.

bottom of page