对应 Maps to:Stanford CS525 Winter 2026 Training Data for AI,3/4 客座讲座的前半部分:Mayee Chen(Stanford)Efficient Data Mixing for Language Models(81 页 slides);学生报告 Phi-4 Technical Report(Seyone Chithrananda)里关于数据配比的部分。阅读:OLMix: A Framework for Data Mixing Throughout LM Development(Chen et al. 2026)。 依据说明:Chen 的 slides 文字完整可读,是本讲的骨架(离线方法的设计选择研究、在线方法的统一框架 Aioli、开发过程中的”复用比例”)。OLMix、Aioli、DoReMi、RegMix、Data Mixing Laws 的关键数字核对过各论文的摘要;slides 里只以图的形式出现的结论(例如”代理模型 15M 以上就够”),讲义里标明是”slides 的结论”。GPT-3、Llama 3 的数据配比来自它们的技术报告;Phi-4 的配比来自学生报告的 slides。第 6 节”统一的视角”和第 7 节”延伸与前沿”是我补充的。 配套代码 Code:
code/lecture10/(numpy;3 个脚本 + 2 个模块;最长的约 40 秒) 预计阅读时间:2.5 小时(含运行代码)
0. 本讲导航 · How to read this lecture
0.1 学习目标 Learning goals
- 说清楚数据混合问题:给定几个数据领域和一个训练预算,每个领域占多少;为什么它重要、为什么难。
- 知道几种常用的启发式(按数据量、均匀、温度采样、人工上采样),以及它们各自的问题。
- 理解离线混合方法的统一模板(代理模型群 → 回归 → 优化),以及 OLMix 研究过的设计选择:代理多大、多少个、什么回归模型、怎样处理重复。
- 理解在线混合方法(DoReMi、Skill-it、Aioli):边训练边调比例,以及”线性混合优化”这个统一框架。
- 理解真实开发中的混合问题:数据领域一直在变,以及 OLMix 的”复用比例”。
- 能读懂代码里的合成世界,知道它的结论哪些能推广、哪些不能。
0.2 先修与本讲范围 Prerequisites & scope
| 默认你已经会 Assumed | 本讲不展开 Not covered |
|---|---|
| 第 6 讲:扩展律、DCLM 的”固定训练、只换数据”的方法论 | 多语言混合的细节(只在 §7 提一下) |
| 第 7 讲:数据重复的价值() | 合成数据怎样生成(第 11 讲) |
| 交叉熵、bits-per-byte、Spearman 相关 | 后训练阶段的数据配比(第 8 讲讲过 Tulu 3 的消融) |
0.3 本讲地图 Map
§1 混合问题:是什么、为什么重要、为什么难 ← 代码 01 演示 1、2
§2 启发式:按数据量、均匀、温度、上采样;重复的代价 ← 代码 01 演示 3
§3 离线方法:代理群 → 回归 → 优化(RegMix、DML、OLMix) ← 代码 02
§4 在线方法:DoReMi、Skill-it、Aioli 与线性混合优化 ← 代码 03 演示 1
§5 开发过程中的混合:领域会变,复用比例 ← 代码 03 演示 2
§6 一个统一的视角;这个合成世界能说明什么
§7 延伸与前沿
§8–12 小结、常见误区、练习、延伸阅读、下一讲预告
0.4 关于数字
论文的数字来自 slides 和论文摘要。代码的数字来自一个合成的多领域世界 mix_world.py:
- 成分:6 种”语言成分”(通用、百科、对话、代码、数学、噪声),每种有自己的词汇(大部分不重叠,0–3 号是共享的”功能词”)和自己的”语法”(三元转移概率)。
- 领域:6 个数据来源,每个是成分的一种混合,有自己的数据量——网页 200 万 token(大,但有 14% 左右的噪声),维基 5000、书 15000、代码 30000、数学 2500、论坛 10000(小而干净)。
- 任务:8 个下游任务(知识问答、阅读、对话、写代码、讲代码、应用题、证明、科学),每个也是成分的混合,用交叉熵(比特 / token)评测;8 个任务的平均就是我们要最小化的目标。
- 模型:一个三元计数语言模型(Witten–Bell 平滑),“训练”只要几毫秒。模型大小
width控制它能区分多少种上下文;预算 是训练的 token 数。目标模型 width 40、 = 20 万。超过一个领域的数据量就得重复,重复的 token 按 Muennighoff 的公式打折()。
这个世界有意保留了数据混合的几个核心性质(预算有限、领域之间有迁移也有冲突、小领域会被重复、小模型和大模型的判断可能不同),但它没有优化过程、训练和数据顺序无关。§6 会说清楚这意味着什么。代码固定了随机种子,同一台机器上重复运行输出逐字相同。
1. 混合问题:是什么、为什么重要、为什么难
1.1 混合无处不在
我们想要一个”什么都会”的语言模型:总结文档、写代码、解数学题。预训练数据于是来自很多领域:网页、数学、代码、书、论文、百科……每个领域占多少? 这就是数据混合(data mixing)问题。
Chen 的 slides 强调:“只要你整理了不止一个数据集,就要决定它们的比例。“混合的维度也不只是”来源”:
- 语言:多语言模型里英语占多少、低资源语言上采样多少;
- 上下文长度:短文档和长文档的比例;
- 质量分数:第 7 讲 Nemotron-CC 把数据按质量分成 5 个等级——每个等级占多少也是一个混合问题;
- 后训练数据:Tulu 3 的 SFT 数据里数学、代码、指令遵循、安全各占多少(第 8 讲)。
几个真实的例子:
| 模型 | 数据配比 | 备注 |
|---|---|---|
| GPT-3(2020) | Common Crawl 60%、WebText2 22%、Books1 8%、Books2 8%、Wikipedia 3% | 按”质量”人工上采样:训练中 Wikipedia 被看了约 3.4 遍,Common Crawl 只看了 0.44 遍 |
| Llama 3(2024) | 通用知识约 50%、数学与推理 25%、代码 17%、多语言 8% | 用小模型上的扩展律实验来决定 |
| Phi-4(2024) | 合成数据 40%、网页改写 15%、过滤后的网页 15%、代码 20%、购买的数据 10% | 学生报告强调”遍数 vs 独特 token”:合成数据被重复很多遍,网页提供大量独特 token |
注意 GPT-3 这一行:比例和数据量是两回事。一个领域分到的 token 数可以比它拥有的独特 token 多(要重复),也可以少(只用一部分)。
1.2 形式化
Chen 的 slides(沿用 OLMix 的记号)这样定义问题:
- 有 个领域 (网页、代码、数学、法律……);
- 要训练一个 个参数的目标模型,看 个 token;
- 混合比例 (非负、和为 1),领域 分到 个 token;
- 训练出 ,在 个下游任务上测 bits-per-byte ;
- 目标:
研究问题:“怎样用尽量少的额外训练算力,找到让下游表现好的混合比例。”
1.3 为什么重要:代码 01 演示 1
在我们的世界里,6 个领域、预算 20 万 token:
| 比例 | 网页 | 维基 | 书 | 代码 | 数学 | 论坛 | 平均损失 | 比自然分布好 |
|---|---|---|---|---|---|---|---|---|
| 自然分布(按数据量) | 0.970 | 0.002 | 0.007 | 0.015 | 0.001 | 0.005 | 2.9776 | 0.0% |
| 均匀(stratified) | 0.167 | 0.167 | 0.167 | 0.167 | 0.167 | 0.167 | 2.9549 | 5.9% |
| 温度 τ=2 | 0.733 | 0.037 | 0.063 | 0.090 | 0.026 | 0.052 | 2.9357 | 10.9% |
| 温度 τ=3 | 0.539 | 0.073 | 0.105 | 0.133 | 0.058 | 0.092 | 2.9266 | 13.2% |
| 温度 τ=5 | 0.368 | 0.111 | 0.138 | 0.159 | 0.097 | 0.127 | 2.9298 | 12.4% |
| 在目标模型上搜索(参照) | 0.533 | 0.089 | 0.077 | 0.098 | 0.089 | 0.115 | 2.9184 | 15.4% |
“比自然分布好”是可学习部分减少的百分比:8 个任务的熵下界平均是 2.5925 比特(任何模型都做不到更低),自然分布的可学习部分是 比特,搜出来的比例把它减少了 15.4%。
几点观察:
- 差别是真实的:从最差的启发式到最好的比例,可学习的损失差了 15%。对比第 6 讲:DCLM 里换一个质量过滤器,差别也是这个量级。
- 自然分布最差:小来源几乎分不到预算,数学、证明这类任务没有数据可学。
- 均匀也不好:把 1/6 的预算给只有 2500 个 token 的数学,等于重复 13 遍。
- 搜出来的比例让数学重复了 7.1 遍、维基 3.6 遍,网页只用了 5% 的数据——小而干净的来源值得重复几遍,但不是无限多遍。
“在目标模型上搜索”在这里训练了 400 个目标规模的模型。现实里训练一个目标模型就要几百万美元,这条路走不通。整个数据混合的研究就是在问:怎样用便宜得多的办法接近它?
1.4 为什么难:此消彼长(代码 01 演示 2)
Chen 的 slides 第 5 页有一组柱状图:每换一种混合,数学、代码、通用三类任务的改进各不相同,有正有负,幅度从 −40 到 +40。我们在世界里做同样的实验:从温度 τ=3 的比例出发,多给某个领域 10%(其他领域按比例缩小),看 8 个任务的损失怎样变(毫比特 / token,负数 = 变好):
| 多给 | 知识问答 | 阅读 | 对话 | 写代码 | 讲代码 | 应用题 | 证明 | 科学 | 平均 |
|---|---|---|---|---|---|---|---|---|---|
| +网页 | −11 | −10 | −5 | +33 | +15 | −10 | −5 | −9 | −0.4 |
| +维基 | −17 | +7 | +14 | +14 | +13 | +10 | +0 | −8 | +4.1 |
| +书 | +12 | −14 | −26 | +19 | +1 | +8 | +22 | +18 | +5.1 |
| +代码 | +27 | +21 | +32 | −98 | −38 | +78 | +88 | +57 | +20.7 |
| +数学 | +16 | +10 | +14 | +41 | +29 | −61 | −53 | −17 | −2.7 |
| +论坛 | +24 | +3 | −7 | +6 | +1 | −11 | +1 | +13 | +4.1 |
- 预算是零和的:多给代码,写代码的损失降了 98,但其他所有任务都变差了。
- 领域和任务不是一一对应的:网页帮助问答、阅读、数学,却伤害代码任务;书帮助对话和阅读,却伤害证明。
- 没有一个比例对所有任务都最好。“最好的混合”取决于你在意哪些任务、怎样加权(这里是简单平均)。
这就是为什么混合比例不能拍脑袋,要靠实验——而实验很贵。
2. 启发式与重复的代价
2.1 四种常用的启发式
- 自然分布(按数据量):。“有多少用多少”,不需要任何决定。问题:大领域(网页)淹没小领域。
- 均匀(stratified sampling):。Aioli 的论文把它当作基线,发现很多复杂方法都不能稳定地超过它。问题:小领域被重复太多遍。
- 温度采样:。τ = 1 是自然分布,τ → ∞ 是均匀。多语言模型常用(mT5 取 )。它在两个极端之间折中,在我们的世界里 τ = 3 已经很接近最好的比例。
- 按质量人工上采样:GPT-3 的做法——觉得哪个来源质量高,就让它多被看几遍。依赖直觉,难以推广到几十个领域。
2.2 重复:小领域能放多少(代码 01 演示 3)
小领域的问题是数据量:数学只有 2500 个 token,给它 10% 的预算就要重复 8 遍。第 7 讲讲过 Muennighoff 的结论:重复 4 遍以内的数据几乎和新数据一样有用,之后价值递减。Chen 的 slides 引用这个结论说”重复超过 4–5 遍就没什么价值了”。
我们在世界里比较”重复的数学数据”和”同样多的新数学数据”(后者是假想的:如果真有无限多的数学数据):
| 数学比例 | 遍数 | 有效遍数 | 应用题(重复) | 应用题(新数据) | 平均(重复) |
|---|---|---|---|---|---|
| 0.0125 | 1 | 1.0 | 3.2376 | 3.2396 | 2.9463 |
| 0.025 | 2 | 2.0 | 3.2051 | 3.1953 | 2.9377 |
| 0.05 | 4 | 3.7 | 3.1590 | 3.1279 | 2.9267 |
| 0.1 | 8 | 6.6 | 3.1188 | 3.0422 | 2.9236 |
| 0.2 | 16 | 10.6 | 3.0810 | 2.9504 | 2.9269 |
| 0.4 | 32 | 14.3 | 3.0618 | 2.8739 | 2.9507 |
(完全不放数学时,应用题的损失是 3.2985。)
- 重复 4 遍的数学数据拿到了”同样多的新数据”在应用题上收益的 82%,16 遍时 62%,32 遍时 56%。
- 8 个任务的平均损失在重复约 8 遍时最好;再多,花在数学上的预算从别的领域拿走的比它带来的多。
- 如果真有更多新的数学数据,数学任务会一直变好。瓶颈是独特数据量,不是比例本身——这正是第 11 讲合成数据想解决的问题(Phi-4 的合成数据被重复很多遍,仍然比 4 遍时好)。
诚实的说明:重复的价值递减在这个世界里是”写进去的”——我们直接用了 Muennighoff 的有效数据公式 ( 是遍数)。另外,数据稀疏时重复会让计数模型”过于自信”(平滑的回退变少),这是一个额外的、模型自己产生的代价。所以演示 3 说明的是”如果重复的价值这样衰减,混合比例应该怎样变”,而不是证明重复的价值会这样衰减。
3. 离线方法:代理群 → 回归 → 优化
3.1 统一的模板
RegMix(Liu et al. 2024)、Data Mixing Laws(Ye et al. 2024)等方法都遵循同一个模板(Chen 的 slides 称之为 offline mixing schema):
1. 建群(swarm):抽 K 个混合比例 p_1, …, p_K,在每个比例上训练一个小的"代理模型"(proxy),
记下每个任务的损失 f_i(p_k);
2. 回归(regression):拟合 f̂_i(p) ≈ f_i(p),从比例预测损失;
3. 优化(optimization):p* = argmin_p (1/n) Σ_i f̂_i(p),可以加约束;
4. 用 p* 训练目标模型。
两个代表:
- RegMix:训练 512 个 100 万参数的小模型(各看 10 亿 token),用 LightGBM 回归;按预测的最好比例训练一个 10 亿参数、看 250 亿 token 的模型,它超过了 64 个其他候选比例训练的同样大小的模型。RegMix 还报告了一个反直觉的发现:网页数据和下游表现的相关性比维基百科这样的”高质量”来源更强。
- Data Mixing Laws:发现损失和比例之间有可预测的函数关系,形如 ;再和”训练步数、模型大小”的扩展律嵌套,用小规模实验预测大模型。在 RedPajama 上为一个 10 亿参数、看 1000 亿 token 的模型优化比例,效果相当于用默认比例多训练 48% 的步数。
3.2 OLMix 的设计选择研究
问题在于:模板的每一步都有很多选择,而已有的工作各选各的,很少给出理由。OLMix 列出了 7 个问题:
| 阶段 | 问题 |
|---|---|
| 建群 | 1. 代理模型多大? 2. 多少个代理? 3. 比例从什么分布里抽? |
| 回归 | 4. 用什么回归模型? 5. 回归目标的粒度(每个任务一个还是平均)? |
| 优化 | 6. 数据有限时怎样混合(重复)? 7. 用什么数值方法求解? |
实验设置:1B 参数的目标模型(按 5 倍 Chinchilla 的 token 数训练),把 DCLM-Baseline 按话题分成 24 个领域,在 52 个数学、代码、问答任务上测 BPB。我们在世界里重做其中四个。
研究问题 1:代理模型要多大?
已有的工作用 100 万到 4 亿参数的代理。代理和目标对”哪个比例更好”的排序一致吗?slides 举了一个例子:代理的排序是 ,目标是 ,Spearman 相关只有 0.4。slides 的结论是:对 1B 的目标模型,15M 以上的代理就够了。
代码 02 演示 1 在 40 个比例上比较代理和目标的排序(Spearman 相关):
| 代理大小 width | 预算 20k | 预算 50k | 预算 200k |
|---|---|---|---|
| 1 | 0.50 | 0.45 | 0.44 |
| 2 | 0.53 | 0.52 | 0.52 |
| 5 | 0.59 | 0.66 | 0.72 |
| 10 | 0.63 | 0.72 | 0.81 |
| 20 | 0.70 | 0.84 | 0.94 |
| 40 | 0.71 | 0.92 | 0.99 |
- 最小的代理(只看前一个词)的排序相关只有 0.44–0.50——和 slides 里”0.4”的例子差不多。
- 代理越大、预算越接近目标,排序越一致。和目标同样大小、同样预算(只有数据抽样的种子不同)时是 0.99,这是噪声决定的上限。
- 预算和模型大小一样重要:width 40 但预算只有 20k 的代理只有 0.71。原因是预算小的代理看不到”小领域被重复很多遍”的效果——演示 4 会看到后果。
一个具体的阈值(“15M”)只在具体的设置下成立;可推广的是方法:先在一组比例上检查代理和目标的排序是否一致,再决定用多小的代理。
研究问题 4:用什么回归模型?
已有的工作各自提出一个回归模型,并都声称拟合得很好:LightGBM(RegMix)、高斯过程(ADMIRE-BayesOpt)、对数线性(Data Mixing Laws)、BiMix、AutoScale。OLMix 的发现:拟合质量和群的大小纠缠在一起(群小时谁好谁坏会变);24 个领域、 时,对数线性模型拟合得最好; 时,对数线性模型提出的比例在下游最好。
OlmixBase 因此选了每个任务一个对数线性模型:
是”混合得再好也去不掉的损失”, 是能通过调比例减少的部分。拟合方法:对 网格搜索,固定 后 是线性回归。
代码 02 演示 2 比较四种回归(代理 width 10、预算 50k;5 个随机群的平均;优化时加 的重复约束):
| 回归模型 | 留出 R²(K=28) | 留出 R²(K=112) | 目标损失(K=28) | 目标损失(K=112) |
|---|---|---|---|---|
| 线性 | 0.712 | 0.815 | 2.9567 | 2.9482 |
| 对数线性(OLMix) | 0.860 | 0.922 | 2.9317 | 2.9317 |
| 对数特征(边际递减) | 0.859 | 0.900 | 2.9275 | 2.9276 |
| 3 近邻(不外推) | 0.506 | 0.716 | 2.9446 | 2.9344 |
(参照:温度 τ=3 是 2.9266,在目标模型上搜索是 2.9184,自然分布是 2.9776。)
- 对数线性的留出 R² 最高,和 OLMix 一致。线性模型学不到边际递减;k 近邻(代表 LightGBM 这类不外推的方法)在群小的时候几乎没有预测力。
- 拟合得好不等于提出的比例好。“对数特征”模型 的 R² 略低,提出的比例却更好。原因: 是凸函数,它的最小点常常落在边界上——把某个领域推到 0 或推到上限(我查看过对数线性提出的比例:书或论坛经常被设为 0)。对数特征模型天然认为”一个领域从 0 加到 5% 的作用很大”,不会轻易把它清零。
- 最重要的一点:在这个世界里,这几种方法都没有明显超过它们的出发点——温度 τ=3。我们从 τ=3 周围抽群,回归和优化之后,最好的结果(2.9275)和 τ=3(2.9266)几乎一样。混合方法的价值要和一个好的启发式比,而不是只和自然分布比。
研究问题 2:要多少个代理?
已有的工作差别很大:21 个领域用 512 个代理(RegMix),7 个领域用 20 个。OLMix 的实验:,。结论:样本复杂度是线性的, 个代理就能学到好的比例。
代码 02 演示 3():
| K | K/(m+1) | 对数线性 | 对数特征 |
|---|---|---|---|
| 7 | 1 | 2.9525 | 2.9554 |
| 14 | 2 | 2.9337 | 2.9447 |
| 28 | 4 | 2.9317 | 2.9275 |
| 56 | 8 | 2.9317 | 2.9269 |
| 112 | 16 | 2.9317 | 2.9276 |
时,回归的参数和数据一样多,提出的比例很差;到 – 之后就不再改进了。我们只看了 ,没有验证”随 线性增长”;但”几倍于领域数就够”是一致的。代理的总成本 ≈ × 一个代理的成本;领域从 6 个变成 60 个,代理也要多 10 倍——这是 §5”复用比例”的动机。
研究问题 6:重复约束
Chen 的 slides 用一张图说明问题:网页、数学、代码三个领域各有一定的数据量(可用 token),一个混合比例”请求”的 token 数如果超过可用量,就要重复——重复 2.5 遍”还行”,重复 8 遍”糟糕”。已有的方法都假设”数据无限”(只受算力约束),没有办法控制重复。OLMix 在优化里加一个约束:
是领域 的可用 token, 是目标模型的预算, 是允许的最多遍数(约 4–5)。slides 的结论:“重复约束对提出的比例影响很大。”
为什么代理模型自己发现不了这个问题?因为代理的预算小。在代理的预算下,给一个小领域 20% 只意味着看它一两遍;到了目标的预算,同样的比例就是十几遍。代码 02 演示 4(对数线性,):
| 约束 | 维基比例 | 数学比例 | 论坛比例 | 维基遍数 | 数学遍数 | 目标损失 |
|---|---|---|---|---|---|---|
| 不约束 | 0.159 | 0.283 | 0.110 | 6.3 | 22.6 | 3.1187 |
| 16 | 0.238 | 0.160 | 0.128 | 9.5 | 12.8 | 3.0598 |
| 8 | 0.194 | 0.100 | 0.211 | 7.7 | 8.0 | 2.9600 |
| 4 | 0.098 | 0.050 | 0.139 | 3.9 | 4.0 | 2.9317 |
| 2 | 0.043 | 0.025 | 0.069 | 1.7 | 2.0 | 2.9376 |
不加约束时,优化在代理(50k 预算)上看到”数学和维基多多益善”,提出的比例在目标上意味着数学重复 23 遍,损失 3.1187——比自然分布(2.9776)还差。加上 的约束后是 2.9317。这是本讲代码里最清楚的一个结论,和 OLMix 完全一致。
更一般的教训:代理和目标的差别不只是”模型更小”。凡是随规模变化的东西——重复、过拟合、容量——代理都可能看不到,需要单独建模(像这里的约束)或单独测量。
3.3 OlmixBase
把这些选择放在一起,OLMix 的离线基线(OlmixBase)是:30M 参数的代理、 个代理、每个任务一个对数线性模型、带重复约束的优化。代码 03 里的”OlmixBase 式”方法用的是同样的配方(width 10、预算 1/4 的代理,,对数线性,)。
4. 在线方法:边训练边调比例
4.1 离线 vs 在线
Chen 的 slides 对比了两种设置:
| 离线(静态比例) | 在线(动态比例) | |
|---|---|---|
| 优点 | 容易启动;最后的比例容易迁移到别的训练 | 根据当前的模型状态调整比例(有很强的证据表明数据的顺序有影响);只需要一次训练 |
| 缺点 | 要训练很多模型;静态的比例可能”把性能留在桌上” | 难以实现,和训练框架不太兼容;得到的比例难以迁移 |
在线混合把训练分成 轮,每轮的比例 可以不同;目标是最后一轮之后各领域损失的平均最小。
4.2 DoReMi
DoReMi(Xie et al. 2023)是最有影响的在线方法之一,它的想法来自分布鲁棒优化(group DRO):
- 用某个参考比例(例如均匀或按数据量)训练一个小的参考模型;
- 训练一个同样大小的代理模型;每一步,计算每个领域上代理的损失比参考模型高多少(超额损失,取正部),按指数更新领域权重:
- 把整个训练过程中的权重取平均,作为静态比例去训练大模型。
为什么要减去参考模型?如果只看原始损失,高熵的领域(噪声多、本来就学不好)会一直被加权。超额损失衡量的是”还有多少能学的”。DoReMi 用 2.8 亿参数的代理为 80 亿参数的模型定比例:在 The Pile 上所有领域的困惑度都改进了(包括被降权的领域),平均少样本准确率提高 6.5 个百分点,达到基线准确率所需的训练步数少 2.6 倍。它不需要任何下游任务的数据。
类似的方法还有 DoGE(按领域梯度之间的对齐程度加权)和 Skill-it(Chen et al. 2023:把数据组织成”技能”,按技能之间的依赖关系安排顺序)。
4.3 统一的框架:线性混合优化(Aioli)
Aioli(Chen et al. 2024)发现,这些在线方法都在解同一个问题,只是对”比例怎样影响损失”做了不同的假设:
约束是一个线性混合律:下一轮领域 的损失 = 这一轮的损失 − Σ(领域 对领域 的作用 × 领域 的比例)。定理:选择特定的 ,用指数梯度下降解这个问题,就恢复出 DoReMi、DoGE、Skill-it 的更新规则。例如 DoReMi 对应 是对角矩阵,。
这给了一个评价在线方法的新角度:一个方法好不好,取决于它隐含的混合律参数准不准。slides 报告:线性混合律本身拟合得很好(),但各方法手工设定的 和拟合出来的最优 差得比较远,参数不准的方法往往表现差。
Aioli 于是在训练中直接估计 :
- 试探(explore):在当前模型上用几组扰动过的比例各训练一小段,记下各领域验证损失的变化;
- 拟合(fit):用这些(比例,损失变化)拟合 ;
- 优化(optimize):。
论文的结果:已有的方法没有一个能稳定地超过均匀采样(有的方法比均匀差多达 6.9 个困惑度点);Aioli 在 6 个数据集上都超过均匀采样,平均好 0.27 个困惑度点;在”先用短训练学比例、再用于长训练”的设置里,比已有方法好多达 12 个困惑度点。
4.4 在世界里比较(代码 03 演示 1)
| 方法 | 网页 | 维基 | 书 | 代码 | 数学 | 论坛 | 平均损失 | 额外成本 |
|---|---|---|---|---|---|---|---|---|
| 自然分布 | 0.970 | 0.002 | 0.007 | 0.015 | 0.001 | 0.005 | 2.9776 | — |
| 均匀 | 0.167 | 0.167 | 0.167 | 0.167 | 0.167 | 0.167 | 2.9549 | — |
| 温度 τ=3 | 0.539 | 0.073 | 0.105 | 0.133 | 0.058 | 0.092 | 2.9266 | — |
| 离线:OlmixBase 式 | 0.554 | 0.100 | 0.000 | 0.096 | 0.050 | 0.200 | 2.9307 | 28 个代理 |
| 在线:DoReMi(参考 = 均匀) | 0.126 | 0.167 | 0.223 | 0.179 | 0.151 | 0.153 | 2.9636 | 2 个代理 |
| 在线:原始损失(无参考) | 0.785 | 0.040 | 0.021 | 0.034 | 0.031 | 0.090 | 2.9354 | 1 个代理 |
| 在线:Aioli 式(用下游验证集) | 0.587 | 0.072 | 0.098 | 0.083 | 0.083 | 0.077 | 2.9209 | 试探 1.4 倍预算 |
| 在目标模型上搜索(参照) | 0.533 | 0.089 | 0.077 | 0.098 | 0.089 | 0.115 | 2.9184 | 400 个目标模型 |
- DoReMi 没有超过它的出发点(均匀)。它让每个训练领域”学得一样充分”,而这不等于下游任务最好——它甚至把网页降到了 12.6%,而网页是唯一的大量新数据。这正是 Aioli 报告的现象。
- 只看原始损失:网页(噪声多、损失天然高)被大幅加权。DoReMi 论文的担心是”追逐学不会的噪声”;在我们的世界里,这个担心被”网页数据多”抵消了,结果反而不坏。哪种效应占上风取决于数据。
- Aioli 式的方法直接测量”多给一点每个领域,下游损失降多少”,得到 2.9209,接近搜索的上限 2.9184。代价有两个:每轮的试探要额外花算力;下游任务被当作验证集,它们对这个方法来说不再是”没见过”的评测(第 14 讲会讨论这种”在评测上调参”的风险)。
- 一个重要的局限:我们的计数模型和数据顺序无关,所以”在线”的好处只来自”在一次训练里找到了好比例”。真实的模型里顺序是有影响的(课程式安排、遗忘、学习率调度),那是在线方法的另一部分动机,这个世界演示不了。
5. 开发过程中的混合:领域会变
5.1 数据一直在变
Chen 的 slides 指出了一个被忽视的实际问题:在模型开发过程中,数据领域本身一直在变。以 OLMo 2 → OLMo 3 为例:
- 有的领域没变:arXiv、Wikipedia / Wikibooks;
- 有的被删除:Algebraic Stack、peS2o;
- 有的是新增的:olmOCR 处理的科学 PDF;
- 有的被修订:StarCoder → Stack-Edu,OpenWebMath → FineMath 3+。
形式化:领域集合 ( 个)更新成 ( 个),更新的类型有四种——新增、删除、拆分、修订。已知旧比例 ,要求新比例 (同样带重复约束)。
最直接的做法是全部重算:每次更新都在 上重新跑一遍离线方法,成本 。开发过程中数据可能更新几十次,这就太贵了。
5.2 复用比例(mixture reuse)
OLMix 的想法:没受影响的领域,保持它们之间原来的相对比例;只为受影响的领域重新计算。 slides 的例子:
- 旧领域是 [科学, 政治, 文学, 代码],旧比例 ;现在”代码”被拆成”Python”和”其他代码”;
- 没受影响的三个领域冻结相对比例: 归一化成 ,合并成一个”虚拟领域” ;
- 在一个小得多的问题上重新计算:(1 个)+ 受影响的领域 (Python、其他代码)。建一个小群(例如 、……,训练代理时 按冻结的比例展开),拟合对数线性模型,优化;
- 假设优化得到 ,展开回去:。
重复约束也要跟着展开:虚拟领域的比例 要保证其中每个真实领域都不超过 遍,即 。
关键的赌注(slides 的 “key bet”):改变 Python 和其他代码的比例,会改变科学、政治、文学之间的相对重要性吗?“大概不会。“——所以可以复用。
5.3 结果
OLMix 的评测:从 DCLM 的 24 个话题领域出发,经过 5 次更新(新增 6 个来源、新增 15 个编程语言领域、把 olmOCR 科学 PDF 拆成 21 个话题、修订 olmOCR、删除 AlgebraicStack),最后是 64 个领域;1B 模型、52 个任务。
- 复用比例拿到了全部重算 95–98% 的改进,总代理数少 67–74%(216–272 个 vs 832 个);
- 在 216–272 个代理的预算下,复用比自然分布好 11.6% 和 12.0%,全部重算(预算不够、每次只能用很小的群)只好 10.8%;
- 论文摘要的说法:和每次全部重算的效果相当,算力少 74%,比”不做混合”好 11.6%。
5.4 在世界里(代码 03 演示 2)
我们模仿这个过程:从 6 个领域出发,依次 新增 stack_edu(干净的教育类代码)、把网页 拆分 成新闻 / 聊天 / 技术三个话题、把数学 修订 成 math_v2(更多、更干净)、删除 论坛,最后 8 个领域。每次离线计算用 个代理。
| 更新 | 领域数 | 全部重算:代理 | 复用:代理 |
|---|---|---|---|
| 初始 | 6 | 28 | 28 |
| 新增 stack_edu | 7 | 32 | 12 |
| 拆分 web → 3 个话题 | 9 | 40 | 20 |
| 修订 math → math_v2 | 9 | 40 | 12 |
| 删除 forum | 8 | 36 | 0 |
| 最终 8 个领域上的比例 | 代理总数 | 平均损失 | 比自然分布好 |
|---|---|---|---|
| 自然分布 | 0 | 2.9748 | 0.0% |
| 温度 τ=3 | 0 | 2.9198 | 14.4% |
| 每次全部重算 | 176 | 2.9151 | 15.6% |
| 复用比例 | 72 | 2.9190 | 14.6% |
| 在目标模型上搜索(参照) | — | 2.9025 | 18.9% |
(3 次重复的平均;三次各自的损失:全部重算 2.9117 / 2.9129 / 2.9207,复用 2.9160 / 2.9256 / 2.9154。)
- 复用少用了 59% 的代理,拿到了全部重算 93% 的改进——和 OLMix 的”少用 67–74%、拿到 95–98%“是同一个故事。
- 和温度 τ=3 比,两种方法都只在 3 次中的 2 次更好,优势很小、不稳定,和 §3 的结论一致。
- 复用依赖”key bet”。当新领域和旧领域高度重叠(例如把一个新的网页快照加进来),旧领域之间的相对比例可能就不再合适了;定期做一次完整的重算是合理的折中。
6. 一个统一的视角(补充)
把本讲的方法放在一起看,数据混合是一个黑盒优化问题:自变量是比例 ,目标函数是”训练一个模型再评测”,每次求值非常贵。各种方法的区别在于怎样省求值:
| 方法 | 怎样省 | 依赖的假设 |
|---|---|---|
| 启发式(温度等) | 不求值 | 数据量和价值之间有简单的关系 |
| 离线(RegMix、DML、OLMix) | 在小模型上求值,用回归插值 | 小模型的排序和大模型一致;回归的函数形式对 |
| 在线(DoReMi、Aioli) | 在一次训练里边训练边求值 | 局部的(线性)混合律;DoReMi 还假设”各领域学得一样充分”等于好 |
| 复用(OLMix) | 只为变化的部分求值 | 没变的领域之间的相对比例仍然合适 |
这个合成世界能说明什么、不能说明什么。
能说明的(因为世界保留了这些性质):预算是零和的、领域和任务之间是多对多的关系;小领域会被重复,重复的价值递减;小代理的排序不可靠,预算的差别和模型大小的差别一样重要;回归的函数形式会影响提出的比例;不加重复约束会出大错;复用比例能省很多代理。
不能说明的:
- 训练动态:计数模型和数据顺序无关,没有遗忘、没有学习率调度,所以”在线方法因为顺序而更好”这一面完全看不到;
- 泛化和容量:真实的模型能从上下文推断当前是哪个领域,也能在领域之间做更抽象的迁移(例如数学推理帮助代码);我们的模型只有两个词的上下文;
- 重复的价值是写进世界的(Muennighoff 的公式),不是涌现出来的;
- 规模:6–9 个领域、8 个任务,比真实的 24–64 个领域、52 个任务小得多;方法之间的差别(几个毫比特)也比真实情况更容易被噪声淹没。
所以”在这个世界里,方法很难超过温度 τ=3”不应该被理解成”真实世界里混合方法没用”——RegMix、OLMix 在真实模型上都报告了明显的改进。它提醒我们的是:比较混合方法时,一定要和一个调好的启发式比较。
7. 延伸与前沿 · Beyond the original lecture
本节是我补充的。
- 中期训练与退火(annealing)。很多现代模型在预训练的最后阶段换一个混合比例:把学习率降到 0 的同时,大幅上采样高质量的数学、代码、指令数据(Llama 3 的退火阶段、OLMo 2 的 Dolmino 中期训练数据)。Llama 3 还用”在一个训练了一半的模型上,用少量某类数据做退火,看评测涨多少”来评估一个数据集的价值——这比从头训练代理便宜得多。
- 混合和过滤一起设计。Chen 的 slides 把”数据混合和其他数据整理的协同设计”列为下一步。第 7 讲的 Nemotron-CC 把质量分数分桶,每个桶就是一个”领域”;过滤的阈值和混合的比例其实是同一个决定。
- 多语言的混合。温度采样会让低资源语言重复很多遍;UniMax(Chung et al. 2023)先把预算均匀地分给各语言,再给每种语言的遍数设上限、多出来的预算重新分配——这和 OLMix 的重复约束是同一个思路。
- 混合的目标是什么。用验证集困惑度、下游 BPB,还是下游准确率?Phi-4 的学生报告提出:后训练会改变”最好的预训练比例”的含义(合成数据多的模型在后训练之后和其他比例的差距缩小)。端到端地优化”预训练比例 → 后训练之后的表现”仍是开放问题。
- 用梯度直接优化比例。第 13 讲的元梯度(metagradients)可以对每个样本的权重求梯度,原则上把”混合比例”推广到”每个样本的权重”。
8. 小结 · Summary
- 混合问题: 个领域、预算 ,选比例 让下游的平均损失最小。它重要(在我们的世界里,好坏比例的可学习损失差 15%),也难(预算零和、领域和任务多对多、每次求值都要训练一个模型)。
- 启发式:自然分布淹没小领域;均匀让小领域重复太多遍;温度采样是折中;GPT-3 式的人工上采样依赖直觉。比例和数据量要一起看:小领域的瓶颈是独特数据量。
- 离线方法:代理群 → 回归 → 优化。OLMix 的设计选择研究:代理太小排序不可靠(slides:1B 目标用 15M 以上的代理); 个代理就够;对数线性回归拟合最好;一定要加重复约束 。
- 在线方法:DoReMi 按超额损失加权、取平均权重;Aioli 证明 DoReMi、DoGE、Skill-it 都在解”线性混合优化”,区别只在混合律参数;Aioli 在线估计参数。已有方法很难稳定地超过均匀采样。
- 开发中的混合:领域会被新增、删除、拆分、修订;OLMix 的复用比例冻结没受影响的领域的相对比例,只为受影响的部分重算——少用 67–74% 的代理,拿到 95–98% 的改进。
- 方法论:比较混合方法时要和调好的启发式比;代理看不到随规模变化的东西(重复、容量),要单独处理。
9. 常见误区 · Common pitfalls
- “高质量的小数据集,比例越大越好。” 比例大意味着重复多;超过 4–5 遍之后价值迅速递减(代码 01 演示 3、代码 02 演示 4)。
- “代理模型说好的比例,目标模型也会说好。” 太小的代理排序相关只有 0.4–0.5;预算不同也会让排序不一致(代码 02 演示 1)。
- “回归拟合得越好,提出的比例就越好。” 函数形式会把最优点推到边界上(代码 02 演示 2)。
- “混合方法比自然分布好,所以它有用。” 自然分布是很弱的基线;要和均匀、温度采样比(代码 02、03)。
- “让每个领域都学得一样好就是最好的混合。” DoReMi 的目标是领域上的最坏情况,不是下游任务(代码 03 演示 1)。
- “混合比例定一次就行了。” 开发过程中领域一直在变;每次都全部重算太贵,完全不重算又会过时(§5)。
- “数据混合只是预训练的事。” 语言、质量等级、上下文长度、后训练数据、中期训练,到处都是混合问题。
10. 练习 · Exercises
练习 1(温度采样和重复) 我们世界里 6 个领域的数据量是:网页 2,000,000、维基 5,000、书 15,000、代码 30,000、数学 2,500、论坛 10,000;预算 = 200,000。(a) 用代码 01 演示 1 表里的比例,算出数学在 τ = 2、3、5 和均匀时各被看几遍。(b) 如果预算增加到 200 万,τ = 3 的比例不变,数学要被看多少遍?这说明了温度采样的什么问题?
参考答案
(a) 遍数 = 。τ = 2:;τ = 3:;τ = 5:;均匀:。
(b) 遍。温度采样只看各领域数据量的相对大小,不看预算——同一个比例在小预算下合理,在大预算下就会让小领域被重复几十遍。这正是 OLMix 要加 的原因:约束里有 。
练习 2(重复约束的可行性) 用 。(a) = 20 万时,每个领域的上限是多少?加起来是否大于 1?(b) = 200 万时呢?网页至少要占多少?(c) GPT-3 的 Wikipedia 被看了约 3.4 遍、WebText2 约 2.9 遍——在 的约束下,它们还能再上采样吗?
参考答案
(a) 上限 :维基 0.1、书 0.3、代码 0.6、数学 0.05、论坛 0.2、网页 1(取 1 为上限)。除网页外的上限之和是 1.25 > 1,即使不用网页也可行。
(b) 上限缩小 10 倍:维基 0.01、书 0.03、代码 0.06、数学 0.005、论坛 0.02,和是 0.125。所以网页至少占 0.875——预算越大,小领域能贡献的比例越小,最后几乎全是网页。数据受限时,增加”大而还过得去”的数据来源(第 7 讲的 Nemotron-CC)或者合成数据(第 11 讲)是唯一的出路。
(c) 只能再增加一点:Wikipedia 从 3.4 遍到 4 遍,比例最多从 3% 增加到约 ;WebText2 从 22% 到约 。
练习 3(复用比例的算术) (a) 按 §5.2 的例子,旧比例 (科学、政治、文学、代码),代码被拆成 Python 和其他代码;在折叠后的问题上优化出 。写出新的 5 个领域的比例,并检查和为 1。(b) 假设 、 = 1000 亿,科学、政治、文学各有 200 亿、100 亿、50 亿 token。虚拟领域的比例 最大是多少?(c) 举一个”key bet”不成立的例子。
参考答案
(a) ,和为 1。
(b) 每个真实领域的上限 :科学 ,政治 0.4,文学 0.2。虚拟领域里它们的冻结比例是 0.25、0.4375、0.3125,所以 。文学(数据最少、冻结比例又不小)决定了上限。
(c) 例如新增的领域是”新闻网站的另一批快照”,和”政治”高度重叠:多了这批数据之后,政治相对于科学、文学的最佳比例应该下降,但复用会保持原来的相对比例。又如修订把”科学”里的低质量部分移到了一个新领域——科学的价值变了,它就不再是”没受影响”的领域。
练习 4(对数线性模型的最优点) 两个领域,比例 。任务 1 的拟合是 ,任务 2 是 。(a) 只关心任务 1 时,最优的 是多少?(b) 两个任务平均时呢?(c) 由此解释代码 02 演示 2 里”对数线性模型常常把某个领域推到 0”。
参考答案
(a) 随 单调递减,最优 ——在边界上(领域 2 的比例是 0)。
(b) 对 求导并令它为 0:,取对数 ,。内点。
(c) 对数线性模型里,每个任务的预测损失是 的单调函数,单个任务的最优点总在单纯形的顶点上;只有当不同任务”拉向不同的方向”时,平均损失的最优点才会在内部。如果某个领域对所有任务的系数都”不够好”(例如书在我们的世界里对一部分任务有帮助、对另一部分有害,拟合出的系数偏正),模型就会把它推到 0——即使真实的损失曲线在 0 附近很陡(从 0 加到 5% 收益很大)。能表达”边际递减”的形式(例如对数特征)就不会这样。
练习 5(重复的价值衰减得更快会怎样) 把 mix_world.py 里的 R_STAR 从 15.4 改成 4(重复的价值衰减得更快),重新运行代码 01 演示 3。先预测:重复 4 遍、16 遍时,重复数据拿到的”新数据收益”的比例会怎样变?平均损失最好的遍数会变吗?
参考答案(实际运行结果,在代码副本里运行)
重复 4 遍时的比例从 82% 降到 74%,16 遍时从 62% 降到 48%,32 遍时从 56% 降到 44%。平均损失在 8 遍(2.9285)和 16 遍(2.9275)之间几乎一样( 时最好的是 8 遍的 2.9236)——最好的平均损失变差了,但最优遍数没有变小(16 遍反而略好,不过只差 0.001,在噪声范围内)。原因是:重复的价值低了,数学任务从重复中得到的收益少了;但”给数学的预算从其他领域拿走”的代价也没变,两边一起变化,最优点几乎不动。这说明”最优的重复上限 “不只取决于 ,也取决于其他领域的边际价值。在真实的开发中,(以及 )应该在你自己的模型和数据上测量(第 7 讲的方法)。
练习 6(讨论:混合的目标) 你在为一个”编程助手”模型定预训练比例,评测集是 20 个代码任务和 5 个通用对话任务。(a) 直接用这 25 个任务的平均 BPB 做优化目标,有什么风险?(b) Aioli 式的方法把下游任务当作验证集,会带来什么问题?怎样缓解?
参考答案(要点)
(a) 任务数量决定了权重:20 个代码任务会主导平均,对话能力可能被牺牲;BPB 不一定和最终用户关心的指标(代码能否通过测试、对话是否有用)单调相关(第 12 讲会讨论上游损失和下游指标的关系);预训练之后还有后训练,“后训练之后最好”的比例可能不同(Phi-4 的经验)。可以先按能力类别加权(例如代码 0.7、对话 0.3),并保留一组从未用于调比例的评测。
(b) 用来调比例的任务就不再是独立的评测,报告的分数会偏高(“在测试集上调参”,第 1 讲 ImageNet 的测试集复用问题、第 14 讲)。缓解:把下游任务分成”调比例用的验证集”和”最终报告用的测试集”;验证集用和测试集同分布但不同的题;只用验证集的 BPB 而不是准确率(减少过拟合到具体题目的可能)。
11. 延伸阅读 · Further reading
原课阅读与讲座
- Chen et al., OLMix: A Framework for Data Mixing Throughout LM Development(2026):arXiv:2602.12237。
- Chen et al., Aioli: A Unified Optimization Framework for Language Model Data Mixing(ICLR 2025):arXiv:2411.05735。
- Abdin et al., Phi-4 Technical Report(2024):arXiv:2412.08905。
slides 里引用的方法
- Xie et al., DoReMi: Optimizing Data Mixtures Speeds Up Language Model Pretraining(NeurIPS 2023):arXiv:2305.10429。
- Liu et al., RegMix: Data Mixture as Regression for Language Model Pre-training(ICLR 2025):arXiv:2407.01492。
- Ye et al., Data Mixing Laws: Optimizing Data Mixtures by Predicting Language Modeling Performance(ICLR 2025):arXiv:2403.16952。
- Fan et al., DoGE: Domain Reweighting with Generalization Estimation(2023):arXiv:2310.15393。
- Chen et al., Skill-it! A Data-Driven Skills Framework for Understanding and Training Language Models(2023):arXiv:2307.14430。
- Liu et al., Rethinking Data Mixture for Large Language Models: A Comprehensive Survey and New Perspectives(2025):arXiv:2505.21598。
本讲补充
- Brown et al., Language Models are Few-Shot Learners(GPT-3,2020),表 2.2 的数据配比。
- Llama Team, The Llama 3 Herd of Models(2024),§3.1 的数据配比和退火。
- Chung et al., UniMax: Fairer and More Effective Language Sampling for Large-Scale Multilingual Pretraining(2023)。
和本目录其他课程的联系
- CS336 第 14 讲(数据处理):数据管线和混合的工程实现。
- CS324 第 4 讲(扩展律):用小模型预测大模型的一般方法。
12. 下一讲预告 · Next lecture
本讲反复碰到同一堵墙:小而干净的数据(数学、维基)很有价值,但数量有限,重复几遍之后就没用了。如果能造出更多这样的数据呢?
第 11 讲:合成数据。 客座讲者 Zitong Yang 的”合成数据三部曲”:合成后训练(从 Alpaca 到 OpenThoughts 的能力蒸馏)、合成继续预训练(EntiGraph:从 130 万 token 的小语料里”长”出 4.55 亿 token,让模型学会冷门书籍里的知识)、合成自举预训练(SBP:不要老师模型,从文档之间的关系里合成新文档)。学生报告:改写网页(WRAP)、Phi-4 的合成数据,以及一个反例——在图像分类上,检索真实图片比生成合成图片更好。代码会在一个”实体知识”世界里比较改写、EntiGraph 和重复,并模拟模型在自己生成的数据上反复训练时的”崩塌”。