18 pontos por xguru 2024-04-09 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
xguru 2024-04-09

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.

    Espera que, quando o projeto estiver mais estável, seja produzido um vídeo detalhado sobre como montá-lo.

  • 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.