Andrej Karpathy lanza ‘nanochat’: un canal mínimo de estilo ChatGPT de extremo a extremo que puedes entrenar en ~4 horas por ~0

Andrej Karpathy tiene nanochat de código abierto, una base de código compacta y con poca dependencia que implementa una pila completa de estilo ChatGPT (desde entrenamiento con tokenizadores hasta inferencia de interfaz de usuario web) destinada a un entrenamiento LLM reproducible y pirateable en un único nodo multi-GPU.

El repositorio proporciona un “speedrun” de un solo script que ejecuta el ciclo completo: tokenización, preentrenamiento básico, entrenamiento intermedio en datos de chat/opción múltiple/uso de herramientas, ajuste fino supervisado (SFT), RL opcional en GSM8K, evaluación y servicio (CLI + interfaz de usuario web similar a ChatGPT). La configuración recomendada es un nodo 8×H100; a ~$24/hora, el speedrun de 4 horas cuesta cerca de $100. Un report.md posterior a la ejecución resume las métricas (CORE, ARC-E/C, MMLU, GSM8K, HumanEval, ChatCORE).

Tokenizador y ruta de datos

Tokenizer: Rust BPE personalizado (construido a través de Maturin), con un vocabulario de 65,536 tokens; la capacitación utiliza fragmentos FineWeb-EDU (reempaquetados/barajados para un acceso sencillo). El tutorial informa una compresión de ~4,8 caracteres/token y se compara con los tokenizadores GPT-2/4. Paquete de evaluación: un conjunto seleccionado para CORE (22 conjuntos de datos de autocompletado como HellaSwag, ARC, BoolQ, etc.), descargado en ~/.cache/nanochat/eval_bundle.

Modelo, escalado y objetivo de “speedrun”

La configuración de speedrun entrena un transformador de profundidad 20 (≈560 millones de parámetros con 1280 canales ocultos, 10 cabezales de atención de 128 tenues) para ~11,2 mil millones de tokens consistentes con el escalado estilo Chinchilla (parámetros × ~20 tokens). El autor estima esta ejecución como un modelo de capacidad de ~4e19 FLOP. El entrenamiento utiliza Muon para parámetros matmul y AdamW para incrustaciones/desintegraciones; la pérdida se informa en bits por byte (bpb) para que sea invariante en el tokenizador.

Entrenamiento medio, SFT y uso de herramientas

Después del entrenamiento previo, a mitad del entrenamiento se adapta el modelo base a las conversaciones (SmolTalk) y se enseña explícitamente el comportamiento de opción múltiple (100.000 preguntas del tren auxiliar MMLU) y el uso de herramientas mediante la inserción de bloques <|python_start|>…<|python_end|>; Se incluye una pequeña porción GSM8K para iniciar el uso estilo calculadora. La combinación predeterminada: SmolTalk (460K), tren auxiliar MMLU (100K), GSM8K principal (8K), con un total de 568K filas.

Luego, SFT ajusta las conversaciones de mayor calidad mientras coincide con el formato del momento de la prueba (filas rellenas, no concatenadas) para reducir la discrepancia entre el tren y la inferencia. Las métricas posteriores a SFT de ejemplo (nivel de velocidad) del repositorio informan ARC-Easy 0.3876, ARC-Challenge 0.2807, MMLU 0.3151, GSM8K 0.0455, HumanEval 0.0854, ChatCORE 0.0884.

El uso de herramientas está conectado de un extremo a otro: el motor personalizado implementa caché KV, inferencia de precarga/decodificación y un entorno limitado de intérprete Python simple para ejecuciones aumentadas con herramientas, que se utilizan tanto en flujos de capacitación como de evaluación.

RL opcional en GSM8K a través de un bucle GRPO simplificado

La etapa final (opcional) aplica el aprendizaje por refuerzo en GSM8K con una rutina GRPO simplificada. El tutorial aclara lo que se omite en relación con el RLHF canónico de estilo PPO: sin región de confianza a través de un modelo de referencia, sin penalizaciones de KL, actualizaciones de políticas (descartar ratios/clip de PPO), normalización estilo GAPO a nivel de token y ventaja de cambio medio. En la práctica, se comporta cerca de REINFORCE manteniendo el cálculo de la ventaja relativa del grupo. Los scripts scripts.chat_rl y scripts.chat_eval -i rl -a GSM8K demuestran el bucle.

Escalamiento costo/calidad y modelos más grandes

El archivo README esboza dos objetivos más importantes más allá del speedrun de ~$100:

Nivel de ~$300: d=26 (~12 horas), supera ligeramente GPT-2 CORE; requiere más fragmentos de preentrenamiento y ajustes de tamaño de lote. Nivel de ~$1000: ~41,6 horas, con coherencia materialmente mejorada y capacidad básica de razonamiento/codificación.

El repositorio también señala ejecuciones experimentales anteriores en las que el modelo ad=30 entrenado durante aproximadamente 24 horas alcanzó los 40 en MMLU, los 70 en ARC-Easy y los 20 en GSM8K.

Instantánea de evaluación (nivel speedrun)

Un ejemplo de tabla report.md para la ejecución de ~$100/≈4 horas muestra: CORE 0.2219 (base); después del entrenamiento medio/SFT, ARC-E 0.3561→0.3876, ARC-C ~0.2875→0.2807, MMLU 0.3111→0.3151, GSM8K 0.0250→0.0455, HumanEval 0.0671→0.0854, ChatCORE 0,0730→0,0884; reloj de pared 3h51m.

https://github.com/karpathy/nanochat/discussions/1

Conclusiones clave

nanochat es una pila mínima de estilo ChatGPT de extremo a extremo (~8K LOC) que se ejecuta a través de un único speedrun.sh en un nodo 8×H100 (~4h ≈ $100). El proceso cubre tokenizador (Rust BPE), preentrenamiento básico, entrenamiento intermedio, SFT, RL opcional en GSM8K (GRPO simplificado), evaluación y servicio (CLI + UI web). Métricas de Speedrun (ejemplo report.md): CORE 0.2219 base; después de SFT: ARC-Easy 0,3876, ARC-Challenge 0,2807, MMLU 0,3151, GSM8K 0,0455, HumanEval 0,0854. Se describen los niveles de escala: ~$300 (d=26, ~12h) “supera ligeramente a GPT-2 CORE”; ~$1,000 (~41.6h) para una coherencia/razonamiento materialmente mejor.

El nanochat de Karpathy aterriza en un término medio útil: un repositorio único, limpio y con poca dependencia que une el entrenamiento del tokenizador (Rust BPE), el entrenamiento previo en FineWeb-EDU, el entrenamiento intermedio (SmolTalk/MMLU aux/GSM8K con etiquetas de uso de herramientas), SFT, GRPO simplificado opcional en GSM8K y un motor delgado (caché KV, precarga/decodificación, intérprete de Python) en un speedrun reproducible en un nodo 8×H100, produciendo un report.md rastreable con CORE/ARC/MMLU/GSM8K/HumanEval y una interfaz de usuario web mínima.

Consulta los Detalles técnicos y Códigos. No dude en consultar nuestra página de GitHub para tutoriales, códigos y cuadernos. Además, no dude en seguirnos en Twitter y no olvide unirse a nuestro SubReddit de más de 100.000 ML y suscribirse a nuestro boletín. ¡Esperar! estas en telegrama? Ahora también puedes unirte a nosotros en Telegram.

Asif Razzaq es el director ejecutivo de Marktechpost Media Inc.. Como emprendedor e ingeniero visionario, Asif está comprometido a aprovechar el potencial de la inteligencia artificial para el bien social. Su esfuerzo más reciente es el lanzamiento de una plataforma de medios de inteligencia artificial, Marktechpost, que se destaca por su cobertura en profundidad del aprendizaje automático y las noticias sobre aprendizaje profundo que es técnicamente sólida y fácilmente comprensible para una amplia audiencia. La plataforma cuenta con más de 2 millones de visitas mensuales, lo que ilustra su popularidad entre el público.

🙌 Siga MARKTECHPOST: agréguenos como fuente preferida en Google.