阶跃星辰开源 Step 3.7 Flash:196B 参数只激活 11B,Agent 场景的推理速度新标杆

2026-05-29 42 预计阅读时间:1 分钟
来源:oschina.net AI 摘要 原文链接

免责声明:本文为 AI 摘要整理,建议结合原文阅读。摘要可能省略上下文、版本差异或边界条件,不作为官方说明。

预计阅读时间:9 分钟

Agent 应用从 demo 走向生产,最大的拦路虎不是模型能力不够,而是推理太慢。多轮对话、工具调用、搜索反馈——每一轮都在等模型吐字,用户体感直接崩盘。阶跃星辰刚开源的 Step 3.7 Flash,用稀疏 MoE 把总参数推到 196B,但每步只激活 11B,换来最高 400 Tokens/s 的生成速度,瞄准的就是这个痛点。

稀疏 MoE:大模型不等于慢模型

Step 3.7 Flash 的核心设计思路很直接——用参数量撑能力,用稀疏激活控速度

  • 总参数 196B(另有 1.8B ViT 用于多模态),但推理时每个 token 只路由到少量专家,激活参数仅 11B。
  • 激活比约 5.6%,意味着计算量接近一个 11B 密集模型,但知识容量远超它。

这和 Mistral Mixtral 8×7B、DeepSeek-V2 的思路一脉相承,但 Step 3.7 Flash 把激活比压得更低,速度收益更激进。代价是显存占用仍然需要承载全部 196B 参数的权重,部署门槛不会因为激活参数少而自动降低。

400 Tokens/s 意味着什么

400 Tokens/s 是一个值得拆解的数字:

  • 多轮 Agent 对话:假设每轮模型输出 200 token,单轮生成耗时约 0.5 秒,5 轨工具调用链总等待约 2.5 秒——用户几乎感觉不到卡顿。
  • Coding Agent:代码生成场景通常需要 300-500 token 的输出,1 秒内完成,配合代码执行反馈可以形成快速迭代循环。
  • Search Agent:搜索结果摘要 + 下一步决策,单次输出短、频率高,速度是最硬的指标。

对比之下,很多 70B 密集模型在单卡上推理速度只有 30-80 Tokens/s,Agent 场景的多轮累积延迟很容易超过 10 秒。

五类 Agent 场景的适配逻辑

阶跃星辰明确列出了五类目标场景,每类对模型的需求侧重点不同:

场景 核心诉求 Step 3.7 Flash 的匹配点
高频 Agent 低延迟、高并发 400 Tokens/s + 低激活参数
Coding Agent 代码理解 + 快速生成 196B 知识容量覆盖多语言
Search Agent 摘要 + 意图识别 快速输出 + 多轮低等待
多模态 Agent 图文联合推理 1.8B ViT 支持视觉输入
企业知识 Agent RAG + 长上下文 大参数量提升知识召回质量

注意:多模态能力来自额外的 1.8B ViT 模块,不是 11B 激活参数里的一部分。这意味着视觉推理的计算开销是叠加的,部署时需要评估是否真正需要多模态路径。

实践:用 vLLM 部署 Step 3.7 Flash 并跑一个 Agent 循环

以下示例展示如何用 vLLM 加载模型,并用一个最小 Agent 循环完成"搜索 → 摘要 → 决策"的三轮调用。假设你已经有一台配备足够显存的 GPU 服务器(196B MoE 模型需要约 4×80G A100 或等效配置来承载全部权重)。

第一步:启动推理服务

# 拉取模型(具体 repo 名称以阶跃星辰官方发布为准)
huggingface-cli download stepfun/Step-3.7-Flash --local-dir ./step-3.7-flash

# 用 vLLM 启动 OpenAI 兼容 API 服务
python -m vllm.entrypoints.openai.api_server \
  --model ./step-3.7-flash \
  --trust-remote-code \
  --max-model-len 8192 \
  --gpu-memory-utilization 0.95 \
  --port 8000

显存提示:196B 参数即使半精度(BF16)也需要约 392 GB,建议 4×A100-80G 或 2×H100-80G。如果显存紧张,可以尝试 GPTQ/AWQ 量化版本(如有发布),将需求压到 2×A100-80G 级别。

第二步:Python Agent 循环

import openai

client = openai.OpenAI(base_url="http://localhost:8000/v1", api_key="dummy")

SYSTEM_PROMPT = """你是一个搜索助手 Agent。每轮你会收到搜索结果,需要:
1. 用 2-3 句话摘要关键信息
2. 判断是否需要继续搜索
3. 如果不需要,给出最终回答

输出格式:
THOUGHT: <你的判断>
SUMMARY: <摘要内容>
ACTION: <search:查询词 / finish:最终回答>"""

def agent_loop(query: str, max_rounds: int = 5) -> str:
    messages = [
        {"role": "system", "content": SYSTEM_PROMPT},
        {"role": "user", "content": f"问题:{query}\n请开始搜索。"},
    ]

    for i in range(max_rounds):
        response = client.chat.completions.create(
            model="step-3.7-flash",
            messages=messages,
            max_tokens=300,   # Agent 单轮输出短,限制长度加速返回
            temperature=0.3,
        )
        reply = response.choices[0].message.content
        messages.append({"role": "assistant", "content": reply})
        print(f"--- Round {i+1} ---")
        print(reply)

        # 解析 ACTION 行
        action_line = [l for l in reply.split("\n") if l.startswith("ACTION:")]
        if not action_line:
            break
        action = action_line[0].split(":", 1)[1].strip()

        if action.startswith("finish:"):
            return action.split(":", 1)[1].strip()
        elif action.startswith("search:"):
            search_term = action.split(":", 1)[1].strip()
            # 这里接入真实搜索 API,示例用模拟数据
            mock_result = f"搜索 '{search_term}' 的结果:相关文档指出..."
            messages.append({"role": "user", "content": mock_result})
        else:
            break

    return "未能在限定轮次内完成。"

# 运行
answer = agent_loop("Kubernetes StatefulSet 和 Deployment 的核心区别是什么?")
print(f"\n最终回答:{answer}")

这个循环的关键设计点:

  • max_tokens=300:Agent 单轮不需要长输出,截断长度直接减少等待时间。
  • temperature=0.3:工具调用场景需要确定性输出,低温减少格式错误。
  • 每轮解析 ACTION 行决定下一步,这是 ReAct 模式的最小实现。

在 400 Tokens/s 的推理速度下,每轮 300 token 的输出约 0.75 秒完成,3 轮循环总推理时间约 2.25 秒——加上网络和搜索 API 延迟,整体体感可以控制在 5 秒以内。

部署决策清单

在把 Step 3.7 Flash 推向生产之前,有几件事需要提前想清楚:

  • 显存是否够用? 196B 全量权重的显存需求是硬约束,量化可以缓解但不能消除。先算显存,再谈速度。
  • 并发模式是什么? 如果是高并发短输出(典型 Agent 场景),vLLM 的 continuous batching 能充分发挥 400 Tokens/s 的优势。如果是长文档生成,速度优势会被输出长度稀释。
  • 是否需要多模态? ViT 模块是可选的。纯文本 Agent 场景可以不加载,省下 1.8B 参数的显存和计算开销。
  • 开源协议是什么? 阶跃星辰的具体许可证条款需要到官方 repo 确认,商业使用前务必核实。
  • MoE 的负载均衡问题:稀疏路由在极端情况下可能出现某些专家过载、其他专家闲置的情况,监控推理时的 expert routing 分布有助于调优。

Step 3.7 Flash 的价值主张很清晰——用 MoE 稀疏激活在"大模型能力"和"小模型速度"之间找到一个生产级 Agent 可用的平衡点。如果你正在做 Agent 应用、被推理延迟卡住,这是一个值得立刻试跑的选项。


相关推荐