- Código simples de treinamento de LLM feito por Andrej Karpathy em C/CUDA puro
- Não precisa de PyTorch/cPython
- É possível treinar o GPT-2 (CPU, fp32) com um único arquivo de cerca de 1000 linhas
- O motivo de ter escolhido o GPT-2 como primeiro caso funcional é que ele é o avô dos LLMs em que a stack moderna foi combinada pela primeira vez
- Compila e executa imediatamente, correspondendo exatamente à implementação de referência em PyTorch
- O que está sendo desenvolvido no momento
- Implementação direta em CUDA, muito mais rápida e provavelmente mais próxima do PyTorch
- Aumento de velocidade da versão para CPU com instruções SIMD, AVX2 no x86 / NEON no ARM (ex.: Apple Silicon)
- Arquiteturas mais modernas (ex.: Llama2, Gemma etc.)
1 comentários
Comentários do Hacker News
Expressa admiração pelo projeto, ao mesmo tempo em que aponta que a parte de CUDA ainda não foi implementada. O código de GPU ainda não está no repositório.
Depois de ver o nano GPT implementado em JAX, agora quer ver uma implementação em C/CUDA. Pergunta se seria possível fazer nano GPT em Mojo. Reconhece que Python tem muitas conveniências em comparação com outras linguagens.
Demonstra expectativa de que uma implementação direta em CUDA seja muito mais rápida que PyTorch. Considerando o preço de GPU-RAM, questiona o quanto a velocidade em CPU poderia melhorar. Pergunta se existe algum problema técnico em adicionar slots SO-DIMM à série RTX para expandir a RAM conforme necessário.
Pergunta se há exemplos de como aplicar GPT-2 a dados de séries temporais, especialmente quando há covariáveis (covariates) incluídas. Acha que a previsão de séries temporais é semelhante ao modo como LLMs preveem o próximo token a partir dos tokens anteriores.
Acha que o nome pode ter sido inspirado no seu próprio projeto llm.f90. Diz que o nome foi mudado com base no llama2.c de Karpathy para dar suporte a outras arquiteturas. Provavelmente é coincidência.
Quando Lex conversou com Andre, Andre teria dito, com uma obsessão positiva pelo problema, “isso precisa existir”. Este projeto provavelmente é um desses resultados.
Pergunta, caso estivesse começando do zero, que materiais deveria consultar para construir entendimento sobre o que esse código faz e como lê-lo. Diz ter conhecimento muito limitado sobre LLMs e pergunta se nomes de variáveis concisos são padrão nessa área.
Opina que seria bom criar um tutorial explicando este projeto e como executar um treinamento de teste. Treinar um modelo “real” em hardware pessoal não é algo realista, mas é necessário ter uma experiência prática de aprendizado.
Expressa curiosidade sobre se CUDA ainda se mantém como a única opção para executar IA, ou se está aumentando o suporte a formas de execução em AMD/Intel/outras alternativas.