Ingénierie d'Inférence
Utilisez cette compétence pour transformer les exigences de qualité, de latence, de fiabilité et de coût d'un produit d'IA en un système d'inférence mesuré. Il s'agit d'une synthèse opérationnelle indépendante inspirée de l'ouvrage Inference Engineering de Philip Kiely (Baseten Books, 2026), et n'est pas affiliée ni approuvée par l'auteur ou l'éditeur. Les fonctionnalités des fournisseurs, les versions de modèles, la disponibilité du matériel et le comportement des logiciels évoluent rapidement ; vérifiez les détails actuels auprès de la documentation officielle avant de prendre des décisions de mise en œuvre.
Commencez par la charge de travail
Avant de choisir un moteur ou une optimisation, établissez :
- Contrat produit : qualité de sortie requise, modalités, tailles de contexte/d'entrée, forme de la réponse, besoins de streaming et comportement en cas d'échec.
- Forme du trafic : taux de requêtes, concurrence, rafales, schéma d'arrivée, distributions des longueurs d'entrée/sortie et fréquence des préfixes mis en cache.
- Objectifs de service : latence P50/P95/P99 de bout en bout, délai jusqu'au premier token (TTFT), latence inter-tokens (ITL), débit, disponibilité et objectifs de récupération.
- Contraintes : budget, régions, résidence des données, confidentialité, licence, accès au matériel et capacité opérationnelle.
- Référence : évaluation de qualité représentative plus performance de bout en bout et coût sous charge réaliste.
N'optimisez pas une métrique proxy isolément. Définissez l'unité de travail et incluez le temps client, de file d'attente, réseau, prétraitement, modèle et post-traitement le cas échéant. Pour les flux agentiques, mesurez la tâche entière, y compris les appels d'outils et les tentatives.
Flux de travail opérationnel
- Caractérisez la charge de travail. Séparez le trafic interactif en ligne du travail hors ligne/par lots ; identifiez les chemins sensibles à la latence et ceux orientés débit. Enregistrez les distributions réelles d'entrée/sortie et la concurrence.
- Choisissez les modèles candidats. Présélectionnez en fonction de la qualité spécifique à la tâche, de la modalité, du contexte, des contraintes de service, de la licence et de l'adéquation opérationnelle. Utilisez les benchmarks publics uniquement pour réduire les candidats ; évaluez sur des données produit représentatives et des cas d'échec.
- Définissez les budgets. Traduisez les objectifs de bout en bout en budgets pour la file d'attente, le réseau, le prétraitement, le préremplissage, le décodage et le post-traitement. Incluez une marge pour les rafales et les conditions dégradées.
- Adaptez le modèle au matériel. Estimez la mémoire des poids, la surcharge d'exécution/activation, la demande de cache KV et la marge utilisable. Vérifiez la bande passante mémoire mesurée, le calcul, l'interconnexion et la topologie ; une spécification d'accélérateur nominale n'est pas un benchmark de charge de travail.
- Établissez une référence reproductible. Fixez la révision du modèle, le moteur/la version, le matériel, la précision, la configuration, le mélange de prompts, les limites de sortie et la forme de la charge. Échauffez, exécutez suffisamment d'échantillons et rapportez les percentiles et le débit en même temps.
- Localisez le goulot d'étranglement. Utilisez d'abord les mesures de bout en bout, puis le profilage système et noyau. Distinguez la file d'attente, le préremplissage, le décodage, la capacité/bande passante mémoire, le calcul, la communication et la surcharge hôte.
- Modifiez une variable à la fois. Appliquez l'optimisation la moins complexe qui traite le goulot d'étranglement mesuré. Revérifiez ensemble la qualité, la latence de queue, le débit, la mémoire et le coût.
- Validez le comportement en production. Testez les surcharges, les démarrages à froid, les événements de mise à l'échelle, les échecs, les déploiements, l'annulation, le streaming et la récupération. Instrumentez les mêmes métriques que celles utilisées dans les objectifs de service.
Métriques et diagnostic
- TTFT : temps entre un événement de début clairement énoncé (par exemple, envoi client ou acceptation serveur) et le premier token généré. Gardez cette limite cohérente lors de la comparaison des exécutions ; elle est sensible à la file d'attente, à la longueur du prompt, au préremplissage et aux effets de démarrage.
- ITL : temps entre les tokens générés ; reflète la réactivité du décodage. Rapportez les distributions par requête, pas seulement le taux de tokens agrégé.
- Latence de bout en bout : temps d'achèvement observé par le client ; inclut le réseau et le travail applicatif.
- Débit : requêtes ou tokens terminés par unité de temps à une charge de travail et une enveloppe de latence/qualité spécifiées. Indiquez si les tokens/s sont par utilisateur ou à l'échelle du système.
- Percentiles : rapportez P50 plus les objectifs de queue tels que P95/P99 ; les moyennes peuvent cacher des requêtes lentes.
- Goodput : travail achevé tout en respectant les objectifs de latence et de qualité pertinents. Utilisez-le pour comparer des configurations qui échangent la vitesse contre la qualité ou le comportement de queue.
Interprétez les symptômes comme des hypothèses, puis vérifiez avec des traces/profils :
| Symptôme | Zones probables à mesurer |
|---|---|
| TTFT élevé, ITL normal | Attente en file, prompts longs, calcul de préremplissage, démarrage à froid, prétraitement |
| TTFT normal, ITL médiocre | Bande passante de décodage, contention de lots, pression du cache KV, efficacité du noyau |
| Les deux s'aggravent avec la concurrence | File d'attente, capacité mémoire, politique de lots, contrôle d'admission, saturation |
| Faible utilisation GPU, latence élevée | CPU/tokenisation, transfert de données, synchronisation, réseau, ordonnancement |
| Le débit augmente mais la latence de queue viole le SLO | Politique de lots/concurrence, limites de file, isolation de la charge de travail |
Ce sont des pistes de diagnostic, pas des conclusions. Confirmez le goulot d'étranglement actif avant de modifier la configuration.
Décisions relatives aux modèles et au matériel
- Privilégiez le modèle le plus petit/le moins coûteux qui réussit l'évaluation de qualité du produit avec une marge acceptable. Envisagez le prompting, la récupération, le fine-tuning ou la distillation uniquement lorsque l'évaluation identifie un écart spécifique et que le coût du cycle de vie est justifié.
- Séparez les déploiements en ligne et hors ligne lorsque leurs objectifs de latence, de lots ou de disponibilité sont en conflit et que le trafic mesuré justifie la surcharge opérationnelle.
- Adaptez le modèle et l'état d'exécution dans la mémoire de l'accélérateur avec une marge explicite pour le cache KV, les activations, la fragmentation et la concurrence. L'ajustement du poids seul est insuffisant.
- Pour les LLM autorégressifs, le préremplissage et le décodage sollicitent le matériel différemment : le préremplissage est généralement lourd en calcul ; le décodage devient souvent limité par la bande passante mémoire. Mesurez les deux pour la séquence réelle et le mélange de lots.
- Les choix multi-GPU échangent mémoire/latence/débit contre communication et complexité. Le parallélisme tensoriel peut réduire la latence par requête pour un modèle divisé ; le parallélisme d'experts peut servir des experts creux à grande échelle. Validez les coûts d'interconnexion et de synchronisation. L'exécution multi-nœuds nécessite une mesure de communication particulièrement minutieuse.
- Pour les charges de travail d'image, vidéo, audio, embedding et vision-langage, utilisez des pipelines et des métriques spécifiques à la modalité. Incluez les coûts de prétraitement, de segmentation, d'encodeur/décodeur et de post-traitement ; n'appliquez pas aveuglément les métriques de token LLM.
- Vérifiez les licences des modèles et des ensembles de données ainsi que les exigences de sécurité, de confidentialité et réglementaires applicables avant le déploiement.
Pour le raisonnement derrière ces choix, utilisez les fondamentaux des modèles et du matériel. Pour la compatibilité des frameworks, formats et moteurs de service, utilisez la sélection de la pile logicielle. Ces références fournissent des méthodes de décision, pas des classements intemporels : vérifiez la prise en charge du modèle, de l'accélérateur, de la version d'exécution et de l'ensemble de fonctionnalités exacts.
Playbooks d'optimisation
Appliquez uniquement après avoir établi une référence et identifié un goulot d'étranglement compatible :
Traitement par lots et ordonnancement
Le traitement par lots peut améliorer l'utilisation de l'accélérateur et amortir les frais généraux, tout en augmentant la file d'attente et la latence par requête. Ajustez la concurrence, les limites de lots, les fenêtres d'attente et le contrôle d'admission en fonction des arrivées réalistes. Protégez le trafic interactif du travail par lots lorsque leurs objectifs sont en conflit.
Quantification
Traitez la quantification comme un spectre qualité/performance, pas comme un réglage binaire. Choisissez les composants et la précision à modifier en fonction des contraintes mesurées de mémoire, bande passante, calcul et qualité. Évaluez la qualité de la tâche représentative, les cas limites et les ensembles de régression après chaque modification ; observez séparément les effets sur les poids, les activations, l'attention et le cache KV lorsque le moteur le permet. Revenez en arrière si le seuil de qualité ou la cible de fiabilité du produit n'est pas atteint.
Décodage spéculatif
Utilisez un mécanisme de brouillon/proposition uniquement lorsque son coût de proposition et son comportement d'acceptation produisent un gain net pour la charge de travail cible. Mesurez le taux d'acceptation, la surcharge mémoire, l'impact sur la taille des lots, l'ITL par utilisateur, le débit agrégé et le coût. Le bénéfice peut diminuer ou s'inverser à une concurrence élevée ou avec une faible acceptation.
Mise en cache KV et de préfixe
Réutilisez l'état mis en cache lorsque les préfixes se répètent et que les exigences de correction/isolation le permettent. Mesurez le taux de succès, le travail de préremplissage économisé, le coût de stockage/mémoire, le comportement d'éviction et la localité de routage. Définissez les clés de cache et les limites de locataire/sécurité afin qu'une requête ne puisse pas réutiliser le contexte privé d'un autre locataire. Les contextes longs et la concurrence élevée augmentent la pression KV ; tenez compte des coûts de placement et de transfert.
Parallélisme et désagrégation
Introduisez le parallélisme lorsque les mesures d'ajustement du modèle, de latence ou de débit justifient la surcharge de communication. Désagrégez le préremplissage et le décodage uniquement lorsque la charge de travail est suffisamment importante et stable pour bénéficier d'une allocation de ressources indépendante et que le système peut gérer le transfert/routage KV. Incluez la bande passante réseau, la latence de transfert, les modes de défaillance et la complexité opérationnelle dans la comparaison.
Optimisation des noyaux et de l'exécution
Profilez avant d'écrire ou de sélectionner des noyaux spécialisés. La fusion de noyaux peut réduire le trafic mémoire et les frais de lancement, mais la compatibilité et le comportement numérique sont importants. Comparez les candidats framework/exécution/moteur en utilisant la même révision de modèle, matériel, mélange de prompts, longueurs de sortie, charge et contrôles de qualité.
Pour des comparaisons détaillées des méthodes de quantification, des familles de décodage spéculatif, du placement de cache, du service de contexte long et de l'exécution distribuée, lisez le playbook d'optimisation.
Benchmarking et profilage
- Utilisez des traces de production ou une charge de travail respectueuse de la vie privée qui préserve les tailles de requêtes, les schémas d'arrivée et les caractéristiques de cache. Les tests synthétiques sont utiles pour les expériences contrôlées, mais indiquez leurs limites.
- Enregistrez séparément le comportement à froid et à chaud. Incluez l'échauffement, une durée/un nombre d'échantillons adéquats, des exécutions répétées, la variance et les versions matérielles/logicielles.
- Balayez la charge pour trouver à la fois la saturation et le goodput maximum sous SLO. Évitez de comparer une exécution légèrement chargée avec une exécution surchargée.
- Modifiez un facteur à la fois pour l'attribution ; après réglage, exécutez un test de bout en bout combiné car les optimisations peuvent interagir.
- Associez les benchmarks système à l'évaluation de la qualité de la tâche. Les améliorations de performance qui dégradent les sorties au-delà du seuil du produit ne sont pas des victoires.
- Le benchmarking montre ce qui est lent ; le profilage aide à expliquer pourquoi. Utilisez le profileur le moins intrusif qui peut isoler le goulot d'étranglement actif et validez le correctif proposé avec un nouveau benchmark.
Préparation à la production
- Capacité et mise à l'échelle automatique : montez en charge sur des indicateurs avancés (profondeur de file, utilisation, pression mémoire/KV, taux d'arrivée) ainsi que sur le travail achevé. Tenez compte du temps de provisionnement et de chargement du modèle ; maintenez une capacité suffisante ou dégradez gracieusement lorsque les démarrages à froid violent les objectifs.
- File d'attente et surcharge : limitez les files d'attente et les tailles de requêtes, définissez des délais d'attente/annulation, utilisez le contrôle d'admission et définissez des réponses explicites à la surcharge. Une file d'attente illimitée transforme la saturation en échec de latence de queue.
- Fiabilité : testez les contrôles de santé, les tentatives avec limites, l'idempotence si nécessaire, la perte d'instance, la défaillance régionale/fournisseur, le déploiement, le retour arrière, l'épuisement de capacité. Les tentatives peuvent amplifier la surcharge.
- Déploiement : figez les artefacts et dépendances du modèle, validez le démarrage/préparation, déployez progressivement avec une stratégie de canari, comparez les métriques de qualité et de service, et conservez un chemin de retour arrière testé. Évitez d'exposer les secrets dans les images, les journaux ou les artefacts de benchmark.
- Observabilité : corrélez les traces de requêtes avec les versions du modèle, du moteur, du matériel et de la configuration. Suivez le TTFT, l'ITL, les percentiles de bout en bout, le temps de file, le débit/goodput, les erreurs, le taux de succès du cache, l'utilisation, la mémoire, les démarrages à froid et le coût.
- Coût : comparez le coût par requête réussie ou sortie utile à la qualité et au SLO requis, y compris la capacité inactive, la réplication, le réseau, le stockage et la charge d'ingénierie/exploitation. La mise à l'échelle à zéro peut réduire les dépenses inactives mais ajoute de la latence de démarrage à froid.
- Sécurité et conformité : contrôlez l'accès au modèle et aux données, isolez les locataires, protégez les prompts et les sorties dans les journaux, définissez la conservation, validez les dépendances et artefacts, et respectez les exigences applicables de résidence des données et réglementaires.
Pour la reproductibilité des conteneurs, la capacité et le routage, les opérations multi-régions, les protocoles clients et les pratiques de déploiement, lisez les opérations de production. Pour les mesures par modalité, lisez les considérations d'inférence spécifiques à la modalité.
Routage des références
| Tâche | À lire |
|---|---|
| Construire une fiche de charge de travail, établir une référence ou localiser un goulot d'étranglement | Ce fichier, puis playbook d'optimisation |
| Comprendre l'exécution du modèle, l'ajustement à l'accélérateur ou les compromis matériels | Fondamentaux des modèles et du matériel |
| Sélectionner un framework, un format de modèle, un chemin de noyau ou un moteur de service | Sélection de la pile logicielle |
| Ajuster la quantification, la spéculation, les caches, le parallélisme ou la désagrégation | Playbook d'optimisation |
| Servir des charges de travail de vision, embeddings, audio, image ou vidéo | Considérations spécifiques à la modalité |
| Planifier la mise à l'échelle automatique, le déploiement, la fiabilité, le comportement API/client et le coût | Opérations de production |
Format de réponse pour les tâches d'inférence
Lorsque vous conseillez ou implémentez, fournissez :
- Hypothèses de charge de travail et mesures manquantes.
- L'objectif et les métriques de référence.
- L'hypothèse du goulot d'étranglement principal et comment la prouver.
- Un plan d'expérience classé avec les compromis attendus.
- Les critères d'acceptation de qualité, de latence de queue, de fiabilité, de sécurité et de coût.
- Les faits actuels sur le fournisseur/modèle/exécution avec des liens vers les sources officielles lorsqu'ils affectent la recommandation.