Pourquoi le traitement des invites peut-il être plus rapide que la génération de jetons d’IA en local ?

Eva Wong est la rédactrice technique et bricoleuse résidente chez ZimaSpace. Geek depuis toujours, passionnée par les homelabs et les logiciels open source, elle se spécialise dans la traduction de concepts techniques complexes en guides accessibles et pratiques. Eva croit que l’auto-hébergement doit être amusant, pas intimidant. À travers ses tutoriels, elle donne à la communauté les moyens de démystifier les configurations matérielles, depuis la construction de leur premier NAS jusqu’à la maîtrise des conteneurs Docker.

Le traitement des prompts peut être plus rapide que la génération des tokens, car un accélérateur évalue de nombreux tokens d’entrée en parallèle, tandis qu’il doit décoder les tokens de sortie séquentiellement.

Un tableau de bord d’IA domestique peut afficher des centaines, voire des milliers de tokens de prompt par seconde, alors que la sortie diffusée arrive à un rythme bien inférieur. Ces chiffres décrivent des phases d’exécution différentes plutôt que des mesures contradictoires. Le préremplissage traite le contexte fourni comme un bloc et construit l’état d’attention, tandis que le décodage exécute à plusieurs reprises le modèle pour accepter un seul nouveau token à la fois. L’écart dépend de la longueur du prompt, de la taille du modèle, de la bande passante mémoire, du traitement par lots, de la disposition du cache et du partage éventuel du même accélérateur avec des requêtes en arrière-plan.

Le préremplissage et le décodage résolvent des problèmes de calcul différents

Le traitement du prompt, souvent appelé préremplissage, évalue la séquence d’entrée et crée l’état KV nécessaire à la génération ultérieure. Le décodage ne commence qu’une fois cet état initial disponible et prolonge la séquence token par token.

Les recherches sur le déploiement des LLM décrivent le préremplissage limité par le calcul et le décodage limité par la bande passante mémoire comme deux phases distinctes, présentant des comportements matériels différents.

Le même modèle peut donc afficher un débit de préremplissage élevé et un débit de tokens de sortie bien inférieur sans présenter le moindre dysfonctionnement. Chaque métrique compte les tokens qui traversent un chemin d’exécution différent.

Les tokens du prompt peuvent être évalués dans de grandes matrices parallèles

Lors du préremplissage, de nombreuses positions de requête sont disponibles simultanément. Les multiplications matricielles peuvent regrouper le travail sur la séquence, le lot, les têtes et les dimensions cachées, fournissant à l’accélérateur suffisamment d’opérations parallèles pour rester pleinement sollicité.

FlashAttention réduit la surcharge de l’attention grâce à un calcul de l’attention par tuiles, qui évite de matérialiser à plusieurs reprises la matrice d’attention complète dans la mémoire lente de l’appareil.

Les prompts plus longs augmentent le travail total de préremplissage, mais peuvent aussi améliorer l’utilisation des unités de calcul jusqu’à ce que la capacité mémoire, les limites des noyaux ou la complexité de l’attention deviennent prépondérantes.

Il s’agit du débit sur l’ensemble du bloc d’entrée, et non d’une indication que le serveur pourrait produire le même nombre de tokens de sortie indépendants chaque seconde.

Le décodage ne peut pas finaliser le token suivant avant le token actuel

La génération autorégressive sélectionne ou échantillonne un token, l’ajoute à la séquence, puis exécute une nouvelle étape du modèle conditionnée par ce résultat accepté. Le prochain token accepté n’est pas connu à l’avance.

DistServe sépare les deux phases, car les itérations de décodage accèdent à plusieurs reprises aux poids du modèle et à l’état KV actif, tout en produisant seulement une petite quantité de nouvelle sortie par séquence.

Le traitement par lots de plusieurs utilisateurs peut paralléliser plusieurs séquences de décodage, mais une même conversation progresse toujours au sein d’une chaîne de décisions de tokens dépendantes les unes des autres.

Le décodage spéculatif peut vérifier plusieurs candidats proposés simultanément, mais le décodage ordinaire reste séquentiel lorsqu’aucun candidat n’est accepté à l’avance.

Un débit élevé de prompts peut tout de même entraîner une longue attente avant le premier token

Le nombre de tokens par seconde divise le travail de prompt terminé par la taille du prompt. Un contexte très long peut afficher un débit impressionnant tout en nécessitant plusieurs secondes avant l’apparition du premier token généré.

ZimaSpace distingue le chargement, l’évaluation du prompt et la génération dans sa présentation des étapes de latence de l’IA. Un modèle déjà chargé élimine le délai de rechargement, mais ne supprime pas le coût d’évaluation d’un prompt volumineux.

Le délai avant le premier token constitue donc la meilleure mesure interactive du préremplissage. Le nombre de tokens de prompt par seconde est utile pour comparer l’efficacité avec laquelle le moteur traite différentes longueurs d’entrée.

Les préremplissages longs peuvent ralentir les utilisateurs déjà en phase de décodage

Le prompt d’un document exigeant beaucoup de calcul peut utiliser le même accélérateur pendant qu’un autre utilisateur reçoit des tokens en continu. Si le moteur combine ces charges de travail sans contrôle, le préremplissage volumineux peut allonger les itérations de décodage.

DistServe signale une forte interférence entre le préremplissage et le décodage lorsque les deux phases sont colocalisées et planifiées ensemble.

Le serveur peut malgré tout afficher une utilisation globale élevée, tandis que la conversation active subit des intervalles plus longs entre les tokens. Le débit et la fluidité perçue par l’utilisateur peuvent évoluer en sens opposés.

Des processus distincts, une planification tenant compte des phases ou des créneaux de décodage réservés peuvent protéger la sortie interactive lorsque le matériel et le moteur le permettent.

Le découpage échange une partie de l’efficacité du préremplissage contre une meilleure réactivité

Un moteur peut diviser un prompt long en segments plus petits et intercaler ces segments avec le travail de décodage. Le prompt nécessite alors davantage de tours de planification, mais aucun préremplissage ne monopolise une très longue itération.

Sarathi-Serve utilise des préremplissages découpés afin de réduire les interférences tout en conservant des possibilités utiles de traitement par lots.

La taille optimale des segments dépend de la longueur des prompts, de l’architecture du modèle, de la capacité de l’accélérateur et de l’objectif de latence des conversations actives.

Mesurez séparément le temps de traitement du prompt, le délai avant le premier token, le temps entre les tokens et le nombre de tokens de sortie par seconde. La phase affichant le débit nominal le plus faible n’est pas automatiquement celle qui provoque l’attente la plus longue pour l’utilisateur.

Centre Tech & IA

Plus à lire

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.