nanochat — 最佳 ChatGPT,$100 搞定

Andrej Karpathy 的新项目 nanochat,目标是「花 $100 自己训练一个 ChatGPT 级别的模型」。仓库覆盖了从 tokenizer 训练、预训练、微调、评估、推理到 Web UI 对话的完整流程,代码简洁、可 hack、依赖极少。

仓库地址:karpathy/nanochat | ⭐ 55.4K stars | MIT License

为什么值得关注

2019 年训练 GPT-2(同等能力)花了约 $43,000。而 nanochat 只用 $48 和 2 小时(8×H100) 就能跑出同等水平的模型,还能通过浏览器和它对话。

这得益于 Karpathy 一贯的设计哲学——不搞复杂框架,纯 PyTorch,所有代码在一个仓库里,适合真正想理解 LLM 训练的人。

技术栈覆盖

  • Tokenizer — 分词器训练
  • Pretraining — GPT 架构预训练
  • Finetuning — SFT 微调
  • Evaluation — DCLM CORE 评分、MMLU
  • Inference — 推理服务
  • Web UI — 浏览器对话界面

一键跑通

1
bash speedrun.sh

一个脚本从零跑到可与自己模型对话的 Web UI。

关键设计

1. Miniseries 缩放实验

通过 --depth 参数控制模型层数,自动寻找计算最优配置。Karpathy 在社区讨论中展示了 Chinchilla 风格的缩放曲线:在 6e18 FLOPs 预算下,最优配置约 3.3 亿参数搭配 27 亿 token。

2. GPT-2 Speedrun 排行榜

社区比赛——谁能在最短 clock time 内训练到 GPT-2 级别能力(按 DCLM CORE 分数衡量),类似 modded-nanogpt 路线。

3. 极简依赖

明确区分 dev 和生产依赖。Karpathy 原话:“dependencies bad bad bad”。

4. 自带 AI 辅助

仓库甚至包含 .claude/skills/read-arxiv-paper skill,方便用 Claude 读论文。

衍生项目:nanollama

社区从 nanochat 孵化的 nanollama,做到了一条命令从原始文本 → Llama 3 训练 → GGUF 导出(兼容 llama.cpp):

1
bash runs/lambda_train.sh --name mini

学生用一张租来的 GPU 花几美元就能跑,同一套代码可扩展到 7B / 8×H100。

适合谁

  • 想深入理解 GPT 训练细节的人
  • 想做 LLM 实验但不想碰复杂框架的人
  • 学生和研究者

相关链接

  • 仓库:https://github.com/karpathy/nanochat
  • 讨论区(含 Miniseries 数据):https://github.com/karpathy/nanochat/discussions
  • 介绍文章:https://deepakness.com/raw/nanochat-by-andrej-karpathy