Sobes.tech
Middle
33

Какие виды дистилляции моделей существуют?

Companies where asked
Магнит

Answer from AI

sobes.tech AI

Существуют несколько видов дистилляции моделей — методов передачи знаний от большой (teacher) модели к меньшей (student) с целью уменьшения размера и ускорения работы при сохранении качества:

  1. Классическая (логит-дистилляция) — студент обучается на «мягких» выходах учителя (soft targets), то есть на вероятностях классов, а не на жёстких метках. Это помогает студенту лучше понять распределение вероятностей.

  2. Дистилляция признаков (feature distillation) — студент пытается воспроизвести промежуточные представления (фичи) учителя, что помогает лучше захватить внутренние закономерности.

  3. Дистилляция внимания (attention distillation) — студент обучается имитировать карты внимания учителя, что полезно в трансформерах и других архитектурах с механизмом внимания.

  4. Дистилляция с помощью генеративных моделей — используется для создания дополнительных данных или для обучения студента на синтетических примерах.

  5. Онлайн-дистилляция — учитель и студент обучаются одновременно, что позволяет более гибко передавать знания.

Пример классической дистилляции на PyTorch:

import torch
import torch.nn.functional as F

def distillation_loss(student_logits, teacher_logits, labels, T=2.0, alpha=0.5):
    soft_targets = F.log_softmax(student_logits / T, dim=1)
    soft_labels = F.softmax(teacher_logits / T, dim=1)
    distill_loss = F.kl_div(soft_targets, soft_labels, reduction='batchmean') * (T * T)
    student_loss = F.cross_entropy(student_logits, labels)
    return alpha * distill_loss + (1 - alpha) * student_loss

Выбор метода зависит от задачи, архитектуры и требований к модели.