Home / 大语言模型 / OLMo 2:把语言模型的训练过程变成可以研究的对象

093|OLMo 2:把语言模型的训练过程变成可以研究的对象

返回目录 · 发展时间线

论文:OLMo Team 等,2 OLMo 2 Furious。原文 · 正文 v2 · 官方训练代码。首次提交时间为 2024 年 12 月 31 日;arXiv 编号以 2501 开头不意味着首次提交发生在 2025 年。

图表来源:OLMo Team 等,2024,原文;CC BY 4.0。本篇展示做了PNG格式转换,图中数据与标签未改动。

先接住前作的问题

Chinchilla强调模型、数据与计算共同决定结果,本篇进一步提供中间检查点和日志以审查形成过程。DeepSeekMath的领域训练是平行配方,后训练中的DPO则是明确组合的模块。

五个前置概念

五个前置概念:残差连接 将新计算加回已有表示;RMSNorm 根据均方根控制数值尺度;退火 逐步降低学习率;模型 soup 对兼容检查点的参数取平均;开发集 用于做研发选择,因此不同于最终盲测集。

一、问题设定:只有权重时无法归因,怎样观察稳定性与后期能力形成

OLMo 2是7B与13B稠密自回归解码器。预训练与中期训练都预测下一token,中期改变的是数据分布和学习率;指令后训练才引入示范、偏好与奖励。要解释尖峰和数学短板,需要观察这些阶段,而非只比较最终权重。

论文把超过九成预训练计算用于广泛网页等语料,再把较小比例预算分配给质量筛选和能力补足。高质量在这里是操作性定义:分类器分数、数学内容、参考文本、合成解题数据等,而不是对所有潜在用途都更优的标签。

尤其值得注意的是评估隔离。开发时作者监测指定任务,并只使用 GSM8K 的 200 道评估题作为 GSM* 开发子集;另外保留未用于研发决策的任务。剩余题可以提供更强的外推检查,但最终整个 GSM8K 得分并不是完全未参与开发的纯盲测。其他对照模型是否用过相同任务,论文也无法保证。

二、分开数值稳定、数据退火与兼容分支平均

控制残差分支和注意力数值尺度

常见预归一化先规范输入再计算子层。OLMo 2 将归一化放到注意力与 MLP 的输出、残差相加之前。按照 §3.3.2 的对照表,可写成:

h=x+RMSNorm⁡(Attention⁡(x)),hout=h+RMSNorm⁡(MLP⁡(h)).h=x+\operatorname{RMSNorm}(\operatorname{Attention}(x)),\qquad h_{out}=h+\operatorname{RMSNorm}(\operatorname{MLP}(h)).

xx 是块输入,hh 是中间残差状态。注意这不等于把整个残差和再归一化的标准 post-norm。论文 §2.2 式(2)把 MLP 输入写为 xx,与 §3.3.2 表格的 hh 不一致;上式明确采用后者,实际复现应进一步固定代码版本核对。

QK-norm 在点积前规范查询和键,避免注意力 logits 无限制增大;重排归一化控制注入残差流的子层输出。作者发现两者单独改变效果不理想,联合改变才减少梯度尖峰,因此不能把它们拆成互不依赖的万能技巧。

z-loss 的形式是 Lz=λz(log⁡Z)2\mathcal L_z=\lambda_z(\log Z)^2,其中 Z=∑jexp⁡zjZ=\sum_j\exp z_j,zjz_j 为词表 logits。交叉熵主要约束相对概率,z-loss 额外约束归一化常数的尺度。系数存在原文口径差异:表3 写 10−510^{-5},§3.3.3 写 10−410^{-4};不能在没有代码配置证据时替作者选定一个“准确值”。

训练还改用标准差 0.02 的截断正态初始化,降低 AdamW 的 ϵ\epsilon,取消嵌入的权重衰减。这些修改主要改善优化轨迹,不应被描述成新的语言建模任务。

交叉熵看不见的整体平移,z-loss 为什么看得见?

令词表位置 jj 的概率 pj=ezj/Zp_j=e^{z_j}/Z,Z=∑kezkZ=\sum_k e^{z_k},正确词下标为 yy。交叉熵为 LCE=−zy+log⁡ZL_{CE}=-z_y+\log Z。把所有logit同时加常数 cc 后,归一化常数变成 ecZe^cZ,所以 LCE′=−(zy+c)+log⁡Z+c=LCEL_{CE}'=-(z_y+c)+\log Z+c=L_{CE}。训练预测质量相同,数值尺度却可能不同。

z-loss的导数则为

∂Lz∂zj=2λzlog⁡Z pj,∑j∂Lz∂zj=2λzlog⁡Z.\frac{\partial L_z}{\partial z_j}=2\lambda_z\log Z\,p_j,\qquad \sum_j\frac{\partial L_z}{\partial z_j}=2\lambda_z\log Z.

当 log⁡Z>0\log Z>0 时,梯度下降倾向压低整体尺度;反之倾向抬高。它约束的是log-sum-exp,并非把每个logit的绝对值都压成零,也不能单独排除某些词具有很大的负logit。

原创教学例。 两个词的logits取 (0,0)(0,0) 或 (10,10)(10,10),两种情况下概率都是 (1/2,1/2)(1/2,1/2),正确词交叉熵都是 log⁡2\log2;z-loss却分别为 λz(log⁡2)2\lambda_z(\log2)^2 与 λz(10+log⁡2)2\lambda_z(10+\log2)^2。若统一平移到 (−log⁡2,−log⁡2)(-\log2,-\log2),概率仍不变,而 Z=1Z=1、z-loss为0。这个例子明确了新增正则项到底约束哪个自由度。

它也解释为何“前向损失一样”不是实现等价的充分检查。§3.3.3 对两种z-loss实现记录到反向轨迹差异;复现需要比较梯度和数值精度。当前v2中表3与§3.3.3的系数、§2.2式2与§3.3.2的MLP输入仍各有不一致;上述机制推导对任意给定正系数都成立,但不能替代锁定训练配置与代码提交。

Microanneal:先用短训练评估数据来源

昂贵做法是对每种数据配方完整训练模型;论文从同一个成熟检查点出发,将某类数学数据与普通高质量文本混合,短程训练并让学习率线性降到零。这样可以较快观察某个来源是否值得进入最终混合。

退火可概括为 ηt=η0(1−t/T)\eta_t=\eta_0(1-t/T)。TT 是这一分支的训练步数,不能让不同长度实验沿用同一个衰减终点,否则比较的不只是数据。作者共执行 19 次 microanneal、合计 130B token;这些探索费用应计入配方研发,而非只算最终的一条训练曲线。

权重平均是 θˉ=K−1∑kθk\bar\theta=K^{-1}\sum_k\theta_k,不是每次回答运行 KK 个模型再投票。它要求分支结构、参数坐标兼容;论文从共同检查点退火,并不能推出任意独立训练模型都能直接相加。

后训练的 RLVR 使用 PPO 和价值函数。验证奖励可以由数学答案或约束检查给出;价值函数用奖励模型初始化,这与“在线奖励必须来自那个奖励模型”是两件不同的事。13B 又按混合任务、GSM8K、MATH 分阶段训练,每阶段重新初始化价值函数。

权重平均前先检查参数坐标是否对应

两个同结构网络可以通过交换隐藏通道而实现同一函数,但直接平均对应数组未必保留该函数。共同检查点出发的退火分支更有理由保持坐标对齐,却仍要验证任务性能。因而模型soup的成本应算所有分支,收益应测平均后的单模型,不能当成无训练费用的输出集成。

三、从共同检查点试配方并保存完整训练轨迹

输入:预训练检查点 θ0、候选数据来源、固定开发评估
对每个候选来源:
    与普通文本组成短程混合,记录重复率和 token 总量
    从同一个 θ0 开始训练,并把学习率线性降至零
    评估 GSM* 与通用能力,剔除明显无效的来源
组合最终 Dolmino 数据混合
从 θ0 启动若干不同数据顺序的退火分支
对兼容分支的参数做平均,得到基础模型
执行监督微调 → 偏好 DPO → PPO 可验证奖励训练
在未用于选择配方的任务上评估,保留完整日志
输出:基础与指令模型,以及可追溯的训练材料

四、按尖峰、数据曝光和阶段能力读取对照

稳定性分数的基线不同,退火效果又同时改变数据与训练量;先保留各自实验口径,再判断哪种因果解释尚未成立。

项目 设置及比较含义
预训练数据池 表1 约 3.90T token,超过 95% 为网页;数据池大小不等于所有模型的累计 token 用量
架构与批次 7B 为 32 层、隐藏维 4096、批次 1024;13B 为 40 层、隐藏维 5120、批次 2048;序列长 4096
最终中期分支 7B 平均三个 50B 分支;13B 平均三个 100B 与一个 300B 分支;须区分单分支与总耗费
训练预算口径 §2.1 与后续配方对 7B 的 3.9T/4T 使用了不同近似口径,表9 明确以 4T、5T 预训练检查点比较,不拼接成虚假的精确总量
Microanneal 共 19 次、130B token;表12 的各配方总量不同,不是统一预算控制实验
SFT 与偏好 939,104 条 SFT 提示;DPO 提示约 366.7K/377.7K,包含本模型生成的回答及 GPT-4o 评价
RLVR 表18:PPO 每批四次更新,裁剪 0.2,生成上限 2048;7B/13B 最大 episode 数 100K/200K
重复与选择 后训练调参采用一个或四个种子;权重平均使用不同数据排列;主榜不是所有结果均配置信区间的多次完整训练
计算设施 §6 描述 H100 集群、网络与训练基础设施;集群总卡数不能当作每个消融实际占用卡数

自构例子。 一个学生会看程序计算结果,却不擅长用自然语言解释。把同一道题的程序轨迹改成逐步文字,可能更贴近目标考试;但改写后长度翻倍,训练时也看了更多 token。要验证“表达形式”本身,必须另做等 token 或等 FLOPs 对照,避免把多练习的收益全部算到改写上。

证据 1:图4、图7,稳定性。 初始化消融中梯度尖峰分数从 0.40 到 0.03;图7 的联合归一化修改从 0.108 到 0.069。尖峰分数是偏离过去 1000 个值滚动均值至少七个标准差的比例。两组不是同一基线,不能连乘成总降幅。图2 两代训练损失绝对高低还受语料改变影响,不能用它直接判断新模型更差。 训练损失与梯度范数分别成图;OLMo 2 更高的原始训练损失同时受数据变化影响,不能据此判定稳定化设计让语言建模退步。

OLMo与OLMo2的训练损失和梯度范数随训练步数变化
原文图形摘引:OLMo Team 等,2024,图2,PDF第10页;核对原文。

OLMo 2不同初始化方式的训练损失与梯度范数尖峰
原实验图摘引:OLMo Team 等,2024,图4;核对原文。原版权保留。

OLMo 2归一化位置修改前后的梯度范数训练曲线
原实验图摘引:OLMo Team 等,2024,图7;核对原文。原版权保留。

证据 2:表9,中期训练。 7B 开发平均分从 50.6 到 61.2,GSM8K 从 24.1 到 67.5;13B 平均分从 56.5 到 66.8。这支持较晚阶段的数据课程能够补足能力。它没有把数据质量、退火、额外 token 和权重平均全部独立控制,无法给每项机制分配精确贡献。

证据 3:表12,数据形式。 TinyGSM-Inline 的 GSM* 为 25.0,MIND 改写版为 65.5;但前者使用 3.17B token,后者 6.40B。结果说明这套改写训练方案有效,不证明在严格等 token、等算力下差距依然是 40.5 个百分点。数学数据重复实验也同时改变总量和网页比例,不能简单得出“重复越多越好”。

证据 4:表14,权重平均的反例。 配方 B 的 GSM* 从最佳单分支 73.0 到平均模型 77.0;配方 E 却从 60.5 降到 43.0,虽然其通用平均指标改善。表题及正文的“始终相当或更好”不能按每个任务字面理解。选择平均模型仍然需要任务级检查。

证据 5:表16,后训练。 13B 从 SFT 到 DPO 再到 RLVR,GSM8K 为 76.3、82.3、87.4,MATH 为 29.5、35.2、39.2;Safety 则为 82.3、79.7、79.1。不同目标间存在折中,不能把平均性能提高等同于所有属性改善。表7 中 Qwen2.5 14B 的 MATH 为 70.6,也明显高于 OLMo 2 13B 的 39.2。

五、开放材料仍不消除配方选择与目标取舍

开放中间状态使研究者能提出因果问题:某段数据是不是触发尖峰,某项能力在何时出现,后训练改善有没有伴随退步。它的贡献既是模型配方,也是实验对象的可观察性;后者不是榜单分数能够概括的。

作者没有证明微型退火的数据排名一定迁移到更大模型或其他语言;合成数据也引入教师模型的偏差。针对数学开发集反复选择配方,使同分布数学成绩更难解释为广泛推理能力。代码不属于主要后训练目标,因此不能用缺少该类实验推断代码能力强弱。

本文的分析是:可复现材料让问题更容易定位,并不会自动消除问题。读者仍须处理版本、参数表、开发集接触和预算口径。面对表格反例,保留具体范围比重复摘要中的整体评价更有帮助。

六、用可追溯配方核对数据课程与偏好模块

开放日志可以帮助复查Chinchilla式预算问题,也能检查DPO模块前后的能力取舍。后继分析应利用真实阶段检查点,而不是凭最终分数猜测某条数据独自造成了提升。

七、自测与答案

1. 为什么开放权重不足以判断一项能力来自哪段训练?

答:终态参数把所有数据与更新历史混在一起。需要中间检查点、数据顺序、日志及受控分支,才能比较某次干预前后的变化;即便如此,同时改变多个条件时也不能直接归因。

2. TinyGSM 改写实验能否证明自然语言一定比代码更适合数学训练?

答:不能。该模型的原始训练代码占比较低,而且两种微型退火使用的 token 数不同。证据适用于给定模型和配方;要得到更一般结论,还应控制预算、教师质量和输出格式,并换不同代码基础的模型。

3. 权重平均没有增加推理时模型数,为什么仍要记录三条分支的预算?

答:最终部署只运行平均后的一个模型,但这个模型的研发已经消耗三次退火训练。推理效率和获得模型的成本是不同维度;只报单分支预算会低估实际投入,而且平均也可能损害某些任务。