Introduire un grand modèle de langage (LLM) en production n'est pas la même chose que déployer un microservice traditionnel. Alors qu'un point d'extrémité API standard nécessite une surveillance de la disponibilité et de la latence, les LLM introduisent un comportement stochastique, des coûts de calcul importants et des risques qualitatifs tels que les hallucinations. Dans le domaine du LLMOps, une surveillance efficace n'est plus optionnelle ; elle est essentielle pour maintenir la confiance, contrôler les dépenses et garantir la satisfaction des utilisateurs.
Contrairement aux systèmes déterministes où un code de statut « 200 OK » garantit le succès, un LLM peut renvoyer une réponse techniquement réussie mais factuellement incorrecte, biaisée ou simplement inutile. Ce billet de blog explore les trois piliers de la surveillance de l'IA : Performance, Coût et Qualité.
1. Métriques de performance : Latence et débit
La vitesse perçue est cruciale pour la rétention des utilisateurs dans les applications IA. Cependant, la latence des LLM est complexe. Nous devons distinguer le Temps jusqu'au premier jeton (TTFT), qui affecte la réactivité perçue, du Temps total de génération, qui impacte l'achèvement du flux de travail. De plus, le suivi des jetons par seconde (TPS) aide à identifier les goulets d'étranglement dans le moteur d'inférence.
Voici un exemple simple en Python utilisant le SDK OpenAI pour instrumenter ces métriques :
import time
import openai
def generate_with_metrics(prompt: str) -> dict:
start_time = time.time()
try:
# Simulate streaming to measure TTFT
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
stream=True
)
first_token_received = False
total_tokens = 0
for chunk in response:
if not first_token_received:
ttft = time.time() - start_time
first_token_received = True
delta = chunk["choices"][0].get("delta", {})
if "content" in delta:
total_tokens += 1 # Rough estimation for example
total_time = time.time() - start_time
return {
"status": "success",
"ttft_seconds": ttft,
"total_time_seconds": total_time,
"tokens_generated": total_tokens,
"tps": total_tokens / total_time if total_time > 0 else 0
}
except Exception as e:
return {
"status": "error",
"error": str(e),
"total_time_seconds": time.time() - start_time
}
2. Optimisation des coûts et suivi du budget
L'inférence des LLM est coûteuse. Un usage non surveillé peut entraîner des pics financiers inattendus. La surveillance doit suivre le coût par requête, le coût par utilisateur et le taux de consommation total par rapport à un budget défini. En étiquetant les requêtes avec des métadonnées (par exemple, ID utilisateur, drapeau de fonctionnalité, groupe d'expérimentation), vous pouvez attribuer les coûts avec précision. Si vous remarquez une augmentation soudaine du coût par jeton, cela peut indiquer que le modèle génère une longueur excessive en raison d'une confusion du prompt, nécessitant une intervention en ingénierie de prompts.
3. Surveillance de la qualité : Hallucinations et garde-fous
La qualité est la métrique la plus difficile à surveiller automatiquement. Les tests unitaires traditionnels ne s'appliquent pas bien à la génération de texte ouverte. À la place, le LLMOps repose sur :
- Vérifications de similarité : Comparer le texte généré avec des ensembles de données de vérité terrain connus pour détecter la dérive.
- Scoring de confiance : Utiliser les logprobs du modèle lui-même pour identifier les réponses à faible confiance.
- Déclencheurs de garde-fous : Surveiller les sujets sensibles, les fuites de PII ou les contenus nuisibles à l'aide de modèles de classification distincts.
- Boucles de retour utilisateur : Intégrer les retours explicites (pouce vers le haut/vers le bas) de l'interface utilisateur pour évaluer les sorties historiques.
La mise en œuvre d'un pipeline d'évaluation automatisé qui s'exécute sur un sous-ensemble échantillonné du trafic de production est une bonne pratique. Si le « score d'utilité » moyen passe sous un seuil, une alerte doit être déclenchée.
Conclusion
La surveillance de l'IA est une pratique holistique qui combine les métriques SRE traditionnelles avec des évaluations linguistiques novatrices. En suivant le TTFT, en gérant les coûts par un étiquetage granulaire et en échantillonnant continuellement pour détecter la dérive de qualité, vous construisez une application LLM résiliente. À mesure que les modèles évoluent, nos piles d'observabilité doivent également évoluer. Commencez petit avec un suivi de base de la latence et des erreurs, puis ajoutez des métriques de qualité à mesure que votre système mûrit. Dans le monde du LLMOps, on ne peut pas gérer ce qu'on ne mesure pas.