Vue d'ensemble
La distillation de connaissance transfère les connaissances d'un modèle enseignant plus grand à un modèle étudiant plus petit. Combinée au pruning et à la quantification, elle forme l'étape cruciale au milieu du pipeline de compression P-KD-Q.
Installation
uv pip install kd-lib
Distillation de logits
from kd_lib import distill
import torch.nn.functional as F
def kd_loss(student_logits, teacher_logits, labels, temperature=4.0, alpha=0.5):
soft_targets = F.softmax(teacher_logits / temperature, dim=-1)
soft_prob = F.log_softmax(student_logits / temperature, dim=-1)
kd = F.kl_div(soft_prob, soft_targets, reduction="batchmean") * (temperature ** 2)
ce = F.cross_entropy(student_logits, labels)
return alpha * kd + (1 - alpha) * ce
Méthodes de distillation
| Méthode | Ce qu'elle transfère | Idéale pour |
|---|---|---|
| Distillation de logits | Distribution de probabilité de sortie | Classification, génération |
| Distillation de features | États cachés intermédiaires | Couches Transformer |
| Distillation de relations | Relations entre représentations | Sorties structurées |
| Auto-distillation | Le modèle s'enseigne lui-même | Pas d'enseignant requis |
| Distillation en ligne | Enseignant et étudiant s'entraînent conjointement | Les deux modèles s'améliorent |