Définir la charge avant l'architecture
Une faible latence ne signifie rien sans définition de la charge. Il faut préciser :- la famille du modèle, sa précision et son empreinte mémoire ;
- les distributions de tokens d'entrée et de sortie ;
- les clients avec ou sans diffusion en continu ;
- la concurrence et la forme des pics ;
- le nombre de modèles et d'adaptateurs ;
- la politique de longueur de contexte ;
- les exigences de disponibilité, de résidence et d'isolation des données ;
- l'objectif de latence du premier token et de la complétion ;
- les objectifs de débit et de coût.
Comprendre les compromis du moteur
Le traitement continu par lots permet au moteur d'ajouter et de retirer des requêtes pendant la génération. Il peut améliorer le débit face à des lots fixes, mais crée aussi des choix d'ordonnancement entre requêtes interactives courtes et longues générations. Le cache KV constitue une autre contrainte centrale. Les contextes longs, le nombre de séquences concurrentes et la taille du modèle consomment rapidement la mémoire. Le cache de préfixes évite du calcul lorsque plusieurs requêtes partagent des préfixes stables, mais son bénéfice dépend de la réutilisation réelle et d'une clé qui respecte les versions du modèle, du tokeniseur, de l'adaptateur et de la politique. La configuration doit être ajustée sur le trafic mesuré plutôt que copiée. Les variables importantes incluent le nombre maximal de séquences, les budgets de tokens, l'utilisation mémoire, le parallélisme tensoriel ou de pipeline, la quantification et le préremplissage par blocs. Chaque évolution peut déplacer le débit, la latence, la pression mémoire et la qualité dans des directions différentes.Placer le contrôle d'admission avant le moteur
Un serveur surchargé ne doit pas accepter un travail illimité en espérant que le traitement par lots le résorbera. La passerelle a besoin de :- authentification et quotas par client ;
- limites de requête et de contexte ;
- files bornées ;
- échéances et propagation de l'annulation ;
- contrôles de concurrence par classe de charge ;
- contre-pression et réponses explicites en surcharge ;
- routage sûr vers des réplicas sains ou une capacité de repli.
Séparer les couches de service et de déploiement
Une plateforme pratique distingue :- passerelle : identité, quotas, validation, routage et métadonnées ;
- groupe d'inférence : réplicas vLLM avec modèle et matériel explicites ;
- cycle de vie : validation des artefacts, préchauffage, état de préparation et promotion ;
- télémétrie : traces, métriques moteur, journaux et attribution des coûts ;
- plan de contrôle : mise à l'échelle automatique, déploiement progressif, retour arrière et politique de capacité.
Observer la file, le cache et l'expérience
L'utilisation GPU ne suffit pas à expliquer la qualité du service. Il faut suivre :- le débit de requêtes, la charge acceptée et rejetée ;
- le temps en file et les séquences actives ;
- les distributions du délai au premier token et entre tokens ;
- les tokens de prompt et générés ;
- l'utilisation du cache KV et les préemptions ;
- le comportement du cache de préfixes lorsqu'il est activé ;
- les annulations, dépassements de délai et raisons de fin ;
- les erreurs par modèle, réplica, client et classe de charge ;
- le coût ou le temps d'accélérateur par requête réussie.