> ## Documentation Index
> Fetch the complete documentation index at: https://docs.monostate.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Distilación de Prompts

> Entrena modelos más pequeños para imitar modelos más grandes

# 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

```bash theme={null}
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

```python theme={null}
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ámetro                    | Descripción                               | Por Defecto                              |
| ---------------------------- | ----------------------------------------- | ---------------------------------------- |
| `use_distillation`           | Habilitar distilación                     | `False`                                  |
| `teacher_model`              | Ruta al modelo profesor                   | Requerido cuando `use_distillation=True` |
| `distill_temperature`        | Temperatura softmax (2.0-4.0 recomendado) | `3.0`                                    |
| `distill_alpha`              | Peso de pérdida de distilación            | `0.7`                                    |
| `distill_max_teacher_length` | Máximo de tokens para el profesor         | `512`                                    |
| `teacher_prompt_template`    | Plantilla para prompts del profesor       | `None`                                   |
| `student_prompt_template`    | Plantilla 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:

```python theme={null}
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:

```json theme={null}
{"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:

```json theme={null}
{"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

```python theme={null}
# 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
```

<Note>
  El rango de temperatura recomendado es 2.0-4.0. Valores por encima de 4.0 pueden perder precisión.
</Note>

### Duración del Entrenamiento

La distilación a menudo se beneficia de entrenamiento más largo:

```python theme={null}
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:

```python theme={null}
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

```bash theme={null}
# 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

```bash theme={null}
# 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

<CardGroup cols={2}>
  <Card title="DPO Training" href="/advanced/dpo-training">
    Optimización de preferencias
  </Card>

  <Card title="LoRA/PEFT" href="/advanced/lora-peft">
    Fine-tuning eficiente
  </Card>
</CardGroup>
