GUIDE Technique

Service de pré-remplissage et de décodage désagrégé

Une architecture de service qui divise l'inférence de grands modèles de langage en deux phases distinctes (pré-remplissage et décodage) et les exécute sur différents pools de GPU.

Écoutez ce guideNarré par l'IA · ~2 min

Sur cette page2 minutes de lecture
  1. Aperçu
  2. Plongée profonde
  3. Mise en œuvre dans le monde réel
  4. L'avenir du service de pré-remplissage et de décodage désagrégé
  5. Le mettre en pratique
  6. Continuez à explorer
  7. Questions fréquemment posées

Aperçu

C'est important car ces deux phases ont des appétits matériels opposés, et les forcer sur les mêmes machines gaspille de la capacité et nuit à la latence.

Plongée profonde

Lorsqu'un LLM répond, cela fonctionne en deux étapes. Prefill lit l'intégralité de l'invite en même temps et crée le cache clé-valeur (KV) ; il s'agit d'une grosse rafale parallèle liée au calcul qui sature les unités mathématiques du GPU. Decode génère ensuite les jetons un par un, chaque étape lisant l’intégralité du cache KV – un filet de calcul léger, limité à la bande passante mémoire. Exécutés ensemble, un long pré-remplissage bloque le décodage de tout le monde (blocage en tête de ligne) et le regroupement des deux crée des interférences. La désagrégation place le pré-remplissage sur un pool GPU et le décodage sur un autre, transférant le cache KV entre eux via des interconnexions rapides comme NVLink ou InfiniBand. Chaque pool est réglé et mis à l'échelle indépendamment, améliorant ainsi le bon rendement, lissant la latence de queue et permettant aux opérateurs d'atteindre simultanément des objectifs serrés de délai d'obtention du premier jeton et de temps par jeton de sortie.

Mise en œuvre dans le monde réel

Un assistant de discussion achemine les invites de documents longues vers un cluster de pré-remplissage gourmand en calcul, puis diffuse les réponses à partir d'un cluster de décodage à mémoire optimisée pour maintenir une latence de frappe fluide.

NVIDIA Dynamo et vLLM permettent aux opérateurs de déployer des groupes de travail de pré-remplissage et de décodage distincts afin qu'une rafale de longues invites ne gèle pas les générations en cours.

Mooncake (utilisé par Kimi de Moonshot AI) désagrège le pré-remplissage et le décodage et ajoute un pool de cache KV distribué pour réduire le recalcul d'invite redondant à grande échelle.

Un service de complétion de code consacre un petit pool de pré-remplissage aux invites courtes et un grand pool de décodage, car la plupart des coûts proviennent de la diffusion en continu de nombreux jetons de sortie.

L'avenir du service de pré-remplissage et de décodage désagrégé

Attendez-vous à ce que la désagrégation devienne un défaut dans les piles de production. Des systèmes comme DistServe, Splitwise et Mooncake l'ont popularisé, et vLLM et NVIDIA Dynamo proposent désormais des modes désagrégés. La recherche pousse à l'optimisation du transfert de cache KV, au regroupement et à la réutilisation du cache entre les requêtes, au rééquilibrage dynamique des ratios de pré-remplissage/décodage en cas de déplacement du trafic et à une intégration plus étroite avec la mise en cache des préfixes et le pré-remplissage fragmenté. À mesure que les fenêtres contextuelles se comptent en millions de jetons, la séparation de ces phases devient de plus en plus essentielle pour un service rentable et à faible latence.

Le mettre en pratique

Pourquoi c'est important

  • Coût et budget. Les décisions en matière d'architecture déterminent les performances et les coûts d'exploitation pendant des années.
  • Décisions plus claires. La formation technique aide les équipes à choisir la bonne pile, pas seulement la plus récente.
  • Contrôle qualité. De meilleurs choix d’ingénierie réduisent les incidents de fiabilité en production.

Attention à

  • L’optimisation d’un benchmark peut masquer des faiblesses plus larges du système.
  • Les coûts d’infrastructure et de maintenance sont souvent sous-estimés.
  • Les lacunes en matière de sécurité et d’observabilité peuvent se creuser à mesure que les systèmes deviennent plus complexes.

Prochaines étapes

  1. Définissez les objectifs de latence, de qualité et de coût avant la mise en œuvre.
  2. Benchmark dans des conditions de charge et de données réalistes.
  3. Surveillance des instruments pour détecter les erreurs, la dérive et l'impact sur l'utilisateur.
  4. Préparez les chemins de restauration et de réponse aux incidents avant la mise à l’échelle.

Continuez à explorer

Newsletter gratuite

Recevez le briefing quotidien sur l'IA

Trois histoires d'IA vérifiées chaque matin de la semaine, écrites dans un anglais simple. Gratuit pour toujours, sans publicité.

Un e-mail chaque jour de la semaine. Désabonnez-vous en un clic. Nous ne vendons ni ne partageons jamais votre adresse.

Testez-vous

Take the Disaggregated Prefill and Decode Serving quiz

Commentaires instantanés sur chaque réponse et un certificat partageable avec une pièce d'identité vérifiable une fois que vous avez réussi un cours.

Démarrer le quiz

Soutenez l’enseignement gratuit de l’IA. AI Understanding est une organisation à but non lucratif 501(c)(3) : pas de publicité, pas de paywall, jamais. Faire un don

Questions fréquemment posées

Qu'est-ce que le service de pré-remplissage et de décodage désagrégé ?

Une architecture de service qui divise l'inférence de grands modèles de langage en deux phases distinctes (pré-remplissage et décodage) et les exécute sur différents pools de GPU. C'est important car ces deux phases ont des appétits matériels opposés, et les forcer sur les mêmes machines gaspille de la capacité et nuit à la latence.

Quelle est la raison matérielle principale pour laquelle le pré-remplissage et le décodage sont séparés sur différents pools de GPU ?

Le pré-remplissage traite l'intégralité de l'invite en parallèle et sature le calcul, tandis que le décodage lit le cache KV à chaque étape et est limité par la bande passante mémoire – des appétits opposés qui justifient des pools séparés et réglés indépendamment.

Quelle structure de données doit être transférée des travailleurs de pré-remplissage aux travailleurs de décodage ?

Prefill crée le cache KV pour l'invite ; decode a besoin de ce cache pour continuer à générer, de sorte que le cache est expédié via une interconnexion rapide au pool de décodage.

Quel problème la désagrégation réduit-elle spécifiquement dans une configuration avec GPU partagé ?

Sur les GPU partagés, une longue rafale de pré-remplissage peut bloquer les étapes de décodage en cours ; les séparer évite ces interférences et stabilise la latence de la queue.

Pourquoi le pré-remplissage peut-il être groupé de manière agressive mais décoder les avantages de différents réglages ?

Le pré-remplissage traite tous les jetons d'invite ensemble, de sorte que des lots plus importants alimentent bien les cœurs tenseurs ; decode génère un jeton à la fois et est contrôlé par la mémoire, il évolue donc différemment.

Quelles interconnexions sont généralement utilisées pour déplacer le cache KV entre des pools désagrégés ?

Des liens à large bande passante et à faible latence comme NVLink (intra-nœud) et InfiniBand (inter-nœud) sont nécessaires pour que le transfert de cache KV ne devienne pas le nouveau goulot d'étranglement.