12 pontos por xguru 2024-05-06 | 1 comentários | Compartilhar no WhatsApp
  • 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