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