Zum Hauptinhalt

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.

AIExpertemodel-compressiontransfer-learningefficient-inference

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

VarianteBeschreibung
Response-basedStudent imitiert Teacher-Outputs (Logits)
Feature-basedStudent imitiert interne Repräsentationen (Hidden States)
Relation-basedStudent 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.

Inhouse statt Nachschlagewerk

Für den Transfer ins Unternehmen sind die Inhouse-Schulungen der passende nächste Schritt.