Framework para definir modelos de aprendizaje automático de última generación de texto, visión, audio y modalidades múltiples, para inferencia y entrenamiento.
karpathy/nanochat
Un entorno mínimo y fácil de modificar que cubre todo el flujo de trabajo de los LLM, desde la tokenización y el preentrenamiento hasta el ajuste fino, la evaluación y el chat, en un único nodo con GPU.
- Estrellas
- 58,786
- Forks
- 8,229
- Issues abiertos
- 122
- Último commit
- el mes pasado
¿Qué es?
nanochat es un entorno experimental para entrenar modelos de lenguaje grandes, pensado para ejecutarse en un único nodo con GPU y con una base de código pequeña y fácil de leer. Abarca la tokenización, el preentrenamiento, el ajuste fino, la evaluación y la inferencia, e incluye una CLI sencilla para chatear con los modelos entrenados.
El control principal es un único parámetro de complejidad, `--depth`, que define el número de capas del transformer. El ancho, los cabezales de atención, las tasas de aprendizaje, la duración del entrenamiento y el weight decay se calculan automáticamente para que los modelos de cada profundidad tengan un uso óptimo de la capacidad de cómputo. El objetivo declarado del proyecto es reproducir capacidades del nivel de GPT-2 por unas pocas decenas de dólares en tiempo de GPU en la nube, y cuenta con una tabla de clasificación pública que registra el tiempo de entrenamiento necesario para alcanzar ese objetivo.
El repositorio incluye scripts para entrenar a máxima velocidad en un nodo con 8xH100, realizar experimentos con leyes de escalado y series de modelos, ejecutar un ejemplo en CPU/Apple Silicon con un modelo mucho más pequeño y consultar la gestión documentada de la precisión en bf16, fp16 y fp32.
Funciones clave
- 01Abarca la tokenización, el preentrenamiento, el ajuste fino, la evaluación y la inferencia en una sola base de código.
- 02El tamaño del modelo se define con un único parámetro, --depth; los demás hiperparámetros se calculan automáticamente.
- 03Incluye una CLI para chatear con los modelos entrenados.
- 04Se ejecuta en una sola GPU y recurre a la acumulación de gradientes cuando solo hay una GPU disponible.
- 05Admite GPU CUDA y ofrece una opción para CPU y MPS que usa un modelo más pequeño.
- 06Incluye una tabla de clasificación de speedrun de GPT-2 que registra el tiempo de entrenamiento transcurrido.
Casos de uso
- Aprender cómo se integra todo el flujo de entrenamiento de un LLM leyendo una base de código pequeña.
- Realizar experimentos de preentrenamiento a pequeña escala en una sola GPU.
- Probar cambios de arquitectura o de optimizador con ejecuciones rápidas y una profundidad controlada.
- Entrenar de principio a fin un modelo de chat pequeño con un presupuesto limitado.
Inicio rápido
- 1
Instala las dependencias de uv con el extra para GPU
uv sync --extra gpu - 2
Activa el entorno virtual
source .venv/bin/activate - 3
Ejecuta el script de entrenamiento speedrun (diseñado para un nodo 8XH100; tarda aproximadamente 1,5 horas)
bash runs/speedrun.sh - 4
Habla con el modelo entrenado desde la CLI
python -m scripts.chat_cli
Antes de usarlo
- El speedrun completo de GPT-2 está diseñado para un nodo GPU 8XH100 y cuesta aproximadamente 48 $ o más en tiempo de GPU en la nube.
- El preentrenamiento requiere muchos recursos de GPU; si la GPU tiene menos de 80 GB de VRAM, hay que ajustar el tamaño del lote.
- La mayor parte del código está escrita en PyTorch, pero el autor no ha probado a fondo backends que no sean CUDA, como MPS y XPU.
Temas
Preguntas frecuentes
- ¿Qué es nanochat?
- Un entorno mínimo y fácil de modificar que cubre todo el flujo de trabajo de los LLM, desde la tokenización y el preentrenamiento hasta el ajuste fino, la evaluación y el chat, en un único nodo con GPU. nanochat es un entorno experimental para entrenar modelos de lenguaje grandes, pensado para ejecutarse en un único nodo con GPU y con una base de código pequeña y fácil de leer. Abarca la tokenización, el preentrenamiento, el ajuste fino, la evaluación y la inferencia, e incluye una CLI sencilla para chatear con los modelos entrenados.
- ¿nanochat es gratuito? ¿Qué licencia tiene?
- nanochat es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿nanochat sigue mantenido?
- Actualizado en los últimos 6 meses. El último commit de nanochat fue el 7 sept 2026.
- ¿Para qué puedo usar nanochat?
- Aprender cómo se integra todo el flujo de entrenamiento de un LLM leyendo una base de código pequeña. Realizar experimentos de preentrenamiento a pequeña escala en una sola GPU. Probar cambios de arquitectura o de optimizador con ejecuciones rápidas y una profundidad controlada. Entrenar de principio a fin un modelo de chat pequeño con un presupuesto limitado.
- ¿Cómo se instala nanochat?
- Instala las dependencias de uv con el extra para GPU: uv sync --extra gpu Activa el entorno virtual: source .venv/bin/activate Ejecuta el script de entrenamiento speedrun (diseñado para un nodo 8XH100; tarda aproximadamente 1,5 horas): bash runs/speedrun.sh Habla con el modelo entrenado desde la CLI: python -m scripts.chat_cli
- ¿Dónde consigo nanochat?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/karpathy/nanochat
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Una biblioteca de optimización de deep learning que facilita y hace más eficiente el entrenamiento distribuido y la inferencia de modelos grandes.
Implementación oficial de FlashAttention, un kernel de atención exacta y eficiente en memoria para entrenar e inferir con modelos Transformer en GPU.
Framework gratuito y de código abierto para ajustar y realizar el posentrenamiento de modelos de lenguaje grandes mediante archivos YAML.
Guía y código en PyTorch para entrenar desde cero un LLM transformer, desde el preentrenamiento hasta SFT, modelado de recompensas, DPO/PPO/GRPO y generación.
Tutorial comentado de 12 capítulos que enseña a crear y entrenar desde cero, con Python y PyTorch, un GPT pequeño al estilo LLaMA.