☰
如何为Step-5-Preview选择最优部署配置?TP/TEP/DEP七种并行方案完整解析
2026/11/3 2:32:38 网站建设 项目流程

如何为Step-5-Preview选择最优部署配置?TP/TEP/DEP七种并行方案完整解析

Step-5-Preview 是阶跃星辰推出的 600B 参数稀疏 MoE 旗舰模型(激活参数仅 27B,支持最高 1M 上下文),本地部署时的核心难题就在于"选哪套并行配置"。本文完整解析 vLLM / SGLang / Transformers 下TP、TEP、DEP 七种并行方案,从 4 卡 B300 到 16 卡双节点 H200 逐一拆解,帮你用最少的显存、跑通最高的并发。

为什么 Step-5-Preview 的部署配置如此关键?

先看模型的"底子",配置选型的一切都源于它:

规格数值
架构稀疏 MoE(Mixture of Experts)
总参数 / 激活参数600B / 27B
解码层数92 层
路由专家数352 个(每 token 只激活 8 个)
上下文 / 最大输出最高 1M tokens

600B 的 BF16 权重远超单卡甚至单节点显存,必须靠并行切分才能加载;而 MoE 结构又让"专家放哪、怎么通信"成了新的变量。选错方案,轻则 OOM,重则并发上不去。

📌 专家与层数配置见 config.json:moe_num_experts: 352、moe_top_k: 8、num_hidden_layers: 92。

快速认识 TP、TEP、DEP:三种并行到底在分什么?

🧩 一个类比:把"服务 600B 大模型"想象成一家大型餐厅——

缩写全称分的是什么适合场景
TPTensor Parallel 张量并行把同一层的权重横着切到多卡,每卡算一部分再汇总单请求低延迟,配置最简单
TEPTensor + Expert Parallel稠密层按张量切 +MoE 专家分组分布到多卡兼顾显存与专家分布均匀性
DEPData + Expert Parallel每卡各存一套完整稠密权重,只切专家,天然支持多路并发高并发、多用户同时访问
EPExpert Parallel 专家并行仅把 352 个专家分摊到各卡(SGLang 与独立推理路径采用)配合 TP 使用

关键细节:352 个专家 ÷ 卡数 = 每卡专家数。8 卡放 44 个/卡,16 卡放 22 个/卡——卡数必须能整除专家分布,这也是 TP=EP 取同值的由来(详见 inference/README.zh.md)。

⚙️ 另一个易踩坑的点:Blackwell(B300)上 TEP/DEP 会启用 MegaMoE 后端(--moe-backend deep_gemm_mega_moe),而 Hopper(H200)使用默认 MoE 后端,命令需要相应删改;纯 TP 则一律走默认后端。

七种并行方案全景对照

官方在 README.md 的 Deployment Configurations 中给出的推荐组合如下:

#框架精度硬件并行方案接口形态
1vLLMFP8单节点 4× B300TP4 / TEP4 / DEP4OpenAI 兼容 API
2vLLMFP8单节点 8× H200TP8 / TEP8 / DEP8OpenAI 兼容 API
3vLLMBF16单节点 8× B300TP8 / TEP8 / DEP8OpenAI 兼容 API
4vLLMBF16双节点 16× H200TP16 / TEP16 / DEP16OpenAI 兼容 API
5SGLangFP8单节点 4× B300 / 8× H200TP4/EP4、TP8/EP8OpenAI 兼容 API
6Transformers(独立实现)FP8单节点 8× H200TP8 / EP8离线生成
7Transformers(独立实现)BF16双节点 16× H200TP16 / EP16离线生成

说明:DP、TP、EP 分别指数据、张量、专家并行;TEP = 张量 + 专家并行,DEP = 数据 + 专家并行。以上组合是官方起步配置,实际可用上下文长度与并发会随 KV cache 分配而变化。

方案逐一解析

1️⃣ TP4:4 卡 B300 的入门选择

最简单的起步方案:--tensor-parallel-size 4,DP=1,不开专家并行,走默认 MoE 后端。

vllm serve stepfun-ai/Step-5-Preview \ --tensor-parallel-size 4 \ --data-parallel-backend mp \ --disable-custom-all-reduce \ --max-model-len 1048576 \ --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

适合:只有 4 张 B300、追求快速跑通服务的场景。完整命令含端口、模型名等参数,参见 README.md。

2️⃣ TEP4:张量 + 专家并行,MegaMoE 加持

在 TP4 基础上增加--enable-expert-parallel,并在 B300 上切换为--moe-backend deep_gemm_mega_moe。稠密部分切张量、352 个专家 4 路分布,显存与通信更均衡。命令见 README.md。

3️⃣ DEP4:数据 + 专家并行,并发更优

--tensor-parallel-size 1 --data-parallel-size 4 --enable-expert-parallel:每卡持完整稠密主干,仅专家 4 路分片,4 个 DP rank 各服务一批请求。多用户同时访问时吞吐表现更好,但每卡要放下完整非专家权重,对单卡显存要求更高。命令见 README.md。

💡 TP/TEP 使用 DP=1;DEP 使用 TP=1。所有配置中--max-num-seqs按每个 DP rank 独立计算。

4️⃣ TP8 / TEP8 / DEP8:8 卡 H200 与 B300

  • FP8 + 8× H200:把上面的 4 卡命令改为--tensor-parallel-size 8(TP8/TEP8)或--data-parallel-size 8(DEP8);⚠️ H200 属 Hopper 架构,保留--enable-expert-parallel但要去掉 MegaMoE 后端参数。
  • BF16 + 8× B300:TEP8/DEP8 用 MegaMoE,TP8 用默认后端,参数组见 README.md。

注意:在 FP8 checkpoint 上设--dtype bfloat16不会把权重量化转回 BF16,BF16 部署必须挂载 BF16 checkpoint 并设置MODEL环境变量。

5️⃣ 16 卡双节点:TP16 / TEP16 / DEP16 跑 BF16

完整 BF16 模型 92 层仅参数就需约144.41 GiB/卡(TP=EP=8),超出 H200 单卡 140.40 GiB 上限,因此官方采用TP=EP=16,实测参数加载降至74.93 GiB/卡、每卡 22 个专家。

  • TP16/TEP16:两节点各起一条命令,node 0 暴露 18000 端口,node 1 带--headless,通过--master-addr互联,参数块见 README.md。
  • DEP16:TP=1、16 路数据并行,每节点 8 个 rank(--data-parallel-size-local 8),两节点共享同一>python3 convert.py --checkpoint "$STEP5_FP8_CHECKPOINT" \ --tp-size 8 --ep-size 8 --check-only torchrun --standalone --nproc-per-node=8 generate.py \ --tp-dir "$STEP5_FP8_OUT/tp8" --ep-size 8 \ --prompt "请介绍一下张量并行。" --max-new-tokens 128

    双节点 BF16 则用--nnodes=2 --nproc-per-node=8,WORLD_SIZE=16,分片与--ep-size必须都是 16。详细步骤见 inference/README.zh.md。

    ⚠️ 官方说明:BF16 完整convert.py → generate.py文件分片流程尚未端到端验证;该路径支持贪心生成,不含连续批处理、分页 KV cache 与投机解码(MTP 层不加载)。

    新手选型:一张表看懂怎么选

    你的情况推荐方案理由
    只有 4× B300,想快速出 APIvLLM FP8 +TP4配置最简单
    4× B300,要压榨 Blackwell 性能vLLM FP8 +TEP4/DEP4(MegaMoE)专家并行 + 专用后端
    单节点 8× H200 在线服务vLLM FP8 +TEP8显存/通信均衡,Hopper 默认后端即可
    多用户高并发vLLM +DEP系列每 rank 独立服务请求,并发线性受益
    BF16 完整精度需求双节点TP16/TEP16/DEP16单节点 8 卡装不下(144.41 GiB/卡超限)
    想要 EAGLE 投机解码SGLang TP4/EP4 或 TP8/EP8官方默认开启 EAGLE 3 步
    研究/离线批处理,不想搭服务TransformersTP8/EP8独立实现,torchrun直接跑

    实用避坑清单

    1. B300 与 H200 的 MoE 后端不同:B300 的 TEP/DEP 加--moe-backend deep_gemm_mega_moe,H200 去掉该参数——这是最常见的启动失败原因。
    2. 1M 上下文是输入 + 输出合计,KV cache 不够就先降--max-model-len。
    3. --max-num-seqs是按 DP rank计并发,DEP16 的实际并发远大于字面值。
    4. BF16 部署必须用 BF16 checkpoint,不能靠改--dtype转换。
    5. 双节点部署时,node 1 命令带--headless,API 只在 node 0 的 18000 端口暴露(vLLM)。
    6. 独立推理路径要求--ep-size等于进程总数,暂不支持 TP/EP 分离的进程网格。

    快速开始

    克隆仓库(本仓库为模型权重与独立推理代码):

    git clone https://gitcode.com/StepFun/Step-5-Preview-BF16

    推荐路径:拉取官方 vLLM 镜像docker pull vllm/vllm-openai:step-5-preview进入容器,按上文选型表选定方案执行vllm serve,随后用http://localhost:18000/v1/chat/completions(模型名step5)即可发起 OpenAI 兼容请求;SGLang 则为 30000 端口。请求示例见 README.md。

    相关资源

    • 部署总览与全部启动命令:README.md
    • 独立推理路径详解(含术语表、显存实测、验证结果):inference/README.zh.md
    • 模型结构配置(352 专家 / top-8 / 92 层):config.json
    • 权重分片转换器:inference/convert.py
    • 离线生成入口:inference/generate.py
    • 自定义 MoE 算子:inference/kernel.py

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询