
阶跃星辰正式开源了 Step 5 Preview,一款面向真实世界智能体(Agentic)任务的旗舰模型,应用场景覆盖 AI 编程、软件工程以及专业知识工作。模型采用稀疏 MoE 架构,总参数量 600B,每个 Token 激活 27B 参数,支持 1M Token 上下文窗口和视觉输入。
无论是公开评测还是内部测试,Step 5 Preview 在软件工程、Agent、专业工作和金融等多个方向上都取得了有竞争力的表现。

在 Artificial Analysis Intelligence Index 上,Step 5 Preview 拿到了 44 分;而在相近智能水平下,它的单任务成本明显更低。

开源地址:
01 技术创新
智能体工作负载对模型设计与训练的要求与普通对话模型并不相同。大量工具调用构成的长轨迹,让模型基于大规模预填充上下文进行推理的能力变得格外重要;而长上下文计算不仅昂贵,还会在数据构建和强化学习环节制造新的难点。
Step 5 Preview 正是围绕这些约束设计的。在架构上,它选择“窄而深”的路线,共堆叠了 92 个 Transformer 模块。模型把门控滑动窗口注意力(Gated Sliding Window Attention)与稀疏全注意力层交错排列,并在全注意力路径中使用稀疏 GQA(Sparse GQA),以支撑高效的长上下文训练与推理。把这一设计继续扩大规模时,还会暴露出深层网络训练中的稳定性问题,这也促使团队重新审视数值精度与梯度的处理方式。
训练侧,阶跃研究团队构建了一套智能体原生的数据构建系统:智能体在专家制定的原则与质量控制机制下,协同完成部分数据合成流程。强化学习方面则重点解决长时程场景中占据主导的系统和学习问题,包括训练—推理一致性、轨迹采样效率,以及超长轨迹中的信用分配。
1.1 窄而深:92 层架构支持隐式多跳推理
智能体任务里,多跳依赖几乎无处不在;但频繁调用工具会产生很长的预填充,模型很少有机会执行充分、显式的思维链推理。由于 Transformer 在预填充阶段的信息流沿时间轴和深度轴都是单向的,语义表示必须随着后续 Token 的推进,不断移向更深的网络层。如果深度不足,模型就可能“用尽”网络层,导致潜在的多跳推理无法完成。
因此 Step 5 Preview 采用最直接的“窄而深”方案:堆叠 92 个 Transformer Block。它的深度与 Qwen 3.8 max、Kimi K3 等超大型开源模型相当,但总参数量和激活参数量分别不到这些模型的 1/4 和 1/3,在控制成本的同时,给长时程智能体任务留下了足够的推理深度。
注意力层按 3:1 的比例交错排列:高效注意力使用门控滑动窗口注意力(Gated SWA),全注意力部分使用门控 GQA,并进一步加入稀疏索引。官方实验显示,更复杂的线性注意力方案与 Gated SWA 的性能差距有限,而后者更容易高效实现,特别适合推测解码。
1.2 训练稳定性:让深层 FP8 训练保持可控
“窄而深”的架构在扩大训练规模时,会出现数值爆炸和梯度尖峰,而这些现象在更浅或更宽的网络中较少出现。Step 5 Preview 采用 混合精度 FP8 训练,并从隐藏状态、归一化参数和梯度流三个层面应对稳定性问题。
FP32 隐藏状态。 深层网络中的少数巨幅激活值可能在 BF16 隐藏状态中迅速爆炸。把隐藏状态及其对应梯度改为 FP32 后,峰值可再降低近一个数量级,相比常规 BF16 只增加很小的训练开销。
FP32 RMSNorm 缩放因子。 Step 5 Preview 使用以零为中心的 RMSNorm:

$y_i = x_i / RMS(x) \times (1 + \gamma_i)$
巨幅值所在维度的缩放权重通常很小,即 $\gamma_i$ 接近 -1;但 BF16 在 -1 附近精度不足,可能让 $\gamma_i$ 偶尔恰好等于 -1,使对应通道反复关闭和重启,造成输出振荡。把 $\gamma_i$ 改为 FP32 后,RMSNorm 在这一数值区间内更加平滑。
细粒度梯度钳制。 梯度尖峰往往产生于中间层,并在短短数层内放大几个数量级。由于异常梯度非常稀疏,Step 5 Preview 只裁剪梯度流中最极端的向量;每层仅钳制 0.00004% 的梯度值,就能明显抑制尖峰并改善收敛。
使用细粒度梯度钳制之前(蓝色)与之后(橙色)的 LLM Loss 对比:

1.3 Sparse GQA:降低 100 万 Token 上下文的全注意力成本
当上下文长度来到 100 万 Token,全注意力层会成为训练和推理的主要效率瓶颈。Step 5 Preview 选择 GQA 以兼顾长上下文精度与多 GPU 并行推理,并在标准 GQA 中加入稀疏索引机制,形成 Sparse GQA,重点解决索引器成本、碎片化计算带来的 GPU 利用率不足,以及选择粒度与数据读取量之间的权衡。
Sparse GQA 的索引器先把共享索引键压缩成块表示,再由每个 KV 组独立选择相关历史信息;主路径只读取被选中的历史块,以及当前块内因果可见位置对应的原始 K/V。

在索引阶段,Step 5 Preview 并没有让多个 GQA 组共享同一个索引器,而是把多个相邻历史位置压缩成一个块表示。块大小设为 8 后,索引器与 top-k 选择成本下降了 8 倍。预填充阶段则对相邻 Token 的 top-k 结果取并集,把高度重叠的零散计算合并起来,以提高 GPU 利用率。
最终配置为 B=8、k=4096,也就是选择 512 个块。增大 B 可以降低索引成本,增大 k 则能补偿粒度变粗带来的精度损失。该配置的 Token 覆盖率达到 78.06%,接近 B=1、k=2048 时的 79.09%;随着序列变长,节省下来的索引开销会超过主路径新增成本。
不同 top-k 与块大小配置下的索引成本、主路径延迟和 Token 覆盖率对比:

02 模型体验与本地使用
魔搭免费体验
在魔搭社区模型页面 API-Inference 即可免费体验 Step 5 Preview,无需自行配置环境:

本地部署与推理
Step 5 Preview 支持通过官方独立 Transformers 实现进行离线生成,也可以使用 SGLang、vLLM 部署 OpenAI 兼容 API 服务。
模型提供 FP8 与 BF16 两种权重。FP8 版本可以在单节点 8 张 H200 上运行;BF16 建议使用双节点共 16 张 H200,vLLM 还支持单节点 8 张 B300。
模型下载
pip install modelscope
modelscope download --model stepfun-ai/Step-5-Preview \
--local_dir "$HOME/models/Step-5-Preview"
modelscope download --model stepfun-ai/Step-5-Preview-BF16 \
--local_dir "$HOME/models/Step-5-Preview-BF16"
Transformers 离线推理
权重分片:
export STEP5_FP8_CHECKPOINT="$HOME/models/Step-5-Preview"
export STEP5_FP8_OUT="$HOME/models/Step-5-Preview-shards-fp8"
# 只检查权重键名和分片形状,不加载权重或写入分片
python3 convert.py \
--checkpoint "$STEP5_FP8_CHECKPOINT" \
--tp-size 8 --ep-size 8 --check-only
# 转换为 8 个分片,并复制配套分词器文件
python3 convert.py \
--checkpoint "$STEP5_FP8_CHECKPOINT" \
--out-dir "$STEP5_FP8_OUT" \
--tp-size 8 --ep-size 8
转换完成后,在同一目录启动 8 个进程进行文本生成:
export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
torchrun --standalone --nproc-per-node=8 generate.py \
--tp-dir "$STEP5_FP8_OUT/tp8" --ep-size 8 \
--prompt "请介绍一下张量并行。" \
--max-new-tokens 128
SGLang 部署
拉取官方 Step 5 Preview 专用镜像,并进入容器,将模型目录挂载到 /models:
docker pull lmsysorg/sglang:step-5-preview
docker run -it --gpus all --ipc=host --network=host \
--volume "$HOME/models:/models:ro" \
--entrypoint /bin/bash \
lmsysorg/sglang:step-5-preview
在容器内启动服务:
export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
python -m sglang.launch_server \
--trust-remote-code \
--model-path /models/Step-5-Preview \
--served-model-name step5 \
--tp 8 --ep-size 8 \
--moe-runner-backend triton \
--attention-backend fa3 \
--page-size 64 \
--kv-cache-dtype bfloat16 \
--mem-fraction-static 0.9 \
--swa-full-tokens-ratio 0.03 \
--chunked-prefill-size 16384 \
--max-running-requests 64 \
--cuda-graph-backend-prefill breakable \
--flashinfer-allreduce-fusion-backend trtllm \
--speculative-algorithm EAGLE \
--speculative-num-steps 3 \
--speculative-eagle-topk 1 \
--speculative-num-draft-tokens 4 \
--enable-multi-layer-eagle \
--reasoning-parser step5 \
--tool-call-parser step5 \
--host 0.0.0.0 --port 30000
vLLM 部署
同样使用官方 Step 5 Preview 专用镜像,拉取镜像并进入容器:
docker pull vllm/vllm-openai:step-5-preview
docker run -it --gpus all --ipc=host --network=host \
--volume "$HOME/models:/models:ro" \
--entrypoint /bin/bash \
vllm/vllm-openai:step-5-preview
在容器内启动 OpenAI 兼容服务,监听端口 18000:
export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
vllm serve /models/Step-5-Preview \
--host 0.0.0.0 --port 18000 \
--served-model-name step5 \
--tensor-parallel-size 8 \
--enable-expert-parallel \
--data-parallel-backend mp \
--distributed-executor-backend mp \
--disable-custom-all-reduce \
--max-model-len 1048576 \
--max-num-batched-tokens 16384 \
--max-num-seqs 64 \
--gpu-memory-utilization 0.85 \
--enable-prefix-caching \
--spec-method mtp --spec-tokens 3 \
--reasoning-parser step5 \
--enable-auto-tool-choice \
--tool-call-parser step5
调用本地服务
SGLang 和 vLLM 服务启动后,即可发送请求。下面是对 vLLM FP8 服务的请求示例:
curl http://127.0.0.1:18000/v1/chat/completions \
--header 'Content-Type: application/json' \
--data '{
"model": "step5",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 4096,
"stream": true
}'