Knowledge Distillation

term_id: knowledge_distillation

Category: training_techniques

Definition

Knowledge Distillation je metoda strojového učení používaná ke kompresi velké, složité neuronové sítě (učitel) do menší, efektivnější sítě (student). Model studenta je trénován tak, aby napodobil výstupy učitele.

Summary

Knowledge Distillation je technika komprese modelu, při které se menší model studenta učí napodobovat chování většího modelu učitele.

Key Concepts

  • Model Učitel-Student
  • Komprese modelu
  • Měkké cíle (Soft Targets)
  • Efektivita

Use Cases

  • Nasazování modelů na okrajová zařízení (edge devices)
  • Snížení latence při inferenci
  • Snižování nákladů na cloudové výpočty

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)