- Código simple de entrenamiento de LLM creado por Andrej Karpathy en C/CUDA puro
- Ahora realiza entrenamiento multi-GPU en bfloat16 junto con Flash Attention
- Está implementado en ~3000 líneas de código C/CUDA y, en general, es hasta un 7% más rápido que PyTorch
- Lo que se ha trabajado hasta ahora
- Entrenamiento de precisión mixta (bfloat16)
- Muchas optimizaciones de kernels, incluido FusedClassifier, que no materializa los logits normalizados (a diferencia del
torch.compile actual)
- Flash Attention (directamente desde cuDNN)
- Estructura de datos Packed128 que obliga a A100 a usar instrucciones de carga de 128 bits (
LDG.128) y almacenamiento (STS.128)
- Ahora también es posible el entrenamiento multi-GPU
- Primera versión de entrenamiento multi-GPU con MPI+NCCL
- Perfilado de toda la ejecución de entrenamiento con NVIDIA Nsight Compute
- PR de fusión de la etapa 1 de ZeRO (sharding del estado del optimizador)
- El objetivo es crear un stack de LLM en C/CUDA estable, limpio, probado, mínimo, robusto y suficientemente optimizado, capaz de reproducir directamente la miniserie GPT-2 de todos los tamaños de modelo, desde 124M hasta 1.6B
1 comentarios
llm.c - entrenar LLMs en C/CUDA puro