- Código simples de treinamento de LLM criado por Andrej Karpathy em C/CUDA puro
- Agora realiza treinamento em múltiplas GPUs com bfloat16 junto com Flash Attention
- Implementado em ~3000 linhas de código C/CUDA e, no geral, é cerca de 7% mais rápido que o PyTorch
- O que foi feito até agora
- Treinamento em precisão mista (
bfloat16)
- Muitas otimizações de kernel, incluindo
FusedClassifier, que não materializa os logits normalizados (ao contrário do torch.compile atual)
- Flash Attention (diretamente do cuDNN)
- Estrutura de dados
Packed128 que força a A100 a usar instruções de load (LDG.128) e store (STS.128) de 128 bits
- Agora o treinamento em múltiplas GPUs também é possível
- Primeira versão de treinamento em múltiplas GPUs usando MPI+NCCL
- Profiling da execução completa do treinamento com NVIDIA Nsight Compute
- Merge do PR da fase 1 do ZeRO (sharding do estado do otimizador)
- O objetivo é criar uma stack de LLM em C/CUDA diretamente, estável, limpa, testada, mínima, reforçada e suficientemente otimizada, capaz de reproduzir a minissérie GPT-2 em todos os tamanhos de modelo, de 124M a 1.6B
1 comentários
llm.c - treinar LLMs em C/CUDA puro