CRAFT: Cost-Aware Expert Replica Allocation with Fine-Grained Layerwise Estimations (MLSys 2026)

一句话总结:观察到 MoE expert replication 存在 per-layer 收益差异大且整体 sublinearly 递减,用 per-layer benefit 估计 + MCKP 动态规划分配 replica 预算,在 DeepSeek-R1-671B 和 Kimi-K2-1T 上相比 EPLB 均匀复制平均 1.14×(最高 1.2×)throughput,同时显著降低显存占用。

问题

MoEExpert-Parallelism(EP)切分专家,但 router 的 Zipfian 分布导致严重的 expert 级负载不均——少数 hot expert 成为整个 GPU 的瓶颈,all-to-all dispatch 也堵塞。主流做法 EPLB 采用「每 GPU 每层 1 个 replica」的均匀复制来缓解,但在 60-层 MoE + 千亿参数模型下显存开销巨大,挤占 KV cache。本文做了两个关键观察:

  • Observation 1:各层对 replication 的收益差异大。高 skew 层(hot expert 承担 >27× 平均负载)replication 效果显著;低 skew 层 placement 已够用,replication 近乎浪费。
  • Observation 3/4:Balancedness 随 replica count sublinearly 增长,>16 replicas/layer 收益可忽略;plateau 点因层而异。

EPLB 均匀复制因此严重过度复制,大量 replica 边际贡献极小。

核心方法

CRAFT 以 per-layer 粒度按 replication benefit 分配 replica 预算,三步走:

Step 1 — 估计 per-layer replication benefit:对每一层,在 base-2 几何级数的 K = log₂D + 1 个 replica count 上 replay 离线 expert load 分布,测量 balancedness gain,得到 L × K 收益矩阵 T。

Step 2 — 确定 replication factor R:用户手动指定,或 CRAFT 自动挑选 per-replica gain 最高的 R(避开边际递减区)。

Step 3 — MCKP 分配:把问题建模成 Multiple-Choice Knapsack Problem:每层选一个 replica count,总数 ,最大化累计 benefit。NP-hard 但 D、K、L 规模小,动态规划在 pseudo-polynomial 时间内求解。

Capacity-Aware Expert Assignment:因为 per-layer replica 数不同,直接分配会导致 GPU 间 expert capacity 和 KV cache 大小不一致(影响 DP rank 内最大并发)。用贪心 + 两个目标解决:

  • Primary:新 replica 总分给 expert 数最少的 GPU(保证 R = r/D 整除后各 GPU memory 一致)。
  • Secondary:并列时 interleaved 分配到不同 node 以平衡节点级 capacity。

最终套用标准 greedy placement(最 hot expert → 最 cold device)。

无需训练或模型修改,可直接替换 SGLang / vLLM / TensorRT-LLM / DeepSpeed 的 EPLB 模块。

关键结果

  • 在 8 节点 p4de.24xlarge(64× A100-80GB)集群,SGLang v0.4.8 基础上实验。
  • DeepSeek-R1-671B(58 MoE 层,256 experts)和 Kimi-K2-1000B(60 MoE 层,384 experts),top-8 路由。
  • 相比 EPLB 均匀复制,端到端吞吐平均 1.14×,最高 1.2×
  • R = 8(每 GPU 8 个 replica)是 CRAFT 的 sweet spot,显存显著低于 EPLB 的 L = 60 replica/GPU。
  • Observation 证实 >16 replica/layer 几乎无额外 balancedness gain——EPLB 的 64 replica 是严重过度。

相关