Repolode
karpathy

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

    Instale as dependências do uv com o extra para GPU

    uv sync --extra gpu
  2. 2

    Ative o ambiente virtual

    source .venv/bin/activate
  3. 3

    Execute o script de treinamento speedrun (projetado para um nó 8XH100; leva cerca de 1,5 hora)

    bash runs/speedrun.sh
  4. 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