A3(Scaling Laws)
在固定计算预算下,用少量“试验预算”构建 scaling law,并预测 1e19 FLOPs 下的 compute-optimal 模型规模与超参。它不要求你真的训练模型,而是通过一个“训练 API”查询不同配置的最终 loss,然后用这些结果拟合与外推。
1) 整体设定与交付物
设定(你在做什么)
- 你负责训练 ClosedAI 下一代 LM,有一个大训练预算 \(C_{\text{big}} = 1e19\) FLOPs,目标是 training loss 最低(compute-optimal)。
- 你有一个用于“拟合 scaling law 的试验预算” \(2e18\) FLOPs(相当于大预算的 20%),超出就不能再 query。
writeup.pdf:你的拟合方法与如何预测最优模型/超参,要求可复现。
code.zip:你写的代码(拟合 scaling law + 做估计)。
- Google Form:
- 预测的最优模型大小
- 训练超参
- 预测的 loss
最终成绩一部分取决于你预测的“最优”表现。
## 2) Part A:Scaling Laws Review(Chinchilla IsoFLOPs 复现题,5分)
这是一个“热身+校准”任务:用给定的合成数据复现 IsoFLOPs 方法。
任务:chinchilla_isoflops(5 points)
- 输入数据:
data/isoflops_curves.json,每条记录包含:
parameters(模型参数量 N)
compute_budget(同一条 IsoFLOPs 曲线上的 C)
final_loss(最终训练 loss)
- 要做的事:
- 对每个 compute budget \(C_i\),找出最小 loss 对应的 \(N_{\text{opt}}(C_i)\)(建议直接取最低 loss 的 run,而不是拟合二次曲线)。
- 用这些点拟合 power law:
- \(N_{\text{opt}} \propto C^a\)
- 同理可得到 \(D_{\text{opt}}\)(因为 \(C \approx 6ND\),所以 \(D = C/(6N)\))
- 画两张图并回答外推结果:
图1:\(N_{\text{opt}}(C)\) 的拟合曲线 + 数据点,外推到至少 \(10^{24}\) FLOPs,并给出 \(10^{23}\)、\(10^{24}\) 下的预测 \(N_{\text{opt}}\)(一句话)。
图2:\(D_{\text{opt}}(C)\) 的拟合曲线 + 数据点,并给出 \(10^{23}\)、\(10^{24}\) 下的预测 \(D_{\text{opt}}\)。
能力点:理解 Chinchilla IsoFLOPs 的“先找每条曲线的最优点 → 再拟合 power law → 再外推”的套路。
3) Part B:Constructing Scaling Laws(主任务,50分)
用“训练 API”设计试验、拟合 scaling law、并预测 \(1e19\) FLOPs 下最优模型大小与训练超参。
任务:scaling_laws(50 points)
- 目标:预测
- 最优模型参数量(或对应结构)
- 对应训练超参(layers、d_model、heads、batch、lr)
- 该配置在 \(1e19\) FLOPs 下的 predicted final training loss
- 关键约束:
- 你用于拟合的试验总 FLOPs 预算 ≤ 2e18,API 会硬性拒绝超预算请求。
- batch size 必须是 128 或 256(为了保证较高 MFU;若 OOM,官方会用 grad accumulation 或更多 data parallel GPU 维持 batch)。
- 你必须在 writeup 中回答/讨论(给出的“必须思考点”):
- 你如何决定在 2e18 FLOPs 预算内“问哪些点”?
- 你如何拟合 scaling law(可参考 Kaplan 2020、Hoffmann 2022、Yang 2022 等方法)?
- 拟合效果如何(fit quality)?
- \(1e19\) 下预测的 \(N_{\text{opt}}\) 和 loss 是多少?
- 如果真训练你预测参数量的模型,你会选哪些超参?并提供估算 non-embedding 参数量的公式 \(12 n_{\text{layer}} d_{\text{model}}^2\)。
### 训练 API(写代码调用)
API 的核心 endpoint:GET /loss,输入一个配置 → 返回 loss 和 total_flops_used。
可调超参范围(你会在试验设计里 sweep):
d_model:64–1024
num_layers:2–24
num_heads:2–16
batch_size:128 或 256
learning_rate:1e-4 到 1e-3
train_flops:从 1e13 到 1e18 的离散集合(很多档位)
还有两个辅助 endpoint:
GET /total_flops_used:查当前 key 已用 FLOPs
GET /previous_runs:拿到历史所有 query 的配置与 loss(便于复现/缓存)。
能力点:
- 试验设计(active learning/DoE 思维):预算很紧,怎么选点最值。
- 拟合与外推:IsoFLOPs、power law、误差与稳健性。
- 工程可复现:缓存重复配置不计 FLOPs(同配置重复 query 不额外扣预算)。
4) 训练细节“透明化”任务(用于做合理假设)
给了训练 run 的固定细节(让你理解 loss 的生成机制与超参影响),例如:
- 模型与 A1 类似但有差异:绝对位置 embedding、LayerNorm、GeLU FFN(d_ff=4 d_model)、dropout、untied embeddings。
- 数据:SlimPajama;tokenizer:byte-level BPE 32k;context length=512;优化器 AdamW、clip=1.0、weight decay=0.01、cosine LR 无 warmup。
能力点:理解你拟合出来的 scaling law “对应的是哪套训练 recipe”。
一句话总结:A3 包含哪些任务类型?
- 复现 IsoFLOPs 的标准套路(小题):从合成 runs 里找到 \(N_{\text{opt}}(C)\)、\(D_{\text{opt}}(C)\) 并拟合 power law,再外推到更大预算。
- 主任务:预算受限的实验设计 + 拟合 scaling law + 预测 1e19 FLOPs 最优配置:写代码调用训练 API、控制 2e18 预算、给出可复现方法论与最终预测,并按预测效果计分。