Granite 4.2 推理模型系列技术构建详解
作者: Granite 团队,IBM
概要: Granite 4.2 是我们首个纯稠密、仅解码器(decoder-only)的推理大语言模型系列,共推出 3B、8B 和 30B 三种规模。每个模型都从头开始,使用约 15 万亿(15T)个 token 进行预训练,并采用五阶段训练策略,将上下文窗口扩展至 512K token;随后使用思维链(chain-of-thought)、推理和智能体轨迹数据进行监督微调,最后通过多阶段强化学习(RL)流水线进行后训练。该流水线包括智能体强化学习(agentic RL),其中 8B 和 30B 模型学会在真实沙箱环境中使用工具执行操作。每个模型都支持思考 / 非思考切换,并提供一种**低投入(low-effort)**思考模式,可针对简单问题消耗较短的推理预算,同时原生支持工具调用。所有 Granite 4.2 模型均以 Apache 2.0 许可证发布。
概览
Granite 4.2 是 Granite 语言模型系列中专注于推理的版本。此前的 Granite 版本是出色的指令遵循助手;Granite 4.2 则进一步加入了显式推理能力。每个模型都可以在回答前生成思维链,并且可以根据任务所需的思考程度,运行在思考或非思考模式下。介于两者之间的低投入模式,会针对简单问题使用较短的推理预算。
三种规模(3B、8B 和 30B)采用相同的架构设计,并遵循相同的训练流水线(从头预训练、SFT,然后进行多阶段 RL),区别仅在于模型规模。三种模型都具备出色的推理和指令遵循能力。最明显的能力差异体现在后训练阶段。8B 和 30B 模型还会额外经过一个**智能体强化学习(agentic RL)**阶段,学习作为智能体运行:在真实环境中调用工具、编辑并运行代码、操作终端以及搜索网页。所有模型均支持原生工具调用。通过 OpenAI 兼容端点提供服务时(例如使用 vLLM),模型会以 OpenAI 函数调用格式输出工具调用,无需额外适配即可接入智能体框架。Granite 4.2 也支持 SGLang,具体可参阅 SGLang cookbook 获取可直接部署的配置方案。
本文其余部分将介绍模型的构建过程,包括架构、预训练、监督微调、多阶段 RL 流水线以及评测结果。
模型架构
Granite 4.2 模型基于纯解码器稠密 Transformer 架构,核心组件如下:
- 注意力机制: 分组查询注意力(Grouped Query Attention,GQA),包含 40 个注意力头和 8 个 KV 头
- 位置嵌入: 旋转位置嵌入(Rotary Position Embedding,RoPE),θ = 10,000,000
- 前馈网络: 使用 SwiGLU 激活函数的 MLP
- 归一化: RMSNorm(ε = 1e-5)
- 嵌入层: 输入嵌入和输出嵌入相互独立(不共享权重)
- 精度: bfloat16
| 组件 | 3B Dense | 8B Dense | 30B Dense |
|---|---|---|---|
| 嵌入维度 | 2560 | 4096 | 4096 |
| 层数 | 40 | 40 | 64 |
| 注意力头维度 | 64 | 128 | 128 |
| 注意力头数量 | 40 | 32 | 32 |
| KV 头数量 | 8 | 8 | 8 |
| MLP 隐藏层维度 | 8192 | 12800 | 32768 |
| MLP 激活函数 | SwiGLU | SwiGLU | SwiGLU |
| 序列长度 | 131072 | 131072 | 131072 |
| 位置嵌入 | RoPE | RoPE | RoPE |
| 参数量 | 3B | 8B | 30B |
预训练
Granite 4.2 从头开始使用约 15 万亿(15T)个 token 进行训练,采用五阶段训练策略。第 1~2 阶段侧重基础预训练;第 3~4 阶段进行中期训练,并逐步使用更高质量的数据进行退火;第 5 阶段引入长上下文训练,将上下文窗口扩展至 512K token。每个阶段都使用不同的数据配比和学习率计划,使训练数据逐步从广泛的互联网规模数据转向经过更严格筛选的高质量数据源。
预训练方案总体延续了上一代模型;关于数据配比、阶段安排以及长上下文扩展的详细介绍,请参阅 Granite 4.1 博客。
SFT:数据准备与质量控制
监督微调(SFT)将基础模型转变为可靠的指令遵循、推理和工具使用助手。SFT 数据混合包含智能体数据(31.6%)和非智能体数据(68.4%),总计约 720 万个样本,即约 100B 个 token,其中约 65B 个 token 用于训练。
智能体语料覆盖多个领域,包括软件工程(SWE,69%)、工具调用(12.1%)、终端使用(8.0%)、数学(3.5%)、搜索(0.8%)和操作执行(0.2%)。这些样本和轨迹由多种智能体脚手架与运行框架生成,包括 OpenHands、OpenCode、Terminus-2、SWE-agent、OpenResearcher、MiniSWE、OpenSeeker、EnvScaler、Gemini CLI、Hermes、Codex 和 Goose。智能体数据同时包含来自开源数据集的样本,以及我们在自有合成 RL 环境中生成的数据,覆盖多种智能体与运行框架组合。
非智能体语料由多个主要类别组成:指令遵循(18.8%)、代码(18.8%)、数学(14.6%)、多语言(7.0%)、科学(5.4%)、推理(3.0%)和安全(0.8%)。
数据质量控制
在样本进入最终 SFT 数据混合之前,我们会执行多个阶段的质量控制。首先,将来自不同来源的数据进行标准化,并重新格式化为统一的 OpenAI Chat 格式,使不同数据集和脚手架中的对话结构与工具交互保持一致。
随后,我们使用 GPT-OSS-120B 和 Gemma 4 作为基于大语言模型的评审器,对样本质量进行评估。低分样本会被移除;包含幻觉或虚构信息、无效工具交互,或调用对应工具列表中未定义函数的样本也会被移除。在适用情况下,我们还会应用多项针对特定数据集的启发式规则,进一步提升质量并移除已知噪声来源。
最后,我们同时执行局部去重和全局去重。去重依据是对 tools 和 messages 字段组合计算 SHA-256 哈希值,从而移除单个数据源内部以及整个 SFT 数据混合中的重复样本。
SFT 训练细节
完整语料首先进行全局随机打乱,以降低数据顺序带来的影响,并确保不同领域的样本在训练过程中充分混合。随后,将打乱后的语料划分为大小相等的 .parquet 分片,使用模型的分词器和聊天模板进行分词,并为大规模分布式训练做好准备。
在启动最终的大规模训练之前,我们会在具有代表性的配置上调优超参数,扫描学习率计划、初始学习率和预热比例,以确定能够在不同模型规模上稳定训练的设置。最终训练配置如下:
| 参数 | 值 |
|---|---|
| 计算资源 | 32~128 个节点(取决于模型规模),每个节点配备 4 个 Grace/GB200 |
| 序列长度(打包后) | 131,072(128K) |
| 全局批次大小 | 128 |
| 学习率 | 1.0e-5,预热后保持恒定;第 2 阶段为 3.0e-6 |
| 学习率预热 | train_iters 的 2.5% |
| 训练时长 | 约 2 个 epoch |
| 并行方式 | TP=2,PP=1,CP=4 或 CP=2 |
30B 模型的第 2 阶段 SFT
对于 30B 模型,我们还额外执行了一个