Framework para definir modelos de ponta em machine learning para texto, visão, áudio e tarefas multimodais, voltado a inferência e treinamento.
karpathy/nanochat
Um harness mínimo e fácil de modificar que cobre todo o pipeline de LLM, da tokenização ao pré-treinamento, ajuste fino, avaliação e chat, executável em um único nó com GPU.
- Estrelas
- 58,786
- Forks
- 8,229
- Issues abertas
- 122
- Último commit
- mês passado
O que é?
nanochat é um harness experimental para treinar modelos de linguagem grandes, pensado para rodar em um único nó com GPU e ter uma base de código pequena e fácil de entender. Ele cobre tokenização, pré-treinamento, ajuste fino, avaliação e inferência, e o projeto inclui uma CLI simples para conversar com os modelos treinados.
O principal controle é um único parâmetro de complexidade, `--depth`, que define o número de camadas do transformer. A largura, o número de cabeças de atenção, as taxas de aprendizado, a duração do treinamento e o weight decay são calculados automaticamente para que os modelos de cada profundidade tenham uso ótimo de computação. O objetivo declarado do projeto é reproduzir a capacidade do GPT-2 por algumas dezenas de dólares em tempo de GPU na nuvem, com um leaderboard público que acompanha o tempo de treinamento necessário para atingir esse nível.
O repositório oferece scripts para treinar em modo speedrun em um nó com 8xH100, fazer experimentos com leis de escala e séries de modelos, além de um exemplo para CPU/Apple Silicon com um modelo bem menor e documentação sobre o uso de precisão bf16, fp16 e fp32.
Recursos principais
- 01Abrange tokenização, pré-treinamento, ajuste fino, avaliação e inferência em uma única base de código.
- 02O tamanho do modelo é definido por um único parâmetro, --depth, e os demais hiperparâmetros são calculados automaticamente.
- 03Inclui uma CLI para conversar com os modelos treinados.
- 04Roda em uma única GPU, com fallback de acumulação de gradientes quando há apenas uma GPU disponível.
- 05Oferece suporte a GPUs CUDA e um caminho para CPU e MPS usando um modelo menor.
- 06Oferece um leaderboard de speedrun do GPT-2 que acompanha o tempo de treinamento em tempo real.
Casos de uso
- Aprender como as partes de um pipeline completo de treinamento de LLM se encaixam, lendo uma base de código pequena.
- Executar experimentos de pré-treinamento em pequena escala em uma única GPU.
- Testar mudanças de arquitetura ou de otimizador em execuções rápidas, controladas pela profundidade.
- Treinar um pequeno modelo de chat de ponta a ponta com orçamento limitado.
Início rápido
- 1
Instale as dependências do uv com o extra para GPU
uv sync --extra gpu - 2
Ative o ambiente virtual
source .venv/bin/activate - 3
Execute o script de treinamento speedrun (projetado para um nó 8XH100; leva cerca de 1,5 hora)
bash runs/speedrun.sh - 4
Converse com o modelo treinado pela CLI
python -m scripts.chat_cli
Antes de usar
- O speedrun completo do GPT-2 foi projetado para um nó GPU 8XH100 e custa cerca de US$ 48 ou mais em tempo de GPU na nuvem.
- O pré-treinamento exige muitos recursos de GPU; GPUs com menos de 80 GB de VRAM precisam de ajuste no tamanho do lote.
- A maior parte do código é escrita em PyTorch, mas backends que não sejam CUDA, como MPS e XPU, não foram totalmente testados pelo autor.
Tópicos
Perguntas frequentes
- O que é nanochat?
- Um harness mínimo e fácil de modificar que cobre todo o pipeline de LLM, da tokenização ao pré-treinamento, ajuste fino, avaliação e chat, executável em um único nó com GPU. nanochat é um harness experimental para treinar modelos de linguagem grandes, pensado para rodar em um único nó com GPU e ter uma base de código pequena e fácil de entender. Ele cobre tokenização, pré-treinamento, ajuste fino, avaliação e inferência, e o projeto inclui uma CLI simples para conversar com os modelos treinados.
- nanochat é gratuito? Qual é a licença?
- nanochat é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
- nanochat ainda é mantido?
- Atualizado nos últimos 6 meses. O último commit de nanochat foi em 7 de set. de 2026.
- Para que posso usar nanochat?
- Aprender como as partes de um pipeline completo de treinamento de LLM se encaixam, lendo uma base de código pequena. Executar experimentos de pré-treinamento em pequena escala em uma única GPU. Testar mudanças de arquitetura ou de otimizador em execuções rápidas, controladas pela profundidade. Treinar um pequeno modelo de chat de ponta a ponta com orçamento limitado.
- Como instalar nanochat?
- Instale as dependências do uv com o extra para GPU: uv sync --extra gpu Ative o ambiente virtual: source .venv/bin/activate Execute o script de treinamento speedrun (projetado para um nó 8XH100; leva cerca de 1,5 hora): bash runs/speedrun.sh Converse com o modelo treinado pela CLI: python -m scripts.chat_cli
- Onde consigo nanochat?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/karpathy/nanochat
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Biblioteca de otimização de deep learning que facilita e torna mais eficiente o treinamento distribuído e a inferência de modelos grandes.
Implementação oficial do FlashAttention, um kernel de atenção exata e eficiente em memória para treinar e executar inferência de modelos Transformer em GPUs.
Framework gratuito e open source para fine-tuning e pós-treinamento de LLMs, configurado por arquivos YAML.
Um guia prático e codebase em PyTorch para treinar um LLM do zero, cobrindo pré-treinamento, SFT, modelagem de recompensas, DPO/PPO/GRPO e geração.
Tutorial comentado em 12 capítulos que ensina a criar e treinar do zero, em Python e PyTorch, um GPT pequeno no estilo LLaMA.