小模型上调好的学习率和 batch size,放大 100 倍还能用吗?
本课一问:C5 教了怎么调学习率、warmup 和 batch。实际做法是先在小模型上扫一遍、找到最好的那组。模型放大 100 倍之后,这组超参还能直接用吗?
这一课先不碰:μP 具体怎么改参数化(C8 第 5 课)、batch 在多张卡上怎么切(C10)、Muon 为什么能用更大的学习率(C5 已讲原理)。
从已有出发
贯穿任务的最后一问:给一个 Qwen3.8-27B 级别的 run 定学习率和 batch。我们手里有的,是小模型上的经验——项目基线在 3.7M 参数上用的是 AdamW、学习率 3×10⁻³、每步 8,192 个 token(32 条 × 256)。
- 解决了loss 随参数、数据、算力按幂律下降:参数翻倍,loss 乘以 0.9487(Kaplan 式 1.1)。幂律的多领域实证首见 Hestness 2017。卡在纯幂律没有底,直线外推偏乐观:Llama 3 的数据只用 ≤3×10²⁰ 的预算外推 10²²,预测 0.6574,真实 0.6931。
- 解决了给出 N ∝ C0.73:预算 ×10,模型 ×5.37、数据只 ×1.86。卡在Gopher 280B 只训 300B token;同预算的 Chinchilla 70B 训 1.4T,MMLU 60.0% → 67.6%。
- 解决了每个预算扫一遍模型大小,loss 呈 U 形,谷底连成前沿:N ∝ C≈0.5,约 20 token/参数。页内用 Chinchilla 的真实点拟得 a = 0.511,外推到 5.76×10²³ 得 67.1B / 1.43T。卡在只算训练的账。模型要服务 10T 个 token 时,按训练最优做的模型总算力 2.02×10²⁴,换成同样 loss 的 34.1B 小模型只要 1.44×10²⁴。
- 解决了Kaplan 偏大的主因找到了:只数非 embedding 参数 + 规模小(Pearce & Song);末层计算、warmup、按规模调优化器(Porian)。卡在Chinchilla 自己的拟合系数也有错:正文取整后的系数在 5.76×10²³ 隐含 92.6 token/参数,Besiroglu 重拟合是 18.4;抛物线法本身也有偏差(Llama 3 数据上相当于 6.5% 的预算配错)。
- 解决了把推理的 2N FLOPs/token 算进总账,最优模型变小、数据变多:Llama 3 8B 1,875 token/参数,Qwen3-0.6B 60,000。卡在小模型上调好的超参搬不过去:按 DeepSeek LLM 的式子,10¹⁷ FLOPs 的最优学习率是 67B 那一档的 7.5 倍。
- 解决了最优学习率、batch 写成 C 的幂律:DeepSeek LLM 7B 预测 η = 4.25e-4,实际用 4.2e-4。卡在换结构、换优化器,最优点就挪:Qwen3.8 报告里旧配方末了 loss 高 7.8e-3、下游平均低 4.14 分(自报);多数团队不公开系数。
- 解决了缩放不止一条轴:数据从哪来(C7)、测试时多想一会儿(C12)都进了预算。卡在高质量数据会先用完:我们项目只有 50 万 token 语料,val 在第 300 步(约 4.9 个 epoch)最低 4.7713,之后一路升到 6.9065(实验课)。
先自己设计:小模型调好的直接搬
- ① 朴素方案
- ② 它在哪失败
- ③ 改进方案
DeepSeek LLM 先在 10¹⁷ FLOPs 的小预算上做网格搜索,再在 10¹⁷ 到 2×10¹⁹ 之间拟合最优学习率与 batch 随算力的变化。把他们的式子分别代入最小的实验和 67B 模型的预算:
| 预算 | 最优学习率 | 最优 batch(token) |
|---|---|---|
| 10¹⁷ FLOPs(网格搜索的起点) | 2.34e-3 | 106,190 |
| DeepSeek LLM 67B(C = M·D = 9.95e+23) | 3.12e-4 | 20,654,134 |
直接搬,学习率大了 7.5 倍,batch 小了两个多数量级。
学习率偏大的后果有真实数据:Qwen3.8-Flash-Next 报告把学习率固定在最优值的 2 倍和 4 倍做压力测试,旧的 Qwen3.5 结构 + AdamW 在 2 倍时每万步 4.3 次 loss 尖峰,4 倍时 183 次,19,932 步里有 213 步超过裁剪阈值(自报,第③层可信度)。
两条路:
- (a) 超参也拟缩放律:像拟合 loss 一样,在一串小预算上找每一档的最优学习率和 batch,拟成 C 的幂律,再代入大模型的预算。DeepSeek LLM、Qwen 系列、Kimi K3 都这么做。
- (b) 换参数化:改初始化和每层学习率的缩放方式,让最优学习率在模型变宽时基本不动(μP,Yang et al. 2022)。这样小模型上调好的可以直接搬——这条路在 C8 第 5 课兑现。
改进:最优超参也是算力的函数
DeepSeek LLM 的做法分三步:
- 在 10¹⁷ FLOPs 上对 batch 和学习率做网格搜索,发现「近优」的区域很宽——泛化误差不超过最小值 0.25% 的组合都算近优。
- 在 10¹⁷ 到 2×10¹⁹ 之间的多个预算上重复,每个预算得到一片近优区域。
- 把「最优学习率 / 最优 batch」对算力 C 拟成幂律。
试四件事:① 预设从「10¹⁷」依次点到「DeepSeek LLM 67B」,看卡片里「直接搬 10¹⁷ 的超参」那一格:学习率大 7.5 倍;② 看两张小图里的方块(两个模型实际用的值)落在线上还是线外:7B 的学习率预测 4.25e-4 对实际 4.2e-4,67B 的 batch 预测 5,043 条对实际 4,608 条;③ 读 Qwen3.8 那张表:预测最优点和 η ×/÷ √2 的三个 run 差距在噪声内,旧配方(绿色之外、红底那行)下游平均低 4.14 分;④ 拖临界 batch 的 loss 滑杆:L = 3.0 时约 1.12M token,L = 2.0 时约 7.74M。
超参缩放律也不是一劳永逸:换了结构或优化器,最优点会挪。Qwen3.8-Flash-Next 换成 Gated DeltaNet 混合结构 + Muon 之后,在一个 48 层、156B-A7B 的 MoE 上用 419B token 对照:按新拟合预测的最优点(batch 8.4M、学习率 1.76×10⁻³)附近,学习率 ×/÷ √2、batch ×1.25 的 run 彼此只差 7e-4 以内;沿用旧 Qwen3.5 配方(batch 4.2M、学习率 6.8×10⁻⁴)末了 loss 高 7.8e-3。另一组 run(10.8B-A0.89B、4T token)上,batch 从旧配方的 12.6M 换成预测的 25.2M,loss 从 1.5774 降到 1.5702 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条官方自报的内部 run,第三方无法复现(第③层可信度);报告没有公开缩放律的系数。 出处Qwen3.8-Flash-Next 报告 §3.2、表 10 ↗需联网 。Qwen3 报告也说按三个预训练阶段分别拟合了学习率与 batch 的缩放律,但同样没有公开系数;Kimi K3 报告说用缩放律重新调了 batch、学习率、token/参数和模型形状,并自报「scaling 效率比 K2 高约 2.5 倍」——都属于只能看、不能复现的第③层。
常见误解一:「超参是模型结构的属性,和规模无关。」上面的式子说明最优学习率和 batch 都随算力系统地变;Qwen3.8 的例子说明,结构和优化器一换,整条关系也会挪。
常见误解二:「最优学习率是一个尖点,差一点就不行。」不是:DeepSeek 把误差在 0.25% 以内的都算近优,是一条宽带;Qwen3.8 的最优点附近,学习率乘或除 √2 都在噪声内。但「宽」有边界——偏到 4 倍,旧结构就频繁 loss 尖峰。
常见误解三:「batch 越大越好。」Qwen3.8 的对照里,比预测大 1.5 倍只差 5.0e-4,比预测小则 loss 急升;而 batch 大过临界值之后,多出来的样本只是在浪费算力(下面的临界 batch)。
🔍 batch 为什么要随 loss 变大?临界 batch 与 batch 渐增
McCandlish 等 2018 年提出「梯度噪声尺度」:batch 小于它时,加大 batch 几乎等比例减少所需步数;大于它时,多出的样本只是重复估计同一个梯度,浪费算力。Kaplan 2020 在语言模型上测得临界 batch 约为 Bcrit(L) = B*/L1/0.21,B* ≈ 2.1×10⁸ token(与分词绑定):loss 越低,临界 batch 越大。这也是很多团队「训练中逐步加大 batch」的理由:GPT-3 在前 40 亿到 120 亿 token 里从 32K token 线性加到满,Llama 3 405B 从 4M token 加到 8M、再到 16M,DeepSeek-V3 在前 469B token 里从 3,072 条序列加到 15,360 条。反例也有:Qwen3.8 换成 Muon 后发现,从一开始就用目标 batch 反而更好,渐增要多花 18.8% 的优化步数(自报)。现代做法本身也在变。
在我们自己的模型上看一眼
同样的问题缩到项目尺度:不同宽度的模型,最优学习率是否漂移?这一格读项目实验数据:
证据三问
| 问 | 本课的回答 |
|---|---|
| ① 它解决什么问题? | 大模型上没法反复试超参;要从小实验推出大模型该用的学习率和 batch |
| ② 数学上为什么可能有效? | 临界 batch 有梯度噪声的理论动机 证据等级 · 有理论动机 有数学或机制上的理由说明它可能有效,但没有证明它一定更好。最后是否采用,仍然要看实验。 本条噪声尺度预测「最大有用 batch」;是经验上验证过的理论模型,不是对最优学习率的证明。 出处McCandlish et al. 2018 ↗需联网 ;μP 从无限宽极限推出让超参不随宽度变的参数化 证据等级 · 有理论动机 有数学或机制上的理由说明它可能有效,但没有证明它一定更好。最后是否采用,仍然要看实验。 本条理论推导 + 实验;C8 第 5 课展开。 出处Yang et al. 2022(Tensor Programs V) ↗需联网 |
| ③ 实验上为什么选了它? | DeepSeek LLM 用小预算拟出的式子预测 7B、67B 的超参,与实际所用基本一致 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条10¹⁷–2×10¹⁹ 拟合,外推到约 10²³–10²⁴;系数公开,可以核算。 出处DeepSeek LLM §3.1、表 2 ↗需联网 ;Porian 2024 也拟出了学习率与 batch 的缩放律,并发现小 batch 时必须调 AdamW 的 β₂;Qwen3.8、K3 的对照是自报 |
一句话
超参不是常数:最优学习率随算力变小、最优 batch 随算力变大,结构和优化器一换还会整体挪动——要么拟合超参的缩放律,要么换一种参数化让它们不随规模变。
先停在这里:记住「η 随 C 变小、B 随 C 变大」,这一章就走完了。
再深一层:展开临界 batch 的 Dig;读 DeepSeek LLM §3.1–3.2,它把超参缩放律和模型 / 数据缩放律放在一起讲。
下一个缺口
规模和超参都定了。可第 3 课的账本默认「新数据要多少有多少」——15T 个高质量 token 从哪来? → C7 数据:从哪来、怎么洗、怎么配
回扣先记下:μP(让小模型调好的学习率直接搬到大模型)在 C8 第 5 课兑现;那一课会用本课的「直接搬」当朴素方案。
你可能会问
- 「把 DeepSeek 的式子代入我们的项目会怎样?」 按 6ND 我们的基线是 7.25e+13 FLOPs,代进去得学习率 5.77e-3、batch 9,980 token,和基线用的 3×10⁻³、8,192 token 同一量级。但这是越界外推:他们的拟合区间是 10¹⁷–2×10¹⁹,我们小了 3 个多数量级;C 的口径(M·D vs 6ND)也不同。能不能用,要看我们自己的宽度 × 学习率扫描。
- 「Muon 下超参还这么敏感吗?」 Qwen3.8 报告的观察是:结构 + Muon 让最优学习率和 batch 都变大,且更稳(4 倍学习率下没有 loss 尖峰)。这是自报的结论;C5 讲过 Muon 的原理,C8 讲稳定性。
- 「warmup 要不要也随规模变?」 Porian 2024 发现 warmup 时长正是 Kaplan 与 Chinchilla 结论不同的原因之一(岔路课);具体怎么定,C5 与 C8 分别从优化和稳定性两边讲。