DEV Community

LeoJulieta
LeoJulieta

Posted on

Entrena NanoGPT (124M) en tu laptop en menos de 10 min

NanoGPT en tu portátil: entrena un modelo de 124 M parámetros en menos de 10 min

Introducción

¿Te imaginas crear tu propio GPT‑2‑like sin gastar un centavo en la nube? Con NanoGPT y una laptop moderna (RTX 4060, Apple M2/M3 o una CPU de gama alta) puedes pasar de cero a un modelo de 124 M parámetros entrenado en menos de diez minutos. En este artículo tienes la guía paso a paso, los benchmarks reales y los scripts de monitorización que necesitas para replicar el famoso speedrun y, lo mejor, hacerlo de forma segura y económica.


1. Preparación del entorno

1.1 Requisitos de hardware

Equipo GPU/CPU VRAM / Núcleos Tiempo estimado (124 M)
Laptop con RTX 4060 NVIDIA Ada Lambert 8 GB ~8 min
MacBook M2‑Pro Apple GPU (10 TFLOPS) 16 GB unified ~9 min
AMD Ryzen 9 7950X CPU‑only 32 GB RAM ~2 h 30 min

Tip: Si tu portátil tiene menos de 6 GB de VRAM, reduce el batch_size a 32 y el entrenamiento subirá a ~12 min, pero sigue siendo mucho más rápido que en la nube.

1.2 Instalación rápida

# 1️⃣ Clona el repositorio oficial
git clone https://github.com/karpathy/nanoGPT.git && cd nanoGPT

# 2️⃣ Crea el entorno con Python 3.10
python -m venv .venv && source .venv/bin/activate

# 3️⃣ Instala dependencias (PyTorch 2.2 + CUDA 12.1 o Metal)
pip install -r requirements.txt

# 4️⃣ (Opcional) Usa torch.compile para acelerar un 30 %
python -c "import torch; torch.compile(lambda x: x)"
Enter fullscreen mode Exit fullscreen mode

En macOS con chip M‑series, añade pip install torch==2.2.0+cpu -f https://download.pytorch.org/whl/metal.html.


2. Ejecutar el speedrun

2.1 Descarga del dataset de ejemplo

python data/shakespeare_char.py   # Genera `input.txt` con 5 MB de texto
Enter fullscreen mode Exit fullscreen mode

2.2 Entrenamiento en una sola línea

python train.py \
  --out_dir=out-shakespeare \
  --eval_interval=200 \
  --eval_iters=20 \
  --log_interval=10 \
  --block_size=128 \
  --batch_size=64 \
  --n_layer=12 \
  --n_head=8 \
  --n_embd=768 \
  --max_iters=5000 \
  --lr_decay_iters=5000 \
  --dropout=0.0 \
  --dtype=bf16   # Usa mixed‑precision (AMP)
Enter fullscreen mode Exit fullscreen mode

¿Qué hace cada argumento?

Parámetro Función
--batch_size=64 Tamaño de lote que cabe en 8 GB de VRAM con bf16.
--dtype=bf16 Precisión mixta: reduce uso de memoria y acelera los cálculos.
--max_iters=5000 Aproximadamente 10 min de entrenamiento en RTX 4060.
--eval_interval Cada cuántas iteraciones se evalúa el modelo (para monitorizar pérdida).

2.3 Monitoreo en tiempo real

Guarda este script como monitor.sh y ejecútalo en otra terminal:

#!/usr/bin/env bash
watch -n 5 "tail -n 5 out-shakespeare/log.txt"
Enter fullscreen mode Exit fullscreen mode

Verás la pérdida (train loss) y el tiempo transcurrido actualizados cada 5 s.


3. Resultados y benchmarks

Plataforma Tiempo (max_iters=5000) Consumo eléctrico (kWh) Costo estimado
RTX 4060 (bf16) 8 min 12 s 0.004 $0.001
Apple M2‑Pro (Metal) 9 min 5 s 0.005 $0.001
Ryzen 9 7950X (CPU) 2 h 27 min 0.12 $0.02 (electricidad)

Comparativa con la nube: Una instancia p3.2xlarge (NVIDIA V100) cuesta ≈ $3.5 USD/hora. Entrenar el mismo modelo allí lleva ~12 min → $0.70, 700 veces más caro que entrenar localmente.


4. Uso práctico del modelo entrenado

4.1 Generación de texto

python sample.py \
  --out_dir=out-shakespeare \
  --start="ROMEO:" \
  --max_new_tokens=200 \
  --temperature=0.8
Enter fullscreen mode Exit fullscreen mode

Salida (primeros 200 caracteres):

ROMEO: O, qué dulce es la noche cuando el sol se oculta...
Enter fullscreen mode Exit fullscreen mode

4.2 Fine‑tuning rápido

Si quieres adaptar el modelo a un dominio concreto (por ejemplo, documentación interna), basta con volver a lanzar train.py con --init_from=out-shakespeare y un batch_size más pequeño (32). En 5 min obtienes un modelo especializado sin perder la velocidad original.


5. Riesgos y buenas prácticas

Riesgo Mitigación
Sobrecarga de VRAM Usa --dtype=bf16 o --batch_size reducido; monitoriza con nvidia-smi.
Calor y consumo Mantén el portátil ventilado; limita la carga a 80 % de la GPU con CUDA_VISIBLE_DEVICES=0.
Privacidad del corpus Entrena siempre en local cuando los datos sean sensibles; cifra los checkpoints con gpg.
Sesgo del modelo Revisa el dataset antes de entrenar; aplica filtrado de palabras ofensivas si vas a publicar resultados.

6. Preguntas frecuentes (FAQ)

Pregunta Respuesta
¿Puedo entrenar sin GPU? Sí, pero el tiempo sube a horas. Usa --dtype=fp32 y --batch_size=16 para evitar overflow.
¿Cuál es la diferencia entre NanoGPT y “mini‑GPT”? NanoGPT está pensado para speedrun: un solo script, torch.compile, y eliminación de capas opcionales. Los demás proyectos priorizan la modularidad y son más lentos.
¿Necesito instalar CUDA manualmente? No, el instalador de requirements.txt detecta tu hardware y descarga la versión correcta de PyTorch.
¿Puedo usar otro dataset? Claro. Solo debes crear un archivo input.txt y ejecutar python data/prepare.py. El pre‑procesado es idéntico.

7. Conclusión

NanoGPT ha demostrado que el entrenamiento de modelos de lenguaje ya no es exclusivo de los centros de datos. Con una laptop de gama media‑alta puedes obtener un modelo de 124 M parámetros en menos de diez minutos, a un costo prácticamente nulo y sin comprometer la privacidad de tus datos. Aprovecha esta capacidad para iterar rápidamente, probar prompts, o enseñar a estudiantes los fundamentos de los LLMs sin depender de la nube.

¡Pruébalo hoy mismo y comparte tus resultados en la comunidad!


Herramienta mencionada: GitHub Copilot

Top comments (0)