Minhas notas sobre nanochat, incluindo links para os dados de treinamento que ele usa
Andrej Karpathy
Andrej Karpathy13 de out. de 2025
Animado para lançar um novo repo: nanochat! (está entre os mais desequilibrados que já escrevi). Ao contrário do meu repositório semelhante anterior, o nanoGPT, que cobria apenas o pré-treinamento, o nanochat é um pipeline de treinamento/inferência de pilha completa mínimo, do zero, de um clone simples do ChatGPT em uma única base de código mínima de dependência. Você inicializa uma caixa de GPU em nuvem, executa um único script e, em menos de 4 horas depois, pode conversar com seu próprio LLM em uma interface de usuário da web semelhante ao ChatGPT. Ele pesa ~ 8.000 linhas de código imo bastante limpo para: - Treine o tokenizer usando uma nova implementação do Rust - Pré-treinar um LLM de transformador no FineWeb, avaliar a pontuação CORE em várias métricas - Treinamento intermediário em conversas de assistente de usuário do SmolTalk, perguntas de múltipla escolha, uso de ferramentas. - SFT, avaliar o modelo de bate-papo em conhecimento mundial de múltipla escolha (ARC-E / C, MMLU), matemática (GSM8K), código (HumanEval) - RL o modelo opcionalmente em GSM8K com "GRPO" - Inferência eficiente do modelo em um mecanismo com cache KV, pré-preenchimento/decodificação simples, uso de ferramenta (interpretador Python em uma sandbox leve), converse com ele por CLI ou WebUI semelhante ao ChatGPT. - Escreva um único boletim de remarcação, resumindo e gamificando tudo. Mesmo por um custo tão baixo quanto ~ $ 100 (~ 4 horas em um nó 8XH100), você pode treinar um pequeno clone do ChatGPT com o qual você pode conversar e que pode escrever histórias/poemas, responder a perguntas simples. Cerca de ~12 horas supera a métrica GPT-2 CORE. À medida que você aumenta ainda mais para ~ $ 1000 (~ 41,6 horas de treinamento), ele rapidamente se torna muito mais coerente e pode resolver problemas simples de matemática / código e fazer testes de múltipla escolha. Por exemplo, um modelo de profundidade 30 treinado por 24 horas (isso é quase igual a FLOPs de GPT-3 Small 125M e 1/1000th de GPT-3) chega a 40s no MMLU e 70s no ARC-Easy, 20s no GSM8K, etc. Meu objetivo é obter a pilha completa de "linha de base forte" em um repositório coeso, mínimo, legível, hackeável e com bifurcação máxima. nanochat será o projeto final do LLM101n (que ainda está sendo desenvolvido). Acho que também tem potencial para se tornar um arnês de pesquisa, ou um benchmark, semelhante ao nanoGPT antes dele. Não está de forma alguma terminado, ajustado ou otimizado (na verdade, acho que provavelmente há um pouco de frutos mais fáceis), mas acho que está em um lugar onde o esqueleto geral está ok o suficiente para que possa subir no GitHub, onde todas as partes dele podem ser melhoradas. Link para o repositório e um passo a passo detalhado do speedrun do nanochat está na resposta.
Sam Dobson enviou uma compilação do modelo para o Hugging Face - ele precisa do CUDA para ser executado, mas eu fiz com que o Claude Code o hackeasse por um tempo e ele me criou um script para executá-lo na CPU do macOS, detalhes aqui:
475