Knowledge Distillation

term_id: knowledge_distillation

Category: training_techniques

Definition

Knowledge distillation er en maskinlæringsmetode, der bruges til at komprimere et stort, komplekst neuralt netværk (’teacher’) til et mindre, mere effektivt netværk (‘student’). Student-modellen trænes til at efterligne teacher-modellens output.

Summary

Knowledge distillation er en teknik til modelkomprimering, hvor en mindre ‘student’-model lærer at efterligne adfærden hos en større ’teacher’-model.

Key Concepts

  • Teacher-Student Model
  • Modelkomprimering
  • Bløde mål (soft targets)
  • Effektivitet

Use Cases

  • Udrulning af modeller på edge-enheder
  • Reduktion af inferenslatens
  • Sænkning af omkostninger til cloud-computing

Code Example

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import torch
import torch.nn as nn

def distillation_loss(student_logits, teacher_logits, temperature=2.0):
    T = temperature
    student_probs = nn.functional.softmax(student_logits / T, dim=1)
    teacher_probs = nn.functional.softmax(teacher_logits / T, dim=1)
    return nn.functional.kl_div(
        nn.functional.log_softmax(student_logits / T, dim=1),
        teacher_probs,
        reduction='batchmean'
    ) * (T * T)