news 2026/10/3 13:51:19

GPT-2 训练成本从 4.3 万美元降到 48 美元?我试了一下 nanochat

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GPT-2 训练成本从 4.3 万美元降到 48 美元?我试了一下 nanochat

2019 年训练一个 GPT-2 级别的模型 reportedly 花了 4.3 万美元;现在 nanochat 的 README 上写着:用 8 块 H100 跑大概 1 个半小时,成本 48 美元左右,就能训出一个 GPT-2 水平、还能对话的模型。spot 实例甚至可以压到 15 美元。

一句话先说结论

nanochat 不是又一个"LLM 框架",而是一个端到端的"实验套件"。它从分词、预训练、微调、评估到推理和聊天 UI 全包了,代码量不大,读得懂、改得动。最吸引我的是:它用一个整数--depth(Transformer 层数)当"复杂度旋钮",宽度、头数、学习率、训练步数这些超参自动算好,用户基本不用调。

这项目到底解决了什么问题

我自己之前想跑通一个 LLM 训练流程,通常会遇到三种崩溃:

  • 框架太胖:打开仓库,光是配置文件就有十几种,model factory、trainer、registry 层层封装,改一行要追十行。
  • 超参太多:学习率、warmup、weight decay、batch size、调度策略……每个都要猜,错了就 OOM 或者训飞了。
  • 只能训不能聊:很多项目只到预训练这一步,想做成能对话的模型,还得自己接 SFT、RL、推理引擎、Web UI,等于重新搭一座桥。

nanochat 的思路是:把上面这三件事全部压进一条命令里。它不是让你"配置一切",而是给你一个强基线——你 fork 过去,改几行就能做实验,或者直接用默认配置跑出一个能对话的小模型。

一个旋钮调所有:--depth

这是 nanochat 最有意思的设计。你不用写 30 行配置,只要告诉它:

--depth=26

代码就会自动推出:模型宽度、注意力头数、学习率、训练步数、weight decay 等等,按"计算最优"的方式配好。

打个比方:--depth就像汽车排量。你只需要说"我要 1.5L 还是 2.0L",油耗、变速箱、轮胎尺寸 nanochat 帮你配齐。GPT-2 的水平大致对应--depth在 24–26 之间。

这种设计有个好处:你做任何改动,都得保证它在不同 depth 下都合理,而不是只针对某一个规模 hand-tune。这让整个 repo 更像个连贯的研究基线,而不是一个大杂烩。

Time-to-GPT-2:一个挺刺激的排行榜

nanochat 主打的指标叫Time-to-GPT-2[达到 GPT-2 水平的墙钟时间]。判定标准是DCLM CORE 分数[一种评估语言模型综合能力的基准分,可以理解成 LLM 的"期末考分数"] 超过 OpenAI 原版 GPT-2(1.6B)的 0.256525。

目前 leaderboard 上最快的记录已经卷到 1.65 小时。我把主要条目整理了一下(val_bpb是验证集上的 bits per byte [衡量模型压缩文本能力的指标,越低越好]):

排名时间val_bpbCORE说明日期
0168 小时-0.2565OpenAI 原版 GPT-2 checkpoint2019
13.04 小时0.748330.2585d24 baseline,略微过拟合2026-01-29
22.91 小时0.745040.2578d26 + fp82026-02-02
32.76 小时0.746450.2602总 batch size 提到 1M tokens2026-02-05
42.02 小时0.718540.2571数据集换成 NVIDIA ClimbMix2026-03-04
51.80 小时0.718080.2690autoresearch 第一轮2026-03-09
61.65 小时0.718000.2626autoresearch 第二轮2026-03-14

数据来源:nanochatdev/LEADERBOARD.md。你可以看到,大家基本在预训练阶段疯狂优化——这也是目前项目开发最热闹的地方。

从代码结构看,它到底长什么样

我翻了一下源码,目录很清爽,没有巨型抽象:

nanochat/ # 核心库 gpt.py GPT Transformer [Transformer 是处理序列数据的神经网络结构] tokenizer.py BPE 分词器封装 [BPE 是把文字切成小片段的算法] dataloader.py 分布式数据加载 optim.py AdamW / Muon 优化器 engine.py 带 KV Cache 的推理引擎 [KV Cache 是推理时缓存已算信息,避免重复计算] core_eval.py CORE 分数评估 ... scripts/ # 入口脚本 base_train.py 预训练 base_eval.py 评估 chat_sft.py 监督微调 [SFT:用对话数据专项训练,让模型学会回答问题] chat_rl.py 强化学习 [RL:用反馈打分,让回答更像人] chat_cli.py 命令行聊天 chat_web.py Web 聊天 UI ... runs/ # 一键脚本 speedrun.sh 从零到 GPT-2 级并对话 scaling_laws.sh 缩放定律实验 miniseries.sh 训练一族不同 depth 的模型 runcpu.sh CPU / Apple Silicon 小 demo

没有 model factory,没有满屏 if-else,代码基本都是普通 PyTorch。这也是它适合学习和二次开发的原因。

怎么跑:一条命令复现"百元 ChatGPT"

环境推荐用 uv,项目根目录有pyproject.toml和uv.lock。

# 1. 克隆gitclone https://github.com/karpathy/nanochat.git&&cdnanochat# 2. 装依赖(CUDA 版本)uvsync--extragpusource.venv/bin/activate# 3. 在 8×H100 节点上跑完整 pipelinebashruns/speedrun.sh

README 上说这个脚本大概跑1.5 小时。按当前 8×H100 节点约 $24/小时算,成本就是$48 左右。如果用 spot 实例,能到$15 左右。

跑完之后,启动命令行聊天:

python-mscripts.chat_cli

或者启动 Web UI:

python-mscripts.chat_web

浏览器打开终端里打印的地址,就能像 ChatGPT 一样跟模型对话。

我试了一下示例对话,效果大概像一个"幼儿园小朋友"——能回答问题、写诗,但会一本正经地胡说八道。README 里给的例子也特实在:你问它"天为什么是蓝的",它会跟你聊瑞利散射;你让它写首诗,它会贡献一堆"blue"。

没有 8 块 H100 怎么办

nanochat 也考虑到了穷鬼方案:

  • 单 GPU:去掉torchrun,自动退化成梯度累积,结果基本一致,但慢 8 倍。
  • 显存不够:把--device-batch-size从默认 32 往下降,16 → 8 → 4 → 2 → 1,直到不爆显存。
  • CPU / MPS:跑runs/runcpu.sh,模型和步数会大幅缩水,只能看个热闹,别指望效果。

精度这块也做了简单兜底,按硬件自动选 dtype:

硬件默认 dtype原因
A100 / H100(SM 80+)bfloat16原生支持 bf16 Tensor Core
V100 / T4(SM < 80)float32不支持 bf16,可手动设NANOCHAT_DTYPE=float16
CPU / MPSfloat32安全默认;新 macOS 上 MPS 可跑 bf16

跟 nanoGPT、modded-nanogpt 有什么区别

很多人看到 nanochat 会想到 Karpathy 之前的 nanoGPT。我整理了一张对比表:

维度nanochatnanoGPT大型 LLM 框架(HF / Megatron 等)
覆盖阶段分词 → 预训练 → 微调 → 评估 → 聊天只有预训练全流程,但配置复杂
上手难度一个--depth旋钮需手动调超参配置项多、学习曲线陡
代码量精简、可 hack精简庞大、抽象多
目标百元级可对话模型预训练基线企业级通用训练
社区玩法Time-to-GPT-2 排行榜无各有生态

modded-nanogpt 更像是 nanoGPT 的"竞速改装版",专注于把预训练推到极致;nanochat 则把它扩展成了完整的"从数据到对话"链路。

适用人群

从我自己的体验来看,这几类人可能会觉得它好玩:

  • 想亲手训一个 LLM 并跟它聊天的开发者:百元级、一条命令、几小时就能对话,成就感拉满。
  • 做 scaling / 预训练研究的人:默认配置就是强基线,改起来不累。
  • 教学场景:代码结构清晰,适合讲"从 token 到 chat"的全流程。
  • 需要可 fork 基线的团队:不像大框架那样被配置绑架,改几处就能出实验变体。

几个注意事项

  • 项目还在快速迭代,master 代码可能比讨论区的旧帖子新很多,看文档时留意日期。
  • 提交 PR 需要披露哪些部分用了 LLM 辅助,这点挺有意思。
  • 如果你只是想"用"一个强模型,直接下载现成的更好;nanochat 的价值在于你亲自跑通、亲自改。

我的看法

nanochat 最有价值的地方不是"便宜",而是它把 LLM 训练的认知成本也打下来了。你可以花一个下午,从 0 走到"和自己训的模型聊天",中间每一步都看得见、改得了。对于想理解 LLM 是怎么从一堆文本变成能对话的助手的人来说,这比读十篇论文都管用。

如果你也有 8×H100(或者单卡 + 耐心),值得一试。


项目地址:https://github.com/karpathy/nanochat

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/3 13:37:20

矩阵前乘矩阵后乘——几何变换

在2000年前&#xff0c;矩阵乘法的规范是行向量表示&#xff08;矩阵后乘&#xff09;&#xff0c;其实这种表示更符合信号变换的基向量展开公式&#xff0c;但是2000年后&#xff0c;规范就改为了列向量表示&#xff08;矩阵前乘&#xff09;&#xff0c;在两年前MATLAB将最后…

作者头像 李华
网站建设 2026/10/3 13:36:40

Linux wall 命令详解:向所有终端广播系统消息的运维实战指南

文档教程 【免费下载链接】linux-command Linux命令大全搜索工具&#xff0c;内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux 项目地址&#xff1a; https://gitcode.com/GitHub_Trending/linux/linux-command 点击查看 免费下载 wall&#xff08;write all&…

作者头像 李华
网站建设 2026/10/3 13:36:36

CPU 亲和性与中断优化实战指南:Windows 低延迟的 4 步落地方法

CPU 亲和性与中断优化实战指南&#xff1a;Windows 低延迟的 4 步落地方法 【免费下载链接】Atlas &#x1f680; An open and lightweight modification to Windows, designed to optimize performance, privacy and usability. 项目地址: https://gitcode.com/GitHub_Trend…

作者头像 李华