Knowledge Distillation
La distillation de connaissances entraîne un petit modèle étudiant à imiter les sorties ou les caractéristiques d’un modèle enseignant plus grand, afin d’en conserver une grande partie de la précision avec beaucoup moins de calcul.
La distillation de connaissances est une technique de compression de modèle qui consiste à entraîner un petit réseau neuronal « élève » à reproduire le comportement d’un modèle « enseignant » plus grand et plus précis. L’élève apprend à partir des probabilités de sortie ou des caractéristiques internes de l’enseignant, en plus ou à la place des étiquettes de référence. Ces cibles plus riches lui permettent d’atteindre une précision supérieure à celle de la même architecture entraînée uniquement sur les étiquettes. On obtient ainsi un modèle assez rapide et compact pour les téléphones, les cartes embarquées et d’autres appareils d’IA en périphérie, tout en conservant une grande partie de la qualité de l’enseignant. En 2006, Buciluǎ, Caruana et Niculescu-Mizil ont montré que les connaissances d’un ensemble de modèles pouvaient être comprimées dans un seul modèle ; en 2015, Hinton, Vinyals et Dean ont nommé cette approche la distillation de connaissances et présenté les cibles adoucies par la température, encore utilisées par la plupart des méthodes.
Comment fonctionne la distillation de connaissances#
Une étiquette indique seulement qu’une image représente un loup. La sortie softmax d’un enseignant entraîné en dit davantage : l’image ressemble un peu à un husky, légèrement à un chat et pas du tout à une voiture. Ces probabilités relatives des classes incorrectes, souvent appelées connaissances sombres, sont transmises à l’élève sous forme de cibles souples. La division des logits par une température T supérieure à 1 avant le softmax aplatit la distribution, de sorte que les petites probabilités aient suffisamment de poids pour être apprises. La perte de distillation correspond à la divergence de Kullback-Leibler entre les distributions adoucies de l’enseignant et de l’élève, multipliée par T² afin que ses gradients restent d’une amplitude comparable à ceux de la perte habituelle sur les étiquettes :
import torch
import torch.nn.functional as F
# Logits for one wolf photo over the classes [wolf, husky, cat, car]
teacher_logits = torch.tensor([[6.0, 4.0, 1.0, -2.0]])
student_logits = torch.tensor([[4.0, 1.0, 1.5, 0.0]])
# Dividing logits by a temperature T > 1 softens the teacher's distribution
for T in (1.0, 4.0):
probs = F.softmax(teacher_logits / T, dim=1)
print(f"T={T}: teacher probabilities {[round(p, 3) for p in probs[0].tolist()]}")
# Distillation loss: KL divergence between the softened distributions, scaled by T^2
T = 4.0
soft_targets = F.softmax(teacher_logits / T, dim=1)
student_log_probs = F.log_softmax(student_logits / T, dim=1)
loss = F.kl_div(student_log_probs, soft_targets, reduction="batchmean") * T**2
print(f"Distillation loss at T={T}: {loss.item():.3f}")À T=1, l’enseignant attribue au loup une probabilité de 0.875 et seulement 0.006 au chat et 0.0 à la voiture. À T=4, les mêmes logits deviennent 0.493, 0.299, 0.141 et 0.067. L’élève comprend ainsi qu’un loup ressemble davantage à un husky qu’à un chat, et qu’un chat ressemble davantage à un husky qu’à une voiture. L’élève minimise cette perte, ici de 1.244, généralement sous la forme d’une somme pondérée avec sa perte de tâche habituelle calculée sur les étiquettes de référence. L’enseignant reste gelé pendant tout le processus et n’effectue que des passes avant :
Types de distillation#
- Fondée sur les sorties : L’élève reproduit les sorties finales de l’enseignant, comme dans la méthode des cibles souples ci-dessus, et n’a besoin de rien d’autre que de ses logits. DistilBERT a combiné cette approche à la modélisation du langage et aux pertes d’états cachés pendant le préentraînement pour rendre BERT 40 % plus compact et 60 % plus rapide, tout en conservant 97 % de ses capacités de compréhension du langage.
- Fondée sur les caractéristiques : L’élève reproduit les cartes de caractéristiques intermédiaires de l’enseignant, avec un petit projecteur appris pour compenser toute différence dans le nombre de canaux. FitNets a introduit ces « indices » et entraîné un élève ayant environ 10.4 fois moins de paramètres que son enseignant, mais obtenant de meilleurs résultats que lui sur CIFAR-10.
- Au niveau de la séquence : Un enseignant fondé sur un modèle de langage génère du texte, et l’élève est affiné sur ces sorties. DeepSeek a affiné ses modèles distillés R1, fondés sur Qwen2.5 et Llama 3, à partir de 800,000 échantillons sélectionnés avec DeepSeek-R1.
La distillation fondée sur les caractéristiques convient aux détecteurs, dont les sorties sont des milliers de boîtes et de scores plutôt qu’une seule distribution de classes. Ultralytics YOLO utilise cette méthode lorsque l’entraînement reçoit un enseignant distill_model : un modèle YOLO26 plus grand et gelé fournit les trois cartes de caractéristiques du cou qui alimentent sa tête de détection, et l’élève les reproduit au moyen de projecteurs de convolution 1×1, sous une perte L2 pondérée par la confiance de l’enseignant et mise à l’échelle par dis (6.0 par défaut). Sur COCO val2017, le modèle nano YOLO26 distillé atteint 41.5 en mAP50-95, contre 40.9 pour le même modèle entraîné sans enseignant, à coût d’inférence identique.
from ultralytics import YOLO
# Élève : le modèle YOLO26 nano compact qui sera déployé
model = YOLO("yolo26n.pt")
# Enseignant : un checkpoint YOLO26 plus grand qui guide l’entraînement, puis est écarté
results = model.train(data="coco8.yaml", epochs=5, distill_model="yolo26s.pt")Distillation et termes apparentés#
- Apprentissage par transfert : Réutilise les propres poids d’un modèle comme point de départ pour une nouvelle tâche. La distillation entraîne une architecture différente, généralement plus petite, à imiter un modèle sur la même tâche.
- Élagage de modèle : Supprime des poids, des canaux ou des couches d’un réseau entraîné. Les modèles élagués sont souvent affinés par distillation à partir du modèle d’origine afin de retrouver leur précision.
- Quantification de modèle : Stocke les poids et les activations avec une précision réduite, par exemple INT8. Elle réduit la taille de la même architecture et se combine à la distillation, qui choisit une architecture plus petite.
- Ensemble de modèles : Calcule la moyenne des sorties de plusieurs modèles au moment de l’inférence. La distillation d’un ensemble dans un seul élève était la motivation initiale de cette technique.
- Distillation de jeux de données : malgré son nom similaire, elle compresse un jeu de données plutôt qu’un modèle. Wang et al. ont compressé les 60 000 images d’entraînement de MNIST en 10 images synthétiques, une par classe, qui permettent à un réseau doté d’une initialisation fixe d’approcher sa précision d’origine en quelques étapes de gradient.










