M32:单变量训练实验:让曲线差异具有因果含义
单变量训练实验是在同一参照配置上只改变一个因素,用最小成本判断该因素是否可能导致可重复的训练行为变化。
内容类型:预习教材(不代表已完成)
日期:2026-09-24
阶段:P1 · AI Model Engineering 90
周次:W5 · 小语言模型预训练、数据与 scaling
节奏:周四案例与连接
状态:教材已备;学习未完成
标签:controlled-experiment、learning-rate、data-scale、model-width、data-mix
一句话定义
单变量训练实验是在同一参照配置上只改变一个因素,用最小成本判断该因素是否可能导致可重复的训练行为变化。
学习目标
- 能设计数据量、学习率、模型宽度或领域配比中的一个受控对照。
- 能区分“曲线不同”“最终指标不同”与“因果机制已被证明”。
- 能为小算力实验选择公平的比较横轴与停止点。
核心知识
受控实验包含 baseline、treatment 和保持不变的控制项。若选择改变学习率,数据顺序、seed、batch、模型结构、训练 token 数和评估频率原则上都应保持一致。现实中算力具有随机性,因此单次差异只能形成初步证据。
四个候选变量回答不同问题:
- 数据量:更多独立样本是否缓解验证误差,还是只是重复相似文本?
- 学习率:更新步长是否过小导致学习慢,或过大导致震荡/发散?
- 模型宽度:容量是否限制拟合,同时资源与优化难度增加多少?
- 领域配比:领域行为是否改善,通用能力或语言覆盖是否退化?
公平性依赖比较预算。固定 step 但改变 batch,会改变已见 token 数;固定墙钟时间又会奖励吞吐更高的配置。学习机制实验通常按相同训练 token 数比较,资源决策则可同时报告相同 token 与相同时间两种视角。
机制/推导
以学习率为例,最基本更新为 θ_(t+1)=θ_t−η·g_t。η 太小,单位 token 的参数移动有限;太大时会跨过局部低损失区域,并放大噪声梯度。观察时不只看最终 loss,还要看早期下降速度、震荡幅度、梯度范数与是否出现非有限值。
若改变数据量,应保持训练 token 预算还是 epoch 数,取决于问题。固定 epoch 会让更大数据集得到更多更新;固定 token 则更直接比较“数据多样性”影响。必须在记录中写清选择。
最小练习或观察步骤
- 从 M31 baseline 复制配置,先写下问题,例如“学习率翻倍会怎样影响前 200 step 的稳定性?”
- 只选择一个变量,并列出至少六项保持不变的配置。
- 预先定义观察量:train/validation loss、曲线方差、吞吐、峰值内存或目标领域样例损失。
- 运行 A/B 两条训练;资源不足时可以缩短训练,但两边预算必须一致。
- 将两条曲线放在同一坐标系,并标注横轴单位。
- 用“支持 / 不支持 / 证据不足”总结,不从一次小实验推广成 scaling law。
常见误区
- 同时改变模型宽度、batch 和学习率,却将差异归因于其中一个。
- 只挑最好 step 比较,忽略预先设定的停止点。
- 数据量增加时保留重复样本,误把重复次数当信息增量。
- 用视觉上更平滑的曲线宣称模型更好,而没有比较验证指标。
- 小模型、短训练的结果直接外推到大模型和长预算。
金融 / Web3 / 文档场景连接
领域配比实验可用于判断是否应增加法规、交易叙述或合约文档。但如果“领域验证集”与新增数据来自同一模板,提升可能只是模板记忆。应按来源、时间或实体去重,并同时观察通用验证集,避免模型只会一种机构措辞。
自检问题
- 改变 batch 后为何不能只按 step 对齐两条曲线?
- 固定 epoch 与固定 token 分别隐含什么比较目标?
- 一次 A/B 实验最多能支持多强的结论?
- 领域配比提升时,为什么还要保留通用验证集?
专业课程对齐
- 精读 Stanford CS336 的优化、scaling 与实验管理课题,观察课程如何在固定 token budget 下比较学习率、batch 或模型尺寸。
- 精读 PyTorch Tutorials 中 reproducibility、randomness 与 profiler 主题,对照 seed、DataLoader worker、确定性算子和 warm-up 对对照实验的影响。
- 选读 Hugging Face LLM Course 的 fine-tuning 章节,辨认 Trainer 默认配置中会同时变化哪些因素。
深入学习提示
先学 CS336 的可比性思路,再用 PyTorch 排除随机性与性能噪声,HF 仅用于检查框架默认值。对每组实验写出处理变量、控制变量和响应变量,并用相同已见 tokens 数对齐 loss,而不是只对齐 step。观察 learning-rate schedule 公式与 effective batch size,并报告多个 seed 的离散度。反例是同时改 context 和 batch 却归因于学习率,或将单次运行的小差异解释为稳定效应。
**研读产出:**在运行前先写预测:若只改学习率,预期早期收敛速度、震荡和最终验证损失会如何变,什么现象会否定这个预测。建立实验 manifest,对两组运行做配置 diff,理想状态只有一行不同;若框架因为 batch 变化自动改变 scheduler 步数,必须明示写入混杂因素。结论用“在当前种子、数据与预算下观察到”限定,且把效应量与运行间波动并列;差异低于噪声时,结论应是证据不足,不是强行选出胜者。
学后填写区
- 本次问题与假设:
- 唯一改变的变量:
- 保持不变的条件:
- 观察事实:
- 结论强度(支持 / 不支持 / 证据不足):