← Retour au blog

Diviser par deux le coût d'un LLM, les vrais chiffres de la distillation

Lucian BLETAN

Faire tourner un grand modèle de langage en production coûte cher. Très cher. Pour notre service de classification de tickets de support, nous utilisions un modèle de 7 milliards de paramètres qui, bien que précis, représentait 40% de notre facture d’infrastructure IA. La sortie des nouvelles librairies de compression, qui simplifient grandement la distillation et la quantification, a été l’occasion de tester une approche radicale : pouvions-nous obtenir une qualité similaire avec un modèle 4 fois plus petit ? La réponse est oui. En distillant notre modèle 7B vers un modèle spécialisé de 1.5B, puis en le quantifiant en INT8, nous avons réduit les coûts d’inférence de 60% et la latence de 70%, pour une perte de précision de moins de 2%.

la distillation expliquée simplement

La distillation consiste à utiliser un grand modèle performant (le “professeur”) pour entraîner un modèle plus petit et plus rapide (l‘“élève”). L’élève n’apprend pas directement à partir des données brutes, mais en essayant d’imiter les prédictions (les “logits”) du professeur. Il apprend ainsi une version “compressée” et spécialisée de la connaissance du grand modèle.

phase de production (online)

requête

petit modèle distillé

prédiction rapide & peu coûteuse

phase d'entraînement (offline)

génère des prédictions 'douces' (logits)

sert d'entrée

données non labellisées

grand modèle 'professeur' (ex: 7b)

entraînement du petit modèle 'élève' (ex: 1.5b)

notre processus, étape par étape

1. choisir le bon élève

Inutile de réinventer la roue. Nous avons choisi une architecture de base de 1.5B de paramètres, connue pour être efficace sur les tâches de classification et disponible sur Hugging Face.

2. la distillation

Grâce aux nouvelles librairies, le processus de distillation, qui était autrefois complexe, se résume à un script d’entraînement qui prend deux modèles en entrée. Le plus important est de disposer d’un grand corpus de données non labellisées (environ 100,000 exemples dans notre cas) représentatives de notre trafic de production.

# Pseudo-code simplifié avec une librairie type Hugging Face `optimum`
from optimum.distillation import Distiller

# Initialiser le distillateur avec le professeur et un élève non entraîné
distiller = Distiller(
    teacher_model="path/to/teacher/7b",
    student_model="path/to/student/1.5b",
    training_dataset=unlabeled_dataset,
)

# Lancer le processus
distiller.train()

# Sauvegarder le modèle élève, maintenant entraîné
distiller.save_student("models/distilled_1.5b")

3. la quantification

La distillation réduit le nombre de paramètres. La quantification, elle, réduit la précision de chaque paramètre (ex: de float32 à int8), ce qui diminue encore la taille du modèle et accélère le calcul.

# Quantification post-entraînement avec ONNX Runtime
from onnxruntime.quantization import quantize_dynamic, QuantType

quantize_dynamic(
    model_input="models/distilled_1.5b.onnx",
    model_output="models/distilled_1.5b_int8.onnx",
    weight_type=QuantType.QInt8,
)

les résultats: un avant/après sans appel

MétriqueModèle 7B (FP16)Modèle 1.5B distillé (INT8)Gain
Précision (F1-score)0.910.895-1.6% (acceptable)
Latence p95 (ms)180 ms55 ms-69%
Coût pour 1M d’inférences~250 €~100 €-60%
Taille du modèle (Go)14 Go1.5 Go-89%

leçons et recommandations

  • Commencez par la quantification: Si vous ne pouvez pas faire de distillation, la quantification dynamique seule peut déjà vous apporter un gain de performance et de coût de 30 à 50%.
  • La qualité des données de distillation est clé: L’élève apprendra les biais et les erreurs du professeur. Assurez-vous que les données non labellisées utilisées pour la distillation sont propres et représentatives.
  • Mesurez tout: Mettez en place un A/B test pour comparer la performance métier (pas seulement technique) du nouveau modèle par rapport à l’ancien avant de basculer 100% du trafic.

faq

  • La distillation ne fait-elle pas perdre trop d’information ? Pour des tâches très spécialisées comme la classification, la perte est souvent minime. Le grand modèle “professeur” a une connaissance généraliste immense qui n’est pas nécessaire pour la tâche spécifique. L’élève se contente d’apprendre la partie pertinente.

  • Quel est le coût de la distillation elle-même ? Il n’est pas nul. Il faut faire tourner le modèle professeur sur tout le corpus de distillation, ce qui a un coût. Cependant, cet investissement initial est généralement rentabilisé en quelques semaines ou mois grâce aux économies sur l’inférence.

  • Cette approche fonctionne-t-elle pour des tâches génératives (texte) ? Oui, mais c’est plus complexe. La distillation peut affecter la créativité et la cohérence du texte généré. Il faut une évaluation qualitative plus poussée, souvent avec un jugement humain.