Knowledge Distillation
Knowledge Distillation ist eine Technik, bei der ein kleines 'Student'-Modell trainiert wird, das Verhalten eines großen 'Teacher'-Modells nachzuahmen – mit dem Ziel, ähnliche Leistung bei deutlich geringerem Ressourcenverbrauch zu erreichen.
Was ist Knowledge Distillation?
Knowledge Distillation (Wissensdestillation) ist eine Modellkomprimierungsmethode, bei der ein kompaktes Student-Modell das Wissen eines großen, vortrainierten Teacher-Modells übernimmt. Statt nur auf harten Labels (0/1) zu trainieren, lernt der Student aus den Soft Probabilities des Teachers – also den vollständigen Wahrscheinlichkeitsverteilungen über alle Klassen.
Diese Soft Labels enthalten wertvolle implizite Information: Ein Teacher, der bei einem Bild zwischen 'Katze' (70%) und 'Hund' (25%) schwankt, gibt dem Student mehr Signal als ein simples Label 'Katze'.
Warum ist das praktisch relevant?
- Deployment auf Edge-Geräten: Ein destilliertes Modell läuft auf Smartphones oder eingebetteten Systemen
- Geringere Latenz: Kleinere Modelle antworten schneller bei gleichwertiger Qualität
- Kosteneinsparung: Weniger GPU-Bedarf bei Inference in der Cloud
- Bekannte Beispiele: DistilBERT (40% kleiner als BERT, ~97% der Performance), TinyLLaMA
Wie funktioniert es technisch?
Die Loss-Funktion kombiniert zwei Terme:
import torch
import torch.nn.functional as F
def distillation_loss(student_logits, teacher_logits, true_labels, temperature=4.0, alpha=0.7):
"""
temperature: Weichere Wahrscheinlichkeiten beim Teacher (höher = weicher)
alpha: Gewichtung zwischen Distillation- und Task-Loss
"""
# Soft targets vom Teacher
soft_teacher = F.softmax(teacher_logits / temperature, dim=-1)
soft_student = F.log_softmax(student_logits / temperature, dim=-1)
# KL-Divergenz als Distillation-Loss
distill_loss = F.kl_div(soft_student, soft_teacher, reduction='batchmean') * (temperature ** 2)
# Klassischer Cross-Entropy-Loss auf echten Labels
task_loss = F.cross_entropy(student_logits, true_labels)
# Kombinierter Loss
return alpha * distill_loss + (1 - alpha) * task_loss
Varianten
| Variante | Beschreibung |
|---|---|
| Response-based | Student imitiert Teacher-Outputs (Logits) |
| Feature-based | Student imitiert interne Repräsentationen (Hidden States) |
| Relation-based | Student lernt Beziehungen zwischen Datenpunkten im Teacher |
Knowledge Distillation vs. Quantisierung
Beide Methoden verkleinern Modelle, aber auf unterschiedliche Weise:
- Quantisierung reduziert die Präzision der Gewichte (z.B. FP32 → INT8)
- Knowledge Distillation erzeugt ein strukturell kleineres Modell durch Training
In der Praxis werden beide Ansätze oft kombiniert: erst destillieren, dann quantisieren.
Praxis-Tipp
Für LLM-Anwendungen ist Knowledge Distillation besonders interessant, wenn ein großes proprietäres Modell (Teacher) genutzt wird, um ein kleines Open-Source-Modell (Student) via Fine-Tuning auf generierten Daten zu verbessern – ein Ansatz, der auch als Data Augmentation through Distillation bekannt ist.
Verwandte Begriffe
Inhouse statt Nachschlagewerk
Für den Transfer ins Unternehmen sind die Inhouse-Schulungen der passende nächste Schritt.