Développer avec l’IA

Le transfert KV bidirectionnel réduit la latence dans les charges de travail agentiques multi-tours

AWS démontre comment le transfert bidirectionnel du cache clé-valeur (KV) dans vLLM réduit le temps jusqu'au premier jeton (TTFT) d'un facteur allant jusqu'à 3,3x pour les contextes conversationnels longs.

Illustration du flux de données bidirectionnel entre deux unités de processeur.
Illustration générée pour cet article

Traduit automatiquement depuis l'original anglais.

Amazon Web Services a introduit une méthode permettant de réduire considérablement la latence dans les applications agentiques multi-tours en activant le transfert bidirectionnel du cache clé-valeur (KV) au sein du framework de serving vLLM. Publiée le 19 octobre 2026, cette approche permet aux nœuds de préremplissage (prefill) et de décodage de partager le contexte mis en cache dans les deux sens, éliminant ainsi les calculs redondants à mesure que les historiques de conversation s'allongent.

Ce qui s'est passé

Dans les workflows agentiques multi-tours typiques, un agent accumule du contexte en raisonnant, en invoquant des outils et en intégrant les résultats précédents. Les clients renvoient généralement l'intégralité de l'historique de conversation — y compris les instructions système, les prompts antérieurs, les sorties d'outils et les réponses du modèle — à chaque nouveau tour. Dans les architectures de serving disagrégées Préremplissage-Décodage (P-D), les requêtes sont réparties entre des nœuds spécialisés : un nœud de préremplissage traite le prompt pour construire le cache KV, tandis qu'un nœud de décodage récupère ces blocs pour générer la réponse. Cependant, les implémentations standard ne transfèrent le cache KV que dans un seul sens, du préremplissage vers le décodage.

Ce flux unidirectionnel crée des inefficacités. Après avoir généré une réponse, le nœud de décodage conserve les entrées KV à la fois pour le prompt original et pour les nouveaux jetons. Lors de l'arrivée du tour suivant, le nœud de préremplissage ne peut pas accéder à ces entrées et doit recalculer les projections KV pour la réponse précédente. De plus, comme les nœuds de décodage maintiennent l'état de session alors que les nœuds de préremplissage ne le font pas, les sessions actives sur les nœuds de préremplissage encourent un risque plus élevé d'éviction du cache. Un échec total du cache force le nœud de préremplissage à recalculer l'intégralité de l'historique, consommant la capacité de l'accélérateur et augmentant le temps jusqu'au premier jeton (TTFT).

Pour remédier à cela, les ingénieurs d'AWS ont étendu le connecteur KV de la NVIDIA Inference Xfer Library (NIXL) dans vLLM afin de prendre en charge le transfert bidirectionnel. Cela permet aux nœuds de décodage de renvoyer les blocs KV précédemment calculés aux nœuds de préremplissage pour les tours suivants. Cette fonctionnalité a été validée sur des instances Amazon EC2 P5en connectées via AWS Elastic Fabric Adapter (EFA), montrant qu'elle réduit le TTFT d'un facteur allant jusqu'à 1,6x pour Qwen3-32B et jusqu'à 3,3x pour les modèles zai-org/GLM-5-FP8 lors de benchmarks multi-tours.

Comment cela fonctionne

Le transfert KV bidirectionnel repose sur un routeur conscient du cache KV et des politiques améliorées de rétention des blocs. Le routeur agit comme un plan de contrôle léger et avec état (stateful) qui associe les identifiants de conversation client aux paramètres de transfert KV des nœuds de décodage. Il ne stocke que les métadonnées de localisation des blocs, et non les tenseurs réels, en obtenant ces informations depuis le flux de réponse. Au premier tour, il y a un échec de cache, et la requête suit le chemin standard. Le routeur sauvegarde ensuite les métadonnées du nœud de décodage. Aux tours suivants, le routeur récupère ces métadonnées, permettant au nœud de préremplissage de réutiliser les blocs KV du nœud de décodage plutôt que de les recalculer.

Le nœud de décodage conserve les blocs KV éligibles pendant un délai de vie configurable (TTL), par défaut 480 secondes, au lieu de les libérer immédiatement après la génération. Cela garantit que le contexte reste disponible pour le tour suivant. Pour éviter que la surcharge ne dépasse les bénéfices pour les préfixes courts, un paramètre kv_recompute_threshold contrôle quand la réutilisation a lieu. Si le nombre de jetons réutilisables est inférieur à ce seuil (par défaut 64), le nœud de préremplissage recalcule localement ; sinon, il extrait le KV du nœud de décodage via une opération NIXL READ.

Détails clés

  • Le transfert KV bidirectionnel réduit le TTFT d'un facteur allant jusqu'à 1,6x pour Qwen3-32B et 3,3x pour zai-org/GLM-5-FP8 dans les configurations testées.
  • La fonctionnalité nécessite vLLM v0.21.0 ou ultérieur avec NixlConnector et doit être activée sur les serveurs de préremplissage et de décodage.
  • AWS EFA prend en charge GPUDirect RDMA et Neuron Direct RDMA, permettant un accès mémoire direct entre les dispositifs GPU ou Trainium.
  • Les nœuds de décodage conservent les blocs KV pendant un TTL configurable (par défaut 480 secondes) pour permettre la réutilisation entre les tours.
  • Un kv_recompute_threshold (par défaut 64 jetons) empêche une surcharge réseau inutile pour les préfixes réutilisables courts.
  • Le routeur conscient du cache KV maintient une correspondance en mémoire des identifiants de conversation aux paramètres de transfert KV sans stocker de tenseurs.

Pourquoi c'est important

Pour les ingénieurs développant des assistants conversationnels et des applications agentiques, la gestion de fenêtres de contexte croissantes constitue un goulot d'étranglement majeur. À mesure que les historiques d'interaction s'allongent, les calculs de préremplissage répétés consomment des ressources d'accélérateur significatives et augmentent la latence. En permettant aux nœuds de préremplissage de réutiliser les blocs KV conservés par les nœuds de décodage, le transfert bidirectionnel atténue cette redondance. Cela conduit à des performances TTFT plus stables même lorsque les conversations s'étendent, améliorant l'expérience utilisateur et l'utilisation des ressources.

L'architecture souligne également l'importance des interconnexions efficaces telles qu'AWS EFA pour l'inférence distribuée. La faible surcharge liée au transfert des blocs KV (30–130 ms dans les tests) est largement compensée par les économies réalisées en temps de recalcul, surtout pour les modèles plus volumineux comme GLM-5-FP8. Cela suggère que l'optimisation des mouvements de données entre les nœuds spécialisés est aussi critique que l'optimisation de l'exécution du modèle lui-même pour les systèmes agentiques évolutifs.

Ce que vous pouvez faire

  • Mettez à niveau vers vLLM v0.21.0 ou ultérieur et activez bidirectional_kv_xfer sur les serveurs de préremplissage et de décodage.
  • Implémentez un routeur conscient du cache KV pour gérer le flux de métadonnées entre les clients et les nœuds de serving.
  • Ajustez le paramètre decoder_kv_blocks_ttl en fonction du temps attendu entre les tours utilisateur pour équilibrer l'utilisation mémoire et la réutilisation.
  • Ajustez le kv_recompute_threshold selon le temps de calcul de votre modèle et les performances de l'interconnexion.
  • Utilisez des instances compatibles AWS EFA comme P5en pour des transferts RDMA à faible latence si vous déployez sur l'infrastructure AWS.
  • Reproduisez le benchmark en utilisant le guide fourni pour valider les gains de performance pour votre charge de travail et votre modèle spécifiques.
  • #vllm
  • #aws
  • #inference
  • #kv-cache
  • #agentic-workflows

Outils de la Boutique Bytechap

$89

DocBento

Gestion documentaire auto-hébergée qui analyse chaque scan et répond avec des citations de pages.

Démo en ligne

Continuer la lecture

Tous les articles