Saltar al contenido principal

Distilación de Conocimiento

Entrena modelos más pequeños y rápidos que imitan el comportamiento de modelos profesor más grandes.

¿Qué es la Distilación?

La distilación de conocimiento transfiere conocimiento de un modelo “profesor” grande a un modelo “alumno” más pequeño. El alumno aprende a producir salidas similares al profesor, ganando capacidades más allá de lo que podría aprender solo con datos.

Inicio Rápido

aitraining llm --train \
  --model google/gemma-3-270m \
  --teacher-model google/gemma-2-2b \
  --data-path ./prompts.jsonl \
  --project-name distilled-model \
  --use-distillation \
  --distill-temperature 3.0

Python API

from autotrain.trainers.clm.params import LLMTrainingParams
from autotrain.project import AutoTrainProject

params = LLMTrainingParams(
    # Student model (smaller)
    model="google/gemma-3-270m",

    # Teacher model (larger)
    teacher_model="google/gemma-2-2b",

    # Data
    data_path="./prompts.jsonl",
    project_name="distilled-gemma",

    # Enable distillation
    use_distillation=True,
    distill_temperature=3.0,   # Default: 3.0
    distill_alpha=0.7,         # Default: 0.7
    distill_max_teacher_length=512,  # Default: 512

    # Training
    trainer="sft",
    epochs=5,
    batch_size=4,
    lr=1e-4,
)

project = AutoTrainProject(params=params, backend="local", process=True)
project.create()

Parámetros

ParámetroDescripciónPor Defecto
use_distillationHabilitar distilaciónFalse
teacher_modelRuta al modelo profesorRequerido cuando use_distillation=True
distill_temperatureTemperatura softmax (2.0-4.0 recomendado)3.0
distill_alphaPeso de pérdida de distilación0.7
distill_max_teacher_lengthMáximo de tokens para el profesor512
teacher_prompt_templatePlantilla para prompts del profesorNone
student_prompt_templatePlantilla para prompts del alumno"{input}"

Temperatura

Temperaturas más altas hacen que la distribución de probabilidad del profesor sea más suave, facilitando el aprendizaje del alumno:
  • 1.0: Probabilidades normales
  • 2.0-4.0: Más suave, más enseñable (recomendado)
  • >4.0: Muy suave, puede perder precisión

Alpha

Controla el equilibrio entre distilación y pérdida estándar:
  • 0.0: Solo pérdida estándar (sin distilación)
  • 0.5: Equilibrio igual
  • 0.7: Por defecto (más peso en distilación)
  • 1.0: Solo pérdida de distilación

Plantillas de Prompts

Personaliza cómo se formatean los prompts para modelos profesor y alumno:
params = LLMTrainingParams(
    ...
    use_distillation=True,
    teacher_prompt_template="<|system|>You are helpful.<|user|>{input}<|assistant|>",
    student_prompt_template="{input}",
)
Usa {input} como el marcador de posición para el texto real del prompt.

Formato de Datos

Los prompts simples funcionan bien para distilación:
{"text": "What is machine learning?"}
{"text": "Explain how neural networks work."}
{"text": "Write a function to sort a list in Python."}
O con salidas esperadas:
{"prompt": "What is AI?", "response": "..."}

Mejores Prácticas

Elige Modelos Sabiamente

  • El profesor debe ser significativamente más grande (4x+ parámetros)
  • La misma familia de arquitectura suele funcionar mejor
  • El profesor debe ser capaz en la tarea objetivo

Ajuste de Temperatura

# Conservador (profesor es incierto)
distill_temperature=2.0

# Estándar (mayoría de casos, por defecto)
distill_temperature=3.0

# Agresivo (profesor es confiado) - en el rango superior recomendado
distill_temperature=4.0
El rango de temperatura recomendado es 2.0-4.0. Valores por encima de 4.0 pueden perder precisión.

Duración del Entrenamiento

La distilación a menudo se beneficia de entrenamiento más largo:
params = LLMTrainingParams(
    ...
    epochs=5,  # Más épocas que fine-tuning estándar
    lr=1e-4,   # Tasa de aprendizaje ligeramente mayor
)

Ejemplo: Asistente de API

Distilar conocimiento de API de un modelo grande:
params = LLMTrainingParams(
    model="google/gemma-3-270m",
    teacher_model="meta-llama/Llama-3.2-8B",
    data_path="./api_prompts.jsonl",
    project_name="api-assistant-small",

    use_distillation=True,
    distill_temperature=3.0,
    distill_alpha=0.7,

    epochs=10,
    batch_size=8,
    lr=5e-5,
    peft=True,
    lora_r=32,
)

Comparación

Sin Distilación

# Fine-tuning estándar en modelo 270M
aitraining llm --train \
  --model google/gemma-3-270m \
  --data-path ./data.jsonl \
  --project-name standard-model

Con Distilación

# Distilación del modelo 2B
aitraining llm --train \
  --model google/gemma-3-270m \
  --teacher-model google/gemma-2-2b \
  --data-path ./data.jsonl \
  --project-name distilled-model \
  --use-distillation
El modelo distilado típicamente tiene mejor rendimiento, especialmente en tareas complejas.

Casos de Uso

  • Despliegue: Crear modelos rápidos para producción
  • Dispositivos de borde: Ejecutar en sistemas móviles/embebidos
  • Reducción de costos: Reducir costos de inferencia
  • Especialización: Enfocar conocimiento de modelo grande en dominio específico

Próximos Pasos