Chapitre 2 : Différences avec les MLOps traditionnels
Comparaison MLOps vs LLMOps
| Aspect | MLOps traditionnels | LLMOps |
|---|---|---|
| Taille du modèle | MB à GB | GB à TB |
| Entraînement | Réentraînement fréquent | Ajustement fin ou prompt |
| Entrée | Caractéristiques structurées | Langage naturel |
| Sortie | Scores/classes | Texte généré |
| Évaluation | Métriques (AUC, F1) | Qualité, sécurité, pertinence |
| Latence | ms | secondes |
| Facteur de coût | Calcul | Jetons |
Défis uniques des LLMOps
1. Ingénierie des prompts
Le ML traditionnel n'a pas de "prompts" - les LLM nécessitent une conception minutieuse des prompts :
# Prompt simple
prompt_v1 = "Résumez ce document : {document}"
# Prompt amélioré avec contraintes
prompt_v2 = """Vous êtes un professionnel du résumé.
Résumez le document suivant en 3 points.
Gardez chaque point sous 20 mots.
Concentrez-vous sur les faits et chiffres clés.
Document : {document}
Résumé :"""
2. Sorties non déterministes
# Même entrée, sorties différentes
for i in range(3):
response = llm.generate("Écrivez un haïku sur Python")
print(f"Tentative {i+1} : {response}")
# La sortie varie à chaque fois !
3. Tarification basée sur les jetons
def calculate_cost(input_tokens: int, output_tokens: int, model: str):
pricing = {
"gpt-4": {"input": 0.03, "output": 0.06},
"gpt-3.5-turbo": {"input": 0.0005, "output": 0.0015},
"claude-3-opus": {"input": 0.015, "output": 0.075},
}
input_cost = (input_tokens / 1000) * pricing[model]["input"]
output_cost = (output_tokens / 1000) * pricing[model]["output"]
return input_cost + output_cost
Suivant : Chapitre 3 : Défis spécifiques aux LLM