背景:数据总量相同,能力结构可能完全不同
大模型预训练通常混合网页、代码、论文、书籍、百科、数学和多语言语料。工程上最容易被低估的变量不是”有没有这些数据”,而是每个域最终贡献了多少有效训练 Token。
同样是一万亿 Token:代码比例从 5% 调整到 20%,模型的编程能力、自然语言流畅性和多语言表现都可能重新分配;在持续预训练中,如果专业域占比过高,还可能出现通用能力遗忘。
因此,数据配比不能只是启动参数中的一串权重。它应被治理成可审计、可复现、可灰度、可回滚的训练制品。
核心原则:把”配比”从概率参数升级为训练契约
1. 用不可变 Mixture Manifest 固化输入空间
一次训练必须绑定唯一的 Mixture Manifest。Manifest 至少应记录:
- 域标识与语义定义;
- 数据快照、过滤版本和 Tokenizer 版本;
- 目标权重、最小权重和最大权重;
- 计划 Token 数、允许重复轮次与耗尽策略;
- 采样算法、随机种子和训练阶段;
- 代理实验、审批记录及制品哈希。
mixture_id: pretrain-mix-2026-07-v3
total_token_budget: 1000000000000
sampler: weighted_token_sampler_v2
seed: 20260728
domains:
- id: web_en
snapshot: web-en-2026-06-clean-v4
tokenizer: tokenizer-sha256-7a91
target_weight: 0.42
min_weight: 0.30
max_weight: 0.50
- id: code
snapshot: code-2026-06-license-v2
tokenizer: tokenizer-sha256-7a91
target_weight: 0.18
min_weight: 0.10
max_weight: 0.25
- id: math
snapshot: math-2026-05-dedup-v3
tokenizer: tokenizer-sha256-7a91
target_weight: 0.10
min_weight: 0.05
max_weight: 0.16
Manifest 一旦发布不得原地修改。任何权重、快照或采样规则变化都应生成新版本。
2. 以有效 Token 而不是文档数记账
设总训练预算为 T,第 i 个域权重为 p_i,其计划预算为:
T_i = round(T × p_i)
实际系统还应记录:
| 指标 | 含义 |
|---|---|
consumed_tokens_i | 已消费 Token 数 |
accepted_tokens_i | 有效通过过滤的 Token 数 |
repeated_tokens_i | 重复读取的 Token 数 |
remaining_unique_tokens_i | 剩余唯一 Token 数 |
文档数不适合作为主账本。不同域的平均长度、过滤比例、语言 Token 密度和 Sequence Packing 效率差异很大;按文档采样很容易导致实际 Token 比例偏离配置。
3. 区分静态配比与动态配比
静态配比在训练开始前确定全程权重,易复现、易审计,适合首次大规模训练。
动态配比按训练阶段调整权重,例如前期提高通用网页覆盖,中后期增加代码、数学或高质量长文本。它更灵活,但必须引入:
- 阶段边界;
- 权重变化速率限制;
- 域权重上下限;
- 固定回放集;
- 通用能力遗忘门禁。
近期 RegMix-D 等工作开始利用代理训练完整 Loss 轨迹,而不是只看最终点,为不同训练阶段预测不同配比。该方向值得关注,但论文结果不能直接当作任意模型的默认生产配置。
如何选择配比:从经验权重走向代理模型搜索
DoReMi:关注各域的超额损失
DoReMi 使用参考模型与代理模型的域损失差异进行重加权。简化表示为:
excess_loss_i = loss_proxy_i - loss_reference_i
系统更关注仍未学好的域,而不是单纯提高高熵、噪声大的域。论文中,代理模型用于搜索权重,再把权重迁移到更大的目标模型。
生产落地时必须绑定:
- Reference Model 指纹;
- Proxy Model 配置;
- 域验证集版本;
- Loss 聚合方式;
- 平滑窗口和权重裁剪规则。
缺少这些信息,只保存最终权重,无法解释下一次为什么得不到相同结果。
RegMix 与 Data Mixing Laws:用小规模实验预测大规模结果
RegMix 通过多组小模型和不同数据混合训练,拟合”配比到性能”的映射,再搜索候选比例。Data Mixing Laws 则研究配比、模型规模、训练步数与性能之间的可预测关系。
这类方法适合成本高昂的大模型预训练,但代理实验必须覆盖真实的不确定性:
- 不同随机种子;
- 不同 Token Horizon;
- 不同模型宽度或深度;
- 域之间的交互项;
- 目标任务和通用任务的权衡。
代理模型给出的应是候选区域,而不是无需复核的单点答案。
工程落地:建立可重放的数据混合控制面
1. 域定义先于权重优化
数据域必须具有稳定语义。不要把域直接等同于文件目录或供应商名称。推荐同时保留:
| 维度 | 示例 |
|---|---|
| 来源域 | 网页、书籍、代码仓库、论文 |
| 能力域 | 数学、代码、法律、多语言 |
| 质量层 | 高、中、低置信度 |
| 合规层 | 许可类型、地区限制、敏感等级 |
同一文档可携带多个标签,但用于采样的主域必须确定,否则权重统计会重复记账。
2. 采样器必须确定性可回放
给定 Manifest、数据快照、Seed、全局步数和数据并行规模,采样器应能生成一致的域选择和样本序列。
from dataclasses import dataclass
import random
@dataclass(frozen=True)
class Domain:
name: str
weight: float
def choose_domain(domains: list[Domain], seed: int, global_sample_id: int) -> str:
rng = random.Random(f"{seed}:{global_sample_id}")
names = [d.name for d in domains]
weights = [d.weight for d in domains]
return rng.choices(names, weights=weights, k=1)[0]
真实实现还需要处理多 Rank 切分、断点恢复和数据耗尽,但核心要求不变:样本选择不能依赖不可追踪的进程局部随机状态。
3. 为每个域建立 Token Ledger
训练监控至少包括:
- 计划权重与实际权重;
- 每小时、每十亿 Token 的偏差;
- 域数据耗尽率和重复率;
- 域级训练 Loss 与固定验证 Loss;
- 数据读取失败、过滤失败和解码失败率;
- 每域有效 Token 成本。
权重正确不代表执行正确。某个域如果频繁读取失败,系统可能悄悄用其他域补位,最终训练比例已发生漂移。
4. 设置域饥饿与过采样保护
低权重域可能长时间没有进入 Batch,导致域级指标失去更新;小规模高权重域则可能快速重复多轮。
应设置以下保护机制:
| 参数 | 作用 |
|---|---|
min_tokens_per_window | 时间窗口内最低 Token 供给 |
max_repeat_epochs | 最大重复轮次 |
max_weight_delta | 相邻阶段最大权重变化 |
staleness_limit | 域指标最长陈旧时间 |
fallback_policy | 域不可用时停止、降权或切换备用快照 |
不要默认”缺哪个域就按比例补到其他域”。这种补偿会破坏训练契约。
5. 动态调权必须走发布流程
动态数据调度不应由监控脚本直接修改训练参数。推荐流程:
域级信号采集 → 候选权重计算 → 上下限与变化率校验
→ 固定回放集模拟 → 生成新 Mixture Manifest → 审批
→ 在阶段边界切换 → 观察并可回滚
正在运行的训练 Job 只消费已发布 Manifest,不接受无版本的临时权重。
适用场景
这套治理特别适合:
- 多域通用模型预训练;
- 数学、代码、金融等专业域持续预训练;
- 多语言模型的语言比例控制;
- 数据持续新增、质量分层经常变化的训练平台;
- 需要审计数据贡献和能力变化来源的企业模型工程。
小规模单域微调通常不需要复杂的动态混合系统,但仍建议使用 Manifest 固化数据快照和 Token 预算。
常见误区
误区一:高质量域越多越好
单域质量高不等于混合后整体最优。域之间存在互补、竞争和训练阶段差异,必须通过代理实验和多能力评测确认。
误区二:只看总体训练 Loss
总体 Loss 可能下降,而某个低权重域已经恶化。必须保留域级 Loss、固定验证集和能力分组指标。
误区三:按样本比例配置就是 Token 比例
长文、代码和不同语言的 Token 密度差异显著,必须以 Token Ledger 核对实际贡献。
误区四:代理模型最优权重可以无条件迁移
架构、规模、Token Horizon、Tokenizer 和优化器变化都可能改变最优区域。代理结果只能缩小搜索空间。
误区五:动态调权越频繁越智能
Loss 信号本身有噪声。过度频繁调整会让数据分布和优化过程同时非平稳,难以诊断和复现。
上线检查清单
- 每个域具有稳定 ID、定义和负责人;
- 数据快照、过滤器和 Tokenizer 均已固化哈希;
- Mixture Manifest 不可变且可回滚;
- 权重之和、上下限和阶段计划通过校验;
- 计划 Token 与实际 Token 可逐域对账;
- 采样器在多 Rank 和断点恢复后可重放;
- 设置域饥饿、重复率和数据耗尽门禁;
- 代理实验包含多 Seed 和多个 Token Horizon;
- 通用、专业、多语言和安全能力分别回归;
- 动态调权只能在明确阶段边界发布;
- 训练异常时能还原当时生效的 Manifest;
- 任何权重变化都有审批、理由和证据链接。
参考资料
- DoReMi: Optimizing Data Mixtures Speeds Up Language Model Pretraining
- Stanford CRFM: DoReMi
- RegMix: Data Mixture as Regression for Language Model Pre-training
- RegMix-D: Dynamic Data Mixing via Proxy Training Trajectories
- Data Mixing Laws: Optimizing Data Mixtures by Predicting Language Modeling Performance
- Megatron-LM Data Arguments and Blended Dataset Support
- DataComp-LM