SLM autónomo · SmolLM2-360M destilado desde OpenAI
Ejercicio del curso Tópicos Avanzados en IA 2 · Máster en IA (UAI).
Un modelo pequeño (SLM) que corre en un notebook y se entrenó de forma autónoma con el repositorio slm-autonomo: un LLM grande de la API de OpenAI actúa como profesor (genera el currículo y las respuestas modelo) y como juez (califica al estudiante), mientras el SLM local aprende por ajuste fino supervisado con LoRA.
Cómo se entrenó
| Modelo base (estudiante) | HuggingFaceTB/SmolLM2-360M-Instruct |
| Profesor / currículo / juez | OpenAI gpt-6-sol / gpt-6-luna / gpt-6-sol |
| Método | QLoRA (base en 4 bits NF4) · LoRA r = 16, α = 32 · 8,7 M parámetros entrenables (4,1 %) |
| Dominio | IA generativa aplicada a empresas en Chile y Latinoamérica |
| Temas | Fundamentos de LLM · RAG y búsqueda semántica · Ajuste fino y destilación · Evaluación y LLMOps |
| Rondas | 2 (40 ejemplos nuevos del profesor por ronda) |
| Evaluación | set fijo de 8 preguntas, nunca usado en entrenamiento, calificado de 0 a 10 por el juez |
| Hardware | NVIDIA GeForce RTX 3050 Laptop (4 GB VRAM), Windows 11 |
| Costo de API | US$ 0,27 (125 llamadas) |
Este repositorio contiene el modelo fusionado (base + LoRA de la ronda 2), exportado con python export.py.
Resultados
| Ronda | Nota del juez (0–10) |
|---|---|
| 0 · modelo base sin entrenar | 1,38 |
| 1 | 1,25 |
| 2 · este modelo | 1,38 |
Con un modelo de 360 M parámetros y solo dos rondas cortas, el entrenamiento no alcanzó a mejorar la nota: el ejercicio demuestra el flujo completo (currículo → destilación → evaluación → checkpoint → exportación), no un modelo listo para producción. Más rondas y un estudiante más grande deberían mostrar mejoras.
El archivo dashboard.html muestra las métricas de la corrida (notas, pérdida, gasto).
Uso
from transformers import AutoModelForCausalLM, AutoTokenizer
repo = "RogWV/slm-autonomo-smollm2"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo)
msgs = [{"role": "user", "content": "¿Qué es RAG y para qué sirve en una empresa?"}]
ids = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt")
out = model.generate(ids, max_new_tokens=160)
print(tok.decode(out[0][ids.shape[-1]:], skip_special_tokens=True))
Limitaciones
- Modelo académico de demostración: sus respuestas pueden ser imprecisas o inventadas.
- El estudiante hereda sesgos y errores del profesor; el juez también es un LLM y puede equivocarse.
- Los términos de uso de OpenAI restringen usar sus salidas para desarrollar modelos que compitan con OpenAI.