Zhaoyuan Su et al. (UVA, Snowflake AI Research, Harvard) | 2026-05 | https://arxiv.org/abs/2605.02960 Category: framework | Tags: MoE, prefill-only, expert-parallelism, weight-streaming, prefix-caching, serving, throughput-optimization
MoE prefill serving 的三重冗余(计算、内存、通信)根源于「expert 放置与 activation 路由的耦合」。ZeRO-Prefill 提出 AsyncEP,将 expert 从 "按 activation 路由" 反转为 "按 weight 流入"——用后台 D2D AllGather 替代每层同步 AllToAll,配合 frontend 强制的饱和阈值 T 保证 overlap,在 Qwen3-235B-A22B 上实现 1.35–1.37× 吞吐提升和 4× 部署弹性。

Figure 1: 匿名生产集群中 prefill-only 工作负载占 65.3% 的 input token 流量。
生产 LLM 工作负载中 65.3% 的 input tokens 属于 prefill-only(分类、推荐、验证等判别式任务),其答案完全由单次 prefill 的 logits 决定,无需自回归解码。这类工作负载面向吞吐、大 batch、长 compute-bound forward、丰富 prefix sharing——但现有 MoE 分布式策略(EP/TP/PP)为了装下模型引入了三重冗余:计算(sub-saturated GEMMs + routing 不均衡 stragglers)、内存(全驻留 expert weights + k 倍 activation 膨胀 + 重复 prefix KV)、通信(每层两次同步 AllToAll)。
ZeRO-Prefill 的核心观察:大 batch prefill 的长 compute window 足以在后台完成 expert weight 的 AllGather。因此反转传统 EP 的数据流方向——不再把 activation 路由到 expert 所在的 GPU,而是把 expert weight 流式搬运到计算所在的 GPU,使每个 GPU 在每层都持有完整 expert 集合,所有 top-k dispatch 变为本地操作。Backend 侧的 AsyncEP 用 D2D AllGather(可选 H2D offload)替代 AllToAll;Frontend 侧强制饱和阈值 T = t_EP × F_GPU × γ,通过 prefix-aware routing、true-FLOPs tracking、overlap-aware balancing 三规则保证每 GPU batch 的 compute window 足够大。

Figure 2: MoE 模型总参数量 vs 单 GPU HBM 容量。即使 FP8 下,结构性 gap 持续存在。Qwen3-235B 需 235 GB FP8 / 470 GB BF16,超出任何单卡。
MoE 总参数量增速远超单 GPU HBM,迫使运营商使用分布式执行。但所有现有策略都在 prefill 关键路径上引入冗余:
| 策略 | 计算冗余 | 内存冗余 | 通信冗余 |
|---|---|---|---|
| DP×DP | 无 | 每卡全量 weights(不可行) | 无 |
| DP×EP | routing 不均衡→straggler | 1/N experts + k 倍 activation | 2× AllToAll / 层,~4kBSHb |
| DP×TP | 全卡 expert 重复 | 冗余 expert 存储 | AG+RS / 层,~4BSHb |
| TP×EP | 两者叠加 | 叠加 | AllReduce + 2× AllToAll |
| PP×PP | pipeline bubble | 阶段间不均 | 2× Send/Recv |
量化结果:在 8×A100 上,所有主流策略 MFU < 16%,多个 baseline 在 4 GPU 以上 plateau 或退化。

Figure 4: Qwen3-30B-A3B 的 expert routing 不均衡。(a) 聚合 48 层的 expert load,max/min 达 16.15×;(b) 单层内的 expert load 分布更加偏斜。不均衡使 per-expert GEMMs 碎片化,最重 GPU 成为 per-layer straggler。
根因:EP 的同步 AllToAll 将 expert 放置与 activation 路由耦合——这是 decoding 时代的设计遗产,decoding 时每 step 只处理 1 token 没有足够 compute window 来 overlap 任何传输。但 prefill 不同。

Figure 6: 传统同步 DP+EP(4 GPUs)。每 GPU 持有 1/N experts,每层两次同步 AllToAll 在 critical path 上。

Figure 7: AsyncEP 执行模型。(a) D2D-only:每 GPU 为第一层复制全部 experts,后续层通过后台 NVLink AllGather 收集,与当前层 compute overlap。(b) 带 offloading:仅保留 upcoming 几层的 1/N shards on GPU,H2D PCIe 预取与 D2D AllGather 并行两通道流水。
核心反转:
传统 EP: activation → AllToAll → 远端 GPU 上的 expert → AllToAll → 回传
AsyncEP: expert weights → AllGather(后台) → 本地 GPU 完整 expert → 本地 dispatch
饱和阈值 T(物理量,启动时一次性标定):
$$T = t_{\text{EP}} \times F_{\text{GPU}} \times \gamma$$
含义:只要每 GPU 每 batch 的 FLOPs ≥ T,当前层 compute 一定覆盖下一层 weight AllGather。Prefill-only 的大 batch 天然满足此条件,frontend 进一步强制。

Figure 5: ZeRO-Prefill 系统架构和端到端 workflow。Frontend 将任务标准化为 prefill-only 并按 saturation 规则组 batch;Backend 以 DP attention + AsyncEP 执行,返回 logits,不进入任何 decode 循环。
Frontend 三规则(co-design 闭环):

Figure 8: Frontend 调度三阶段。(1) Prefix-aware routing 选最长 block-level cache 匹配的 GPU;(2) Compute-aware tracking 按 true-FLOPs(扣除 prefix sharing credit)更新负载;(3) Overlap-aware balancing 在负载达到 T 时标记 GPU 为 saturated。
Memory knobs(正交可组合):

Figure 9: 端到端吞吐(聚合真实 workload)。四个 panel 分别对应 8×A100 BF16、8×H100 BF16、8×H100 FP8、8×H200 FP8。ZeRO-Prefill 在每个 (hardware, precision, parallel degree) cell 均为最优。

Figure 12: MFU(H100 FP8, synthetic no-prefix-reuse)。N/A cells 表示 baseline 因内存不足无法运行——仅 ZeRO-Prefill 可在 1–2 GPU 上部署 Qwen3-235B-A22B。全 sweep 最差值(29.84%)仍高于所有 baseline 的最佳值(20.09%)。
| 指标 | 数值 | 条件 |
|---|---|---|
| Throughput vs best baseline | 1.35–1.37× | Qwen3-235B-A22B, 聚合真实 workload, 4 hw/precision configs |
| Throughput (long context) | up to 1.59× | 32K–128K synthetic, 无 prefix 共享 |
| MFU (per-GPU) | 29.8–36.2% | 1–8 GPUs, H100 FP8 |
| Deployable envelope | 1–8 GPUs (vs ≥4) | 4× 更宽硬件范围 |
| Frontend 增量贡献 | +16–18% | backend-only → full co-design, 8 GPU |

Figure 10: 两层设计的增量贡献分解。DP+AsyncEP(backend-only)已解决通信瓶颈,Frontend 在此基础上额外贡献 +16–18%(8 GPU),且增益随 parallel degree 增长。
| Prefill-only 精度 | ±3.6 pp on 7/9 tasks | vs AR decoding, 生产分类 harness |
|---|---|---|
| 同模型 decode mode gap | ~1 pp | IMDB 25K, gpt-oss-120B |
| Implementation | vLLM v0.11.0 上单 flag 启用 | — |
2026 年中,MoE 已成为开放权重 LLM 的默认架构(Qwen3、DeepSeek-V3、Mixtral、gpt-oss),同时判别式 LLM 用例(分类、审核、推荐、验证)在生产集群中占据 >65% 的 input token 流量。这些任务只需一次 prefill 即可出答案,但运营商仍用为 autoregressive serving 设计的引擎来处理它们——这是一个系统架构与工作负载形态之间的结构性错配。
Prefill-only workload 有三个与 AR serving 截然不同的特征:(1) 吞吐导向而非延迟敏感;(2) 大 batch 产生长 compute-bound forward pass;(3) 丰富的 prefix sharing(同模板、同用户画像、同文档头)。这三个特征恰好是 MoE 分布式执行最需要但从未被利用的——大 compute window 可以 overlap 传输,prefix sharing 可以消除冗余计算,吞吐导向允许更激进的 batch。
为什么 EP 不行? EP 在每层强制两次 AllToAll,将 activation 送到 expert 所在 GPU 再送回。通信量 ~4kBSHb / 层,与 batch size × seq length 成正比。更致命的是 routing 不均衡:max/min expert load 可达 16.15×(Qwen3-30B 实测),最重 GPU 成为 per-layer straggler,且 AllToAll 是 barrier——所有 GPU 必须等最慢的。
为什么 TP 不行? TP 在每 GPU 上冗余存储全部 experts(HBM 被 weights 占满,挤压 KV cache 和 batch size),且每层仍需 AllReduce。对于 MoE 模型,TP 的 weight 冗余尤为严重——experts 占总参数的 ~90%。
为什么 PP 不行? Causal attention 在 pipeline 各 stage 间造成固有 load imbalance(early stages 处理短 context,late stages 处理完整 context),pipeline bubble 随层数增长。
核心约束:所有策略的问题都源于一个假设——expert weights 是静态放置的,activation 必须路由到 weight 所在位置。这个假设在 decoding 时代合理(每 step 只 1 token,compute window 太短无法 overlap 任何传输),但在 prefill 大 batch 时代不成立。
反转数据流方向:不把 activation 送到 expert,而是把 expert weight 搬到 activation 所在的 GPU。具体地:
为什么可行?因为 prefill 大 batch 的 compute window 足够宽。T = t_EP × F_GPU × γ 是一个可以在启动时精确标定的物理量——只要 frontend 保证每 GPU batch 的 FLOPs ≥ T,overlap 就得到保证。

Figure 11: 无 prefix sharing 的 synthetic workloads(8×H100 FP8)。四个 context regime:short(256), medium(4K), long(32K), ultra-long(128K)。AsyncEP 在 long context 下优势更大(1.52×),因 baseline 的 AllToAll 通信量与 B·S 成正比。
| 维度 | DP×EP (vLLM) | DP×TP (vLLM) | PP×PP (vLLM) | PrefillOnly | ZeRO-Prefill (DP×AsyncEP) |
|---|---|---|---|---|---|
| Expert 通信 | 2× AllToAll / 层 (on-path) | AG+RS / 层 (on-path) | Send/Recv | 继承底层策略 | 1× AllGather / 层 (off-path, 后台) |
| Expert load balance | straggler 放大 | 无(全 GPU 冗余存储) | pipeline bubble | 同底层 | 本地 dispatch,无 straggler |
| Expert weight 内存 | 1/N per GPU | 全量 per GPU | 1/stage per GPU | 同底层 | 当前层全量 + 1/N 其余层(可 offload) |
| Prefix 利用 | 被动 cache | 被动 cache | 被动 cache | scheduler 级 shortest-first | 主动 routing + true-FLOPs tracking |
| MFU (8×H100 FP8) | ~17% | ~20% | ~15% | ~18% | 29.8–34.7% |
| Min GPU count (235B FP8) | 4 | 4 | 4 | 4 | 1 |
| Prefill-only aware | 否 | 否 | 否 | 是(scheduler) | 是(全栈 co-design) |
| On-path comm volume | ~4kBSHb | ~4BSHb | ~2BSHb | 同底层 | ≈ 0 |
vs DeepSeek-V3 EP (2412.19437):DeepSeek-V3 使用 EP + auxiliary-loss-free load balancing 优化 training 时 routing 均衡,但 serving 时 routing 不均仍在。ZeRO-Prefill 从根本上消除了 routing imbalance 的影响——不是让 routing 更均匀,而是让不均匀不再重要(本地 dispatch)。
vs DynaServe (2504.09285):DynaServe 通过动态 expert 放置和 migration 优化 serving,仍在同步 EP 框架内。ZeRO-Prefill 跳出此框架,用 weight streaming 替代 expert placement optimization。
vs PrefillOnly (2604.15039):PrefillOnly 首次定义 prefill-only serving 并优化 scheduler(shortest-prefill-first, KV lifetime),但未触及 MoE 执行栈。ZeRO-Prefill 在 execution level 消除冗余,两者互补——PrefillOnly 的 scheduler 优化可叠加在 AsyncEP 后端上。
| 数值 | 含义 | 来源 |
|---|---|---|
| 65.3% | 生产集群中 prefill-only 工作负载占 input token 流量比例 | Fig. 1, 匿名生产集群测量 |
| 16.15× | Qwen3-30B-A3B 的 max/min expert token count(聚合 48 层) | Fig. 4(a), 8×A100 BF16, 64K tokens |
| <16% | 所有主流策略在 8×A100 上的 MFU | §4 system analysis, vLLM baseline |
| T = t_EP × F_GPU × γ | 饱和阈值公式 | Eq. (1), §6.2 |
| γ = 1.2 | 默认安全余量 | §6.2 |
| 1.37× | A100 BF16 端到端吞吐提升 | Fig. 9, 聚合 workload, 8 GPU, vs best baseline |
| 1.36× | H100 BF16 端到端吞吐提升 | Fig. 9 |
| 1.35× | H100 FP8 端到端吞吐提升 | Fig. 9 |
| 1.37× | H200 FP8 端到端吞吐提升 | Fig. 9 |
| 1.59× | 最大吞吐提升(long context synthetic) | Fig. 11, 32K×320, 8×H100 FP8, backend-only |
| 29.8–36.2% | 全 sweep MFU 范围 | Fig. 12, 1–8 GPU, H100 FP8, synthetic |
| +16–18% | Frontend co-design 增量贡献 | Fig. 10, 8 GPU, 四个 hw/precision configs |
| 1–8 GPU | 部署信封(vs ≥4 GPU) | §8.5, hybrid offloading + KV-cache-free |
| ±3.6 pp | 7/9 分类任务 prefill-only vs AR 精度偏差 | Table 3, 9-task harness |
| ~1 pp | 同模型下 decode mode 贡献的精度差 | Table 4, IMDB 25K, gpt-oss-120B |
| 73.8K req / ~37.9M tokens | 聚合评估 workload 规模 | Table 2, 6 个 benchmark 混合 |