slm-autonomo-lora

Adaptador LoRA para nvidia/Llama-3.1-Nemotron-Nano-4B-v1.1, entrenado con un pipeline autónomo de destilación: un LLM de OpenAI actúa como profesor (genera el currículo y las respuestas de referencia) y como juez (evalúa cada versión con una rúbrica), mientras el modelo pequeño (SLM) se ajusta localmente ronda a ronda.

Built with Llama.

Detalles del modelo

  • Developed by: Enrique Hernandez
  • Contexto: Ejercicio de demostración del pipeline SLM autónomo (profesor + juez + estudiante local)
  • Model type: Adaptador LoRA para modelo de lenguaje causal (decoder-only)
  • Language(s): Español
  • License: NVIDIA Open Model License + Llama 3.1 Community License (heredadas del modelo base)
  • Finetuned from model: nvidia/Llama-3.1-Nemotron-Nano-4B-v1.1 (4,5 B parámetros)
  • Qué se publica: solo el adaptador (≈ 120 MB); el modelo base se descarga desde Hugging Face

Dominio

Asistente experto en inteligencia artificial generativa aplicada a empresas. Temas del currículo:

  • Fundamentos de LLM
  • RAG y búsqueda semántica
  • Ajuste fino y destilación
  • Evaluación y LLMOps

Cómo usarlo

from peft import AutoPeftModelForCausalLM
from transformers import AutoTokenizer

repo = "enriquehernandezg/slm-autonomo-lora"
model = AutoPeftModelForCausalLM.from_pretrained(repo, dtype="auto", device_map="auto")
tok = AutoTokenizer.from_pretrained("nvidia/Llama-3.1-Nemotron-Nano-4B-v1.1")

messages = [
    {"role": "system", "content": "detailed thinking off"},  # así se entrenó: sin razonamiento largo
    {"role": "user", "content": "¿Qué es RAG y cuándo conviene usarlo en una empresa?"},
]
inputs = tok.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device)
out = model.generate(inputs, max_new_tokens=200, repetition_penalty=1.05)
print(tok.decode(out[0][inputs.shape[-1]:], skip_special_tokens=True))

El modelo base (~9 GB) se descarga automáticamente desde Hugging Face la primera vez.

Entrenamiento

Procedimiento (ciclo autónomo)

Ronda Qué ocurre
0 Taxonomía de temas → set de evaluación fijo (nunca se entrena con él) → nota base
r ≥ 1 Currículo adaptativo (más tareas en los temas débiles) → el profesor responde → entrenamiento LoRA con datos nuevos + repaso → el juez califica → se promueve, acepta o revierte el checkpoint

Datos

Pares instrucción–respuesta sintéticos generados por la API de OpenAI (profesor), con deduplicación y filtro de calidad: 40 tareas nuevas por ronda (30 % básicas, 50 % intermedias, 20 % avanzadas). El checkpoint publicado (ronda 2) se entrenó con 59 ejemplos (datos nuevos + 50 % de repaso; 1 descartado por el filtro).

Hiperparámetros

Parámetro Valor
LoRA r / alpha / dropout 16 / 32 / 0,05
Módulos q, k, v, o, gate, up, down (proyecciones)
Parámetros entrenables 30,4 M (≈ 0,67 % de 4,54 B)¹
Learning rate 2e-4 (warmup 5 %)
Batch efectivo 8 (1 × 8 de acumulación)
Épocas por ronda 1
Pasos de optimización 13 en total (5 en la ronda 1 + 8 en la ronda 2)
Largo máximo de secuencia 256 tokens
Cuantización del modelo base QLoRA, 4 bits NF4 (cómputo en bf16)

¹ El log del entrenamiento reporta 1,13 % porque, con 4 bits, bitsandbytes cuenta los pesos empaquetados (2,68 B en lugar de 4,54 B).

Hardware y costo

  • GPU NVIDIA GeForce RTX 3050 Laptop de 4 GB (Windows), 16,9 GB de RAM; memoria pico reportada de 6,9 GB durante el entrenamiento
  • Tiempo de entrenamiento: 427 s (7 min 7 s) · corrida completa: ≈ 17 min (incluye generación y evaluación)
  • Costo total de la API de OpenAI: US$ 0,27 (126 llamadas)

Evaluación

Juez LLM con rúbrica de 4 criterios (1–10) contra la respuesta de referencia, sobre un set fijo de 8 preguntas.

Ronda Decisión Nota media Δ
0 (modelo base) — 2,25 —
1 promovido 2,75 +0,50
2 (este checkpoint) promovido 3,00 +0,25

Mejora acumulada: +0,75 puntos (+33 % sobre la base). Aprobación (nota ≥ 7): 0 % en todas las rondas.

Detalle de la ronda 2 por criterio (base entre paréntesis): corrección 3,9 (3,8) · completitud 2,1 (1,4) · claridad 3,4 (3,1) · idioma y formato 7,0 (5,6).

Por tema en la ronda 2 (base entre paréntesis): Fundamentos de LLM 4,0 (2,5) · Evaluación y LLMOps 3,0 (2,0) · Ajuste fino y destilación 2,5 (2,0) · RAG y búsqueda semántica 2,5 (2,5).

Limitaciones

  • Es una corrida de demostración corta (2 rondas, 59 ejemplos de la última ronda, 8 preguntas de evaluación), con un presupuesto de US$ 2. La nota mejora de forma sostenida, pero sigue muy lejos del umbral de aprobación (7/10): no debe usarse en producción.
  • Debilidades que detectó el juez: respuestas incompletas o truncadas (límite de 160 tokens de generación), confusiones conceptuales (por ejemplo, expandir mal la sigla RAG o confundir búsqueda semántica con coincidencia de palabras) y planes demasiado genéricos en ajuste fino y destilación.
  • El set de evaluación es pequeño (n = 8; desviación estándar de 0,71 en la ronda 2), así que las notas tienen una varianza alta y una diferencia de ±0,25 entre rondas puede ser ruido.
  • Hereda los sesgos y limitaciones del modelo base y del modelo profesor.

Uso responsable

  • Uso educativo. Los datos de entrenamiento se generaron con la API de OpenAI. Los términos de OpenAI restringen usar sus salidas para desarrollar modelos que compitan con OpenAI.
  • Distribuido bajo las licencias del modelo base: NVIDIA Open Model License y Llama 3.1 Community License.
  • No se usaron datos personales ni confidenciales.

Framework versions

  • PEFT 0.21.2 · Transformers 5.18.0 · PyTorch 2.5.1+cu121 · bitsandbytes 0.50.2
Downloads last month
23
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for enriquehernandezg/slm-autonomo-lora