knowledge-distillation

Par mkurman · zorai

Techniques de distillation de connaissances pour la compression de modèles : distillation au niveau des logits, au niveau des features et par relations. Bibliothèque KD-Lib et workflows pratiques pour l'entraînement de modèles étudiants.

npx skills add https://github.com/mkurman/zorai --skill knowledge-distillation

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

Références

Skills similaires