Destilación de Conocimiento

term_id: knowledge_distillation

Category: training_techniques

Definition

La destilación de conocimiento es un método de aprendizaje automático utilizado para comprimir una red neuronal grande y compleja (el maestro) en una red más pequeña y eficiente (el estudiante). El modelo estudiante se entrena para

Summary

La destilación de conocimiento es una técnica de compresión de modelos donde un modelo estudiante más pequeño aprende a imitar el comportamiento de un modelo maestro más grande.

Key Concepts

  • Modelo Maestro-Estudiante
  • Compresión de Modelo
  • Objetivos Suaves
  • Eficiencia

Use Cases

  • Despliegue de modelos en dispositivos periféricos
  • Reducción de la latencia de inferencia
  • Reducción de costos de computación en la nube

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)