导语:阶跃星辰发布 Step 5 Preview 技术博客,完整公开该模型的架构与训练方法。
阶跃星辰发布 Step 5 Preview 技术博客,完整公开该模型的架构与训练方法。模型采用 92 个 transformer block 的"窄而深"结构,深度与 Qwen3.8-Max、Kimi K3 等超大规模开源模型相当,而总参数量与激活参数量分别不到后者的四分之一和三分之一。注意力层按 3:1 交错使用 Gated Sliding Window Attention 与稀疏全注意力,并提出 Sparse GQA 支撑最高 1M 上下文。训练侧采用 FP8 混合精度,通过 FP32 隐状态、FP32 RMSNorm 缩放因子与细粒度梯度裁剪解决深度训练中的数值爆炸与梯度尖峰,其中被裁剪的梯度值每层仅占 0.00004%。数据侧构建了由智能体协同的合成系统,最终产出百万级可验证环境。
Inside Step 5 Preview:面向智能体工作的架构与训练 StepFun 团队
智能体负载对模型设计与训练提出了一套不同的要求。冗长、工具密集的轨迹,提升了在大量预填充上下文上进行推理的重要性,使长上下文计算的代价越来越高,也给数据构建与强化学习带来了新挑战。
Step 5 Preview 正是围绕这些约束设计的。架构上,它采用 92 个 transformer block 的"窄而深"设计,将 Gated Sliding Window Attention 与稀疏全注意力层交错使用,并在全注意力路径上引入 Sparse GQA 以支撑高效的长上下文训练与推理。规模化这一设计也暴露了深度训练中的稳定性问题,促使我们重新审视数值精度与梯度处理。
训练侧,我们构建了一套智能体原生的数据构建系统,由智能体在专家设定的原则与质量控制下协同完成合成流程的部分环节。在强化学习上,我们聚焦于那些随着 rollout 变长而愈发突出的系统与学习问题,包括训练与推理的不一致、rollout 效率、上下文管理与信用分配。
以下各节描述这些设计选择,以及驱动我们做出这些选择的观察。
架构设计理念
深度对多跳推理是重要的。在智能体任务中,多跳依赖无处不在;而由于频繁的工具调用带来大量预填充需求,模型并没有太多机会进行充分的显式思维链推理,尤其考虑到 token 效率。因此,在模型预填充过程中进行隐式推理是更优的选择。
我们知道,transformer 预填充过程中的信息流沿时间轴与深度轴都是单向的,这意味着追踪多跳依赖链的语义嵌入,必须单调地朝向未来 token 的更深层移动。结果是,如果深度不够,模型在长预填充场景中很容易把层"用完",使这种潜在的多跳推理无法发生。
Step 5 Preview 采用"窄而深"架构。虽然有循环或递归 transformer 等多条研究路线试图应对深度诅咒,我们选择了最直接的办法:直接把深度做大。Step 5 Preview 由 92 个 transformer block 组成,深度与 Qwen3.8-Max、Kimi K3 等超大规模开源模型相当,而其总参数量与激活参数量分别不到这些大模型的四分之一与三分之一。"窄而深"架构让 Step 5 Preview 获得了可与万亿规模模型相比的长程智能体能力,同时保持低得多的成本。不过我们发现这种设计会引入一些训练不稳定性,将在训练稳定性一节讨论。
Step 5 Preview 采用 3:1 交错的高效注意力与全(稀疏)注意力层,延续了 Step 3.5 与社区通行做法。在高效注意力部分,我们研究了多种架构(例如各类线性注意力替代方案)与配置后,选择了 Gated Sliding Window Attention(Gated SWA)。我们发现 Gated SWA 与其他更花哨的选择之间的性能差距相当有限(即便后者更好),而 Gated SWA 在工程实现上简单得多,尤其在考虑投机解码时。
Step 5 Preview 的全注意力部分基于 Gated GQA。为了支撑高效的长上下文训练与推理(最高 1M 上下文长度),我们提出了 Sparse GQA,受 DSA 启发在标准 GQA 中引入稀疏索引机制。与原始 DSA 不同,我们进一步引入分块 token 合并来压缩索引器的开销。相关方法将在 Sparse GQA 一节详述。
训练稳定性
我们采用混合精度 FP8 策略训练 Step 5 Preview。尽管如前所述"窄而深"架构有充分的动机,我们在扩大训练规模时观察到了若干不稳定现象,例如数值爆炸或梯度尖峰,而我们发现在训练更小、更浅或更宽的网络时,这类不稳定很少出现。我们提出以下方法来稳定训练:
FP32 隐状态。大语言模型中普遍存在 massive activation,通常被认为充当了网络的偏置项。一般而言这些极大值不会导致训练不稳定。然而当网络变深时,我们发现隐状态中少数 massive activation 往往会在训练中迅速膨胀,前提是相应的浮点精度按 BF16 设置。尽管底层原因仍不清楚,我们发现对隐状态及其对应梯度使用 FP32 效果良好,并能把峰值再降低近一个数量级。与常规 BF16 精度相比,FP32 隐状态只带来很小的训练开销。
FP32 RMSNorm 缩放因子。Step 5 Preview 采用零中心 RMSNorm 作为归一化层,形式如下:y_i = x_i / RMS(x) × (1 + γ_i),其中 γ_i 为可学习的缩放因子,通常以 BF16 精度存储。然而,如果 x 中包含极大值,我们发现该设计可能引发不稳定:众所周知,对应极大维度的缩放权重 (1 + γ_i) 通常非常小,即 γ_i 非常接近 -1;而 BF16 在 -1 附近精度不足。训练中我们发现 γ_i 偶尔恰好等于 -1,将该通道完全屏蔽;随后几个迭代中,γ_i 又被权重衰减等扰动更新到邻近值,使通道重新打开。这一循环反复出现,导致输出来回振荡。为解决该问题,我们建议使用 FP32 存储 γ_i 而非 BF16,使 RMSNorm 在 γ_i 接近 -1 处的行为平滑许多。
细粒度梯度裁剪。在训练这样一个深模型的过程中,我们观察到梯度尖峰在训练中期出现得越来越频繁,拖慢收敛。我们发现梯度尖峰通常并非源自数据噪声或 LLM 头部,而是产生于中间层,并在几层之内被放大若干数量级。数据重复似乎也会加剧尖峰。因此,我们假设该现象可能源于层冗余,它倾向于在反向传播中反复放大某个梯度信号。幸运的是,异常梯度非常稀疏。我们因此提出细粒度梯度裁剪,在整个梯度流中裁剪掉最顶部的极大梯度向量。我们发现,每层仅裁剪 0.00004% 的梯度值,就能很好地抑制梯度尖峰并使收敛更平滑。
Sparse GQA
Step 5 Preview 面向长程智能体任务设计。此外,强大的长上下文推理能力需要在长上下文上持续训练。当上下文长度达到 1M token 时,全注意力层在训练与推理中都成为主要的效率瓶颈。我们引入了经过精细优化的稀疏注意力机制来加速 Step 5 Preview 的全注意力部分。要降低稀疏注意力的运行时开销,必须解决三个瓶颈:用于选择的索引器开销、在所选内容上计算时 GPU 利用率不足,以及选择粒度与数据读取量之间的权衡。
在 Step 5 Preview 中,我们选择 GQA 以获得更好的长上下文准确性(已在实验中验证)并支持多 GPU 并行下的高速推理。然而相比 MQA 与 MLA,GQA 会放大上述三个问题。因此我们提出了名为 Sparse GQA 的方法,在很大程度上克服了这些瓶颈。
降低索引器开销。我们发现,在 DSA 等已有的稀疏注意力实现中,索引器开销不可忽略,在极长上下文下甚至可能超过稀疏 Flash Attention 算子本身的开销。我们考虑两种方案:1)让多个 GQA 组共享单个索引器;2)把多个相邻历史位置的索引器压缩为单个块表示。经过若干消融实验,我们发现第一种方案会削弱 GQA 对并行的适配性,并对模型质量有较明显影响。因此 Step 5 Preview 采用第二种方案,块大小为 8,将索引器与 top-k 选择的开销降低 8 倍。
稀疏注意力的高效实现。稀疏注意力让计算变得碎片化。在预填充阶段,我们需要把这些细碎的小计算组织起来,使 GPU 能被更有效利用并产生实际加速。对每个 token,一旦索引器与 top-k 选出的 K/V 进入计算,每个独立分块只包含很少的工作量。逐 token 处理很难充分利用 GPU。我们的优化是对相邻 token 的 top-k 结果取并集。由于相邻 token 语义相近,其 top-k 选出的 K/V 往往高度重叠,因此我们的实现把这些重叠的计算归组处理,提升 GPU 利用率。
top-k 与块大小之间的权衡。Sparse GQA 中有两个重要超参数:被选中的顶部 token 数 k 与块大小 B。我们比较了不同 top-k 与块大小配置下的模型质量、索引开销与主路径延迟,以解释最终配置的依据。实验支持 B = 8、k = 4096 的选择(即被选中的块数为 k / B = 512)。增大 B 会降低索引开销,而增大 k 则补偿更粗的选择粒度。随着序列变长,估计的索引节省超过主路径的额外开销,同时 token 覆盖率仍接近 B = 1、k = 2048 参考配置的水平(78.06% 对 79.09%)。
智能体数据合成
在开发 Step 5 Preview 期间,我们观察到前沿模型执行长程智能体工作的能力快速提升。这些新出现的能力促使我们重新思考数据构建,把它当作一个智能体原生的过程。
统一上下文层。领域专家自然会形成构建高质量数据的先验、直觉与实践,这些往往嵌在他们自己关于任务设计、流程与决策的上下文里。因此我们构建了一条统一的数据合成流水线,捕获跨领域的任务规格、流水线状态、环境配置、中间结果与历史反馈,并在整个构建过程中使其可访问。这让智能体可以跨任务复用经验,同时研究人员可以继续提供人类先验并审核关键节点。随着构建推进,产生的反馈与经验会回流到共享上下文中,用于循环开发。此外,这大幅降低了把数据构建适配到新领域的成本,因为智能体可以建立在已积累的设计原则、质量标准与失败模式之上,而不必从零开始。
智能体驱动的知识 sourcing。另一方面,知识是模型能力的核心,而构建任务所覆盖的知识最终受限于可用来源的广度。因此,广泛而系统的 sourcing 对于发现多样化和长尾知识至关重要。在统一上下文中,我们把来自预训练数据与广泛互联网来源(例如 GitHub)的知识组织成一个结构化知识空间,让智能体可以系统地遍历它,识别出长尾的、代表性不足的、或模型缺失的知识,并据此合成更具挑战性的任务。这样一来,知识 sourcing 成为构建流程的组成部分,把广泛的知识覆盖转化为发现并训练模型知识缺口的系统化过程。
质量引导。自主合成并不自动产出我们想要的数据。我们发现智能体在难度与多样性上都存在系统性偏差:它们倾向于构建更简单的任务,往往通过简化底层问题或提供过量信息来实现,并反复收敛到熟悉的任务模式。因此,我们引入显式信号与干预,在这两个维度上引导智能体。难度方面,我们使用可观测信号来标定任务难度,例如任务约束、ground-truth patch 长度、测试用例数量,以及不同前沿模型上的表现。多样性方面,我们跟踪各方向的分布并对 sourcing 做平衡,引导智能体避开过度代表的仓库、主题与工作流。这些机制把难度与多样性从被动的评估标准,转变为对智能体行为的主动控制。除这些构建偏差外,我们还处理模型 hacking:前沿模型擅长利用任务规格或评估中的漏洞而非真正解决底层任务,这在更真实、更具挑战性的智能体环境中尤为典型。因此,我们在任务构建中纳入显式的反 hacking 检查,同时审计任务规格与评估流程中可被利用的捷径,并针对发现的失败模式迭代完善检查。这确保任务成功反映的是预期能力,而非任务或评估器的产物。
角色分工。我们的智能体方法刻意在专家判断、智能体编排与确定性执行之间做了分工。专家提供高层的构建原则与先验,并对流水线中需要领域判断的关键节点做审核。智能体在这些专家设定的原则内运作,动态协调构建流程、做出跨步骤决策并适应中间结果。我们有意把确定性的、可重复的操作交给可复用代码与工具,而不是让智能体去执行它们。在实践中,构建 Docker 镜像、检查任务验证、测量测试覆盖率、校验输出格式等常规操作被封装为可复用流程,供智能体按需调用。这减少了常规操作上反复的智能体或人工干预,消除中间瓶颈,使流水线能以高吞吐持续运行。通过把这些流程摊销到各个任务上,我们大幅提升了可构建的高质量数据量,同时降低了每条样本所需的智能体与人力投入。
统一上下文层保留经验,智能体知识 sourcing 拓宽探索,质量引导控制质量,角色分工实现高效扩展。这些组件共同构成了一套智能体原生、持续改进的数据构建系统。
在这套基础设施的支撑下,我们最终为前沿模型构建了百万级具有挑战性且可验证的环境,覆盖科学推理、软件工程、机器学习研发与专业工作。我们也收集了这一过程中产生的构建轨迹、决策与反馈,将为自动化后训练数据研究中改进下一代模型提供训练数据。
智能体强化学习
什么样的任务值得训练
三个轴定义了一个可训练的任务。我们对每条候选数据从三个轴做刻画:时长,即智能体必须维持连贯进展的时间;深度,即达到通过状态之前累积了多少次状态转移,实践中以触及的文件数与编辑的行数衡量;区分度,即任务能在多大程度上把不同尝试区分开,以一组 rollout 的奖励方差衡量。前两者是被设计进任务里的,第三者是相对策略测量出来的。我们构建的任务在时长与深度两个轴上都取高值,例如长时间运行的终端工作、仓库级软件工程、多阶段程序构建。
零训练推理失配
在线强化学习系统在训练侧与推理侧运行同一个模型,两者由不同算子构建、性能目标也不同。微小的数值差异会通过 MoE 分发与深度增加而放大。这些系统内在的误差随后与 off-policy 的陈旧性耦合。因此我们把这两个来源分开处理:在可以对齐的地方精确对齐系统,对陈旧性导致无法对齐的部分做回放。(1)开销低于 10% 的逐位对齐。在陈旧度为 0 时,我们把训练与推理的算子完全对齐,logprob 差异恰好为零。除已有的确定性 kernel 外,这需要解决由 SWA、MTP、top-k 选择等引入的差异。一种优化的树形归约计算使结果与 TP 规模无关:TP = 1 训练与 TP = 8 推理保持逐位一致,总开销低于 10%。对齐之后,FP8 策略复现了 BF16 的行为,表现为每轮 token 数稳定、轮次稳步增长、熵稳定,而未对齐版本则漂移到臃肿、无结构的单轮输出。(2)RL 轨迹回放。在陈旧度大于 0 时,原则是所见即所得:训练侧回放推理时的计算状态。我们用冻结的 MoE router 回放被路由到的专家,包括 actor 与参考策略的专家索引与系数;回放 top-p 候选集,只在候选 token 上重算 logprob;并对 logit 梯度加入零中心投影,消除共模漂移。借助这些技术,熵停止衰减并保持稳定。这些措施共同把长程 logprob 差异稳定地控制在 1e-2 以下。
高吞吐、低冗余的基础设施
随着智能体承担更长程的任务,轮次与 token 以惊人的速度增长,推理已占总算力的多数。提升这里的效率需要解决两个不同的问题:提高吞吐,以及确保以高算力成本生成的样本能真正到达训练器。(1)每一步都在规模上交付。我们的 session_admission 调度器让一个会话保持对单个实例的亲和,并在高并发下让请求原地等待与重试。在稳定调度之上:SFT 之后训练的 MTP-3 头部带来约 30% 的端到端加速;原生 FP8 MoE 在达到 BF16 质量的同时再带来约 20%;协同的 EP、KV 的 CPU offload、MXFP4 权重存储与 FP8 KV QAT 把有效 KV 缓存容量扩大 8 至 12 倍。训练侧,我们通过对 MoE 计算、稀疏注意力索引选择与带交叉熵的 LM 头投影分块来降低峰值显存,以额外的子批次调度换取训练可扩展性。(2)每条 rollout 都有交代。一条 rollout 在进入训练前要经过很长的链路,每个边界都是一个样本可能悄然丢失的地方。这种丢失并非均匀分布,而是集中在最长、最难的 rollout 上,从而偏移训练分布。我们实现了生命周期账本,把每条预期 rollout 追踪到唯一一个具名的终止状态,并在 scaffold 内实现轮次级事件记录,捕获 rollout 中的每一次干预。两者共同把端到端样本丢失率降到 1% 以下。
走向无限 horizons 的策略改进
一个无限 horizon 的智能体从两个不同方向上考验强化学习:轨迹在任务完成前就超出上下文窗口,以及单一的情景结果奖励必须解释沿途发生的一切。(1)上下文管理把 horizon 与上下文窗口解耦。测试时扩展把推理算力转化为性能,但模型的最大长度限制了 rollout 能扩展到多远。更长的上下文架构只是抬高了那个天花板。我们想要的缩放律是 horizon 无界、而工作上下文保持有限。因此当预算接近耗尽时,智能体把自己的工作重整为一个可恢复的状态并继续。遵循 Bitter Lesson,我们把压缩设计为策略训练的一等公民,在同一任务奖励下端到端训练。(2)信用分配在行为发生的尺度上进行。一个结果只能说明出了错,永远无法说明是哪个决策造成的,而无限 horizon 的智能体把这一个二元判断拉伸到数百轮、数百万 token 上。在 token 级,一个可学习的 critic 把结果转化为合理的逐 token 基线,我们预训练该 critic 以降低 actor loss 的方差。在轮次级,诸如格式错误的工具调用这类失败既不源于前面的轮次,也不影响后面的轮次,我们只惩罚出问题那一轮的回报,其余不动。奖励 hacking 走的是同一条通道:检测器在飞行中拒绝 hacking 动作并惩罚该轮,告诉智能体换一种方式继续 rollout。
下一步
这里描述的系统仍在演进。随着智能体承担更长的任务、与越来越复杂的环境交互,上下文、训练基础设施与反馈的边界变得更难分离。系统中某一部分的改进,往往会暴露别处的瓶颈。
对 Step 5 Preview 而言,剩余的工作主要是继续推进这条边界:让智能体在更长的轨迹上持续取得有用进展,而不让上下文与训练成本以同样的速度增长。我们预期模型与其周边的训练系统都将朝这个目标继续演进。
致谢
我们感谢所有为 Step 5 Preview 做出贡献的人的付出与投入。这项工作得以完成,离不开整个团队同事与实习生的共同贡献。

扫一扫,或长按识别二维码
关注艾瑞网官方微信公众号