中英文数据怎样混合:从语料比例到实际训练分布

成长演进

具备清晰骨架、初步数学推导或工程验证,持续补充论据与实测。

ℹ数字花园

🌿 什么是数字花园与思想演进?

遵循 Maggie Appleton 与 Andy Matuschak 的常青笔记理念:这里不是按时间沉底的流水账,而是持续修剪打磨的知识生态。文章按成熟度经历:

  • 🌱 萌芽 (Seedling): 发散灵感、读书摘录、开放猜想
  • 🌿 演进 (Budding): 结构渐明、初步代码推导、积极修正
  • 🌳 常青 (Evergreen): 逻辑闭环、持久经得起检验的基石
  • 🔬 实验待证 (Speculative): 结合沙盒与仿真探针的理论探索
浏览全站数字花园与笔记全景 →

假设中文和英文数据都已经清洗、筛选、去重。现在写训练配置:中文 70%,英文 30%。

这看上去很明确。但如果中文平均一千个 token 一篇,英文平均两千个 token 一篇,按篇数抽七成中文,模型读到的中文 token 并不是七成。

混合数据不是把几个文件放在一起,而是分配有限的训练机会。 我们要说明按什么单位分配、同一份内容会重复几次,以及训练时有没有真的按计划读取。

这是第一卷第五篇,接着去重与评测污染,最后会交给语料构建统一记录。

先把百分比的单位说清楚#

“中文占一半”至少可能指四件事:文件大小一半、文档数量一半、抽到中文来源的概率一半,或者真正参与训练的 token 一半。

这些比例没有理由天然相同。压缩文件大小还受格式与压缩率影响,更不适合直接代表训练量。

对假设中的中文技术模型,可以先把目标写成“有效训练 token 的占比”。有效 token 指真正参与损失计算的预测位置,不包括 padding 等不参与训练的位置。后面再看实现怎样达到这个目标。

还要区分库存与用量:库存是可用文本有多少,用量是训练读了多少。库存可以只读一部分,也可以被重复使用。

一个例子看懂文档比例与 token 比例#

先把比例简化成中英文各抽一半。假设中文平均一千 tokens,英文平均两千 tokens,并且每篇都完整读取。

抽一百篇时,平均会得到五十篇中文和五十篇英文:中文贡献约五万 tokens,英文贡献约十万 tokens。于是中文只占三分之一。

把这个关系写成公式:来源 ii 的文档采样概率是 αi\alpha_i,平均长度是 μi\mu_i,对应的 token 占比为:

βi=αiμi∑jαjμj.\beta_i=\frac{\alpha_i\mu_i}{\sum_j\alpha_j\mu_j}.

分子是该来源“被抽中的机会乘以每次贡献的长度”,分母是所有来源的相应总和。这个关系假设文档完整读取、平均长度稳定、没有截断或额外 mask;样本足够多时,实际比例才会接近它。

反过来,希望中英文 token 各一半,就要更频繁地抽较短的中文文档。反推公式是:

αi=βi/μi∑jβj/μj.\alpha_i=\frac{\beta_i/\mu_i}{\sum_j\beta_j/\mu_j}.

代入上面的长度,中文文档应约占抽样次数的三分之二,英文约占三分之一。中文六十七篇、英文三十三篇左右,贡献的 token 才大致相同。

这不是推荐的中英文比例,只是解释“按篇抽样”和“按 token 分配”为什么不同。过滤规则改变了平均长度以后,旧换算也需要重新估计。

为什么许多流程先切成固定长度块#

如果每次都取同样长度、同样有效位置数的块,每个块贡献的训练量接近一致,比例会更容易控制。

但“固定长度”仍不能省掉检查。末尾不足一块怎么办?短文是否拼接?padding 是否参与损失?一个来源的尾块如果经常被丢弃,最终比例仍会偏。

还要检查损失怎样平均。先对每条长短不同的序列取平均,再对序列平均,相当于每条序列有相近权重;把所有有效 token 的损失相加,再除以有效 token 总数,则让每个预测位置有相近权重。两种实现不等价。

形式上,可以写出混合目标:

pα(x)=∑iαipi(x),Li(θ)=Ex∼pi[ℓθ(x)],L(θ;α)=∑iαiLi(θ).\begin{aligned}p_\alpha(x)&=\sum_i\alpha_i p_i(x),\\L_i(\theta)&=\mathbb E_{x\sim p_i}[\ell_\theta(x)],\\\mathcal L(\theta;\alpha)&=\sum_i\alpha_i L_i(\theta).\end{aligned}

它表示先按权重选来源,再从来源中取样。使用这个式子时,一定要交代 xx 是文档还是固定块、损失按什么平均,否则漂亮的公式也不能说明实际训练配方。

分词器会影响每份文本占多少预算#

token 不是固定长度的“字”。同一句话换一个分词器,token 数可能不同;同一分词器处理中文与英文时,切分效率也可能不同。

因此,“训练一亿 tokens”必须与分词器版本一起记录。可以用固定样本观察每字符或每字节被切成多少 token,以及文档长度变化。切得更少可以减少序列长度,但不直接证明模型质量更好,还要考虑词表大小与训练效果。

如果自行训练分词器,只用划分后的训练集拟合,再用于验证和测试。如果使用现成分词器,就记录它的版本和来源,不能声称它完全没见过任何评测相关材料。

同样,不同分词器的每 token 困惑度不宜直接比较。按字符或字节归一化能提供另一种视角,但仍需统一文本与边界处理。

三种常见分配方式各有什么代价#

为避免把长短问题混进来,下面先假设使用等长、有效位置数相同的训练块。nin_i 表示来源 ii 的库存量。

按库存分配。 哪个来源有得多,就多抽哪个。大来源不容易被反复读取,但可能压过其他领域。

各来源平均分配。 每个来源都有同样机会,小来源却可能很快用完,然后反复循环。

折中平滑。 不完全按库存,也不完全平均,可以使用幂次权重:

αi=niγ∑jnjγ,0≤γ≤1.\alpha_i=\frac{n_i^\gamma}{\sum_jn_j^\gamma},\qquad 0\le\gamma\le1.

γ=1\gamma=1 就是库存比例;γ=0\gamma=0 时,所有非空来源同权。中间值会提高小来源的相对份额。

比如库存是 90:10,取 γ=0.5\gamma=0.5,权重变成 90:10=3:1\sqrt{90}:\sqrt{10}=3:1,也就是 75:25。小来源从一成提高到了四分之一,但它拥有的独立内容没增加。

有些实现用温度 TT,把指数写成 1/T1/T。因此记录公式比只写“温度设为 2”更清楚。无论选择哪种形式,都没有一个不看任务就通用的中英文最佳比例。

小来源会被重复使用多少次#

假设训练总预算是 1B 有效 tokens,中文技术内容占 40%,但去重后这个领域只有 100M tokens。那么它分到 400M 的训练量,大致相当于把库存用四遍。

一般可以用:

ei≈Bβinie_i\approx\frac{B\beta_i}{n_i}

来估计等效遍历次数。BB 是总预算,βi\beta_i 是目标 token 比例,nin_i 是该来源的独立库存。

现在提高质量阈值,库存删掉一半,配比和总预算不变,等效遍历就从四遍变成八遍。所以“筛得更严格”不仅改变文本质量,也增加了重复使用。实验结果变化时,两件事都要检查。

抽够一遍的量 不等于每份内容都见过#

如果每次有放回地随机抽一个块,抽过的还可能再抽到。设一共 NN 个块,抽 mm 次,期望看到的不同块数是:

N[1−(1−1N)m].N\left[1-\left(1-\frac1N\right)^m\right].

推导只需看一个块:一次没抽中它的概率为 1−1/N1-1/N,连续 mm 次没抽中的概率为 (1−1/N)m(1-1/N)^m。用 1 减去它,再乘总块数,就得到期望覆盖量。

当 m=Nm=N 且 NN 很大时,大约只覆盖 63.2% 的不同块。另一些块被重复抽中了。若先打乱后逐个无放回读取,一整轮才会覆盖全部块。这两种加载方式不能都含糊写成“训练一遍”。

不要把语言变化与领域变化混成一个结论#

假设 A 方案加中文百科,B 方案加英文代码,结果 B 的代码能力更好。这不能直接证明“英文更有用”,因为内容类型也变了。

可以分别记录语言、领域、文体、质量分段、自然或生成、长度区间。不必把所有维度都做成复杂采样器,但日志应保留足够信息。

想研究语言比例,就尽量固定领域;想研究技术内容比例,就先固定语言。中英混排也要说明口径:如果整篇标为中文,那么“中文 token 数”实际上是中文标签文档贡献的 token,不是逐 token 判断出的语言数量。

能不能让训练反馈帮助选择比例#

手工尝试所有配比很贵。DoReMi 的思路是先利用较小的模型寻找域权重,再把得到的权重用于较大模型。它关注相对于参考模型的超额损失,而不只是哪个领域的原始损失最大。DoReMi 论文

为什么需要参考?某个领域损失高,可能只是充满噪声,不表示多投入预算就一定有价值。参考模型提供了一个比较基准,帮助识别代理模型还没学好的部分。

这可以启发小项目先按领域观察损失,而不是只看总平均。但完整 DoReMi 还涉及具体损失处理、权重更新和平滑,不能把“哪里 loss 高就多喂哪里”叫作复现。

小模型找到的比例也不保证适合任何大模型。模型容量、训练时长、分词器和领域划分变了,都可能改变结果。额外代理训练的成本同样需要计算。

先通用后专业 要怎样公平比较#

可以先训练广泛内容,再提高目标领域比例。这种分阶段方案不只改变比例,还改变了内容出现的时间。

若要研究“顺序有没有帮助”,可以让两套方案的各领域累计 token 相同,一套始终按固定比例,一套改变阶段顺序,并固定总学习率日程等条件。这样更容易把差异归到顺序上。

如果新方案最后还额外增加了一大段训练,就不能把收益全归因于顺序。对于继续预训练,还要检查原有通用能力是否下降,不能只报告目标领域的进步。

每个阶段至少记录数据版本、token 预算、比例、学习率和切换位置。

最后用实际读取记录核对配方#

配置正确,不代表加载器正确。建议至少分开记录:从磁盘读出的 token、送进模型的 token、参与损失的有效 token,以及内容重复使用情况。

拼接短文能减少 padding,但 EOS 只是边界符号,不会自动阻止跨文档注意力。是否需要 attention mask、是否重置位置、尾块如何处理,都要与训练程序一致。

一组可解释的小实验,可以从少数几种中英文比例开始,固定候选池、模型、分词器、有效训练 token 和优化设置。同时报告中文、英文与技术任务,不只看总平均。任务如果对小模型太难、成绩接近随机,微小波动也可能无法区分方案。

比较效率时可分别看同 token 预算和同计算预算的结果。两者回答不同问题。选择配比使用开发集,最后测试集留到方案确定以后,避免不断围绕测试题调配方。

判断依据与条件
按篇数的比例不等于按 token 的比例完整读取且长度稳定时的推导
上采样增加的是重复机会库存不变,训练份额提高
小模型反馈可以用于研究域权重DoReMi 提供具体方法,迁移仍受条件限制
某个中英文比例最适合当前模型需要同条件实验,没有通用固定答案

两个检查问题:中文平均更短时,怎样调整文档抽样概率才能达到相同 token 份额?如果严格筛选之后模型变差,你会怎样区分内容覆盖减少与重复次数增加?

最后一篇会把这些选择落到文件、配置和检查记录里,让下一次训练知道自己到底用了哪份数据。

文章概念网络

从章节进入正文概念。实线表示所属层级,虚线连接跨章节重复出现的概念,不代表因果关系。

50 / 51 个节点 · 正文标记术语与关键词概念

中英文数据怎样混合:从语料比例到实际训练分布同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept中英文数据怎样混合:从语料比例到实际训练分布中英文数据怎样混合:从语料比例到实际训练分布混合数据不是把几个文件放在一起,而是分配有限的训练机…混合数据不是把几个文件放在一起,而是分配有限的训练机会去重与评测污染去重与评测污染语料构建语料构建先把百分比的单位说清楚先把百分比的单位说清楚一个例子看懂文档比例与 token 比例一个例子看懂文档比例与 token 比例为什么许多流程先切成固定长度块为什么许多流程先切成固定长度块分词器会影响每份文本占多少预算分词器会影响每份文本占多少预算三种常见分配方式各有什么代价三种常见分配方式各有什么代价按库存分配按库存分配各来源平均分配各来源平均分配折中平滑折中平滑小来源会被重复使用多少次小来源会被重复使用多少次抽够一遍的量 不等于每份内容都见过抽够一遍的量 不等于每份内容都见过不要把语言变化与领域变化混成一个结论不要把语言变化与领域变化混成一个结论能不能让训练反馈帮助选择比例能不能让训练反馈帮助选择比例先通用后专业 要怎样公平比较先通用后专业 要怎样公平比较最后用实际读取记录核对配方最后用实际读取记录核对配方文件、配置和检查记录文件、配置和检查记录tokentoken去重去重污染污染tokentoken技术技术tokentoken采样采样tokentoken分词分词tokentoken训练集训练集归一化归一化选择选择tokentoken去重去重实验实验技术技术tokentoken采样采样技术技术DoReMiDoReMi分词分词利用利用tokentoken预训练预训练tokentoken选择选择实验实验AttentionAttentionDoReMiDoReMi注意力注意力
中英文数据怎样混合:从语料比例到实际训练分布

中英文数据怎样混合:从语料比例到实际训练分布

回到原文 ↗
BIBTEX

引用本文

@article{2026-10-15-llm-training-data-05-mixture,
  author  = {枫语},
  title   = {中英文数据怎样混合:从语料比例到实际训练分布},
  journal = {枫语},
  year    = {2026},
  month   = {oct},
  url     = {https://meiluosi.github.io/posts/2026-10-15-llm-training-data-05-mixture/}
}
🌐

本篇知识星丛与滑动侧栈

中英文数据怎样混合:从语料比例到实际训练分布 当前主轴

搜索

正在载入索引…