分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

karpathy/nanochat

机器学习

在单张 GPU 节点上端到端训练 GPT-2 级小模型的最小化、可改造代码库。

在 GitHub Trending 日榜上的最好名次:第 14 名。点击获取 README 徽章
59,599
8,385
Python
MIT
创建于 1 年前

项目介绍

nanochat 是一个刻意保持精简、可读的实验代码库,覆盖 LLM 的完整流程:分词、预训练、监督微调、评估和推理,目标运行环境是单个 GPU 节点。它不走「大而全配置框架」的路线,而是只暴露一个复杂度旋钮 --depth(Transformer 层数),其余超参数(宽度、头数、学习率调度、训练步数、权重衰减等)都由该值推导,使模型在算力上接近最优。按当前代码,约 24–26 层的模型大致对应 GPT-2 能力。

项目对外主张的重点是成本:README 中描述的 GPT-2 级训练在 8xH100 节点上约 2 小时,按约 $3/GPU/小时计约 $48,使用竞价实例可低至约 $15;作为对照,2019 年训练 GPT-2 的成本被引为约 $43,000。GPU 价格和可用性会变化,这些数字应视为作者的估算,而非实际账单结果。

快速使用

依赖通过 uv 管理。按硬件选择 extra 并激活环境:

uv sync --extra gpu    # CUDA(A100/H100 等)
uv sync --extra cpu    # 仅 CPU / MPS
source .venv/bin/activate

要复现参考的 GPT-2 级训练,准备一台 8xH100 机器(README 提到作者使用 Lambda),运行 speedrun 脚本,建议放在 screen 会话中,因为大约要跑 1.5 小时:

bash runs/speedrun.sh

结束后用 CLI 与模型对话(需保持 uv 虚拟环境已激活):

python -m scripts.chat_cli

对结果要有合理预期:speedrun 模型是约 4e19 FLOPs 的能力级别,README 示例里它会把瑞利散射解释错,语气却很自信。

使用约束

  • 硬件:参考流程按 8xH100 设计。8xA100 也能跑,只是更慢;去掉 torchrun 后可在单卡上运行,靠梯度累积保持近似结果,但耗时约 8 倍。显存不足 80 GB 时需要调低 --device-batch-size(默认 32),否则会 OOM。
  • CPU/MPS:runs/runcpu.sh 是玩具级示例,会把模型缩到能在几十分钟内跑完,README 明确说明效果不会好。
  • 精度:项目不用 autocast,而是通过全局 COMPUTE_DTYPE 显式控制精度:SM 80+ 的 CUDA 默认 bf16,较老 CUDA 以及 CPU/MPS 默认 fp32;可用 NANOCHAT_DTYPE 覆盖,fp16 训练会自动启用 GradScaler。
  • 定位:这是「强基线」而非可穷举配置的框架,改动需在所有 depth 设置下成立。提交 PR 时需声明大比例由 LLM 撰写、自己未完全理解的部分。
  • 许可证:MIT。

进一步阅读

做研究迭代时,README 推荐 scaling laws 和 miniseries 脚本;作者常用的快速实验是一个约 5 分钟的 12 层(--depth=12)预训练循环,指标记录在 wandb(命令见这里)。更长的说明在项目指南里,包括「用不到 $100 打败 GPT-2」的过程记录;问题可以到 Discussions 或 DeepWiki 索引中查找。

HotRepo 点评

nanochat 在 2026-11-02 进入 GitHub 全语言日榜第 14 名,当日新增 325 Star,仓库累计约 59,600 Star、8,400 Fork。这只是单日快照,无法说明持续势头,但至少说明一个观点明确的小型训练代码库配上公开的 speedrun 排行榜,仍能持续吸引关注。更有分量的信号来自排行榜本身:README 记录的运行结果在 2026 年 1 月至 3 月间把「达到 GPT-2」的耗时从 3.04 小时压缩到 1.65 小时,这正是该仓库设计上想要激励的可度量社区进展。

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。

Hacker News 讨论

NanoChat – The best ChatGPT that $100 can buy
▲ 1,523 · 308 条评论 · 2025年10月13日
Nanochat Miniseries v1
▲ 21 · 0 条评论 · 2026年1月7日
Beating GPT-2 for less than $100 – Andrej Karpathy
▲ 4 · 0 条评论 · 2026年2月17日