惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
NISL@THU
NISL@THU
E
Exploit-DB.com RSS Feed
L
LINUX DO - 热门话题
L
Lohrmann on Cybersecurity
K
Kaspersky official blog
Project Zero
Project Zero
Cisco Talos Blog
Cisco Talos Blog
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threatpost
S
Schneier on Security
G
GRAHAM CLULEY
The Hacker News
The Hacker News
T
Threat Research - Cisco Blogs
Scott Helme
Scott Helme
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Privacy & Cybersecurity Law Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Cyberwarzone
Cyberwarzone
C
CERT Recently Published Vulnerability Notes
T
Tor Project blog
AWS News Blog
AWS News Blog
Simon Willison's Weblog
Simon Willison's Weblog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
爱范儿
爱范儿
P
Privacy International News Feed
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
S
Securelist
G
Google Developers Blog
The Last Watchdog
The Last Watchdog
Google Online Security Blog
Google Online Security Blog
美团技术团队
F
Fortinet All Blogs
小众软件
小众软件
Recorded Future
Recorded Future
V
Visual Studio Blog
B
Blog RSS Feed
H
Help Net Security
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Google DeepMind News
Google DeepMind News
Blog — PlanetScale
Blog — PlanetScale
博客园 - 聂微东
Stack Overflow Blog
Stack Overflow Blog
Martin Fowler
Martin Fowler
Latest news
Latest news
Spread Privacy
Spread Privacy
H
Heimdal Security Blog

博客园 - marsggbo

Eurosys26 | FineMoE如何用「细粒度」打破MoE推理的显存-延迟死局 LoRA fine-tune吞吐量提升1.96倍!LoRAFusion如何把内存带宽浪费和pipeline bubble一起干掉 Fast26 | LLM 推理启动慢?华为用一个「可编程 Page Cache」把模型加载砍了 79% KV Cache 的两层存储到底卡在哪?FAST'26 这篇论文给出了答案 NeurIPS24 | 把Dense LLM变身MoE还提速 ICML25 | EPIC:KV Cache 复用的「编译-链接」范式(附可运行代码复现) KV Cache 复用的第三条路:FAST 2026 CacheSlide 是怎么解决 Agent 推理的位置漂移问题的 KVCOMM:让多 Agent 系统的 KV Cache 真正“通起来”,TTFT 直接砍掉 7.8 倍 NSDI26 | DroidSpeak让不同 LLM 之间共享 KV Cache TokenDance 解决多 Agent LLM 推理的 KV Cache 冗余问题 当 AI 开始学会"记住":LLM Agent 记忆系统的统一视角 【转载】ACM MM 投稿论文模板修改成投稿模式 尝试从源头理解 SVD 原理和计算 LLM 场景下的强化学习技术扫盲 解决 Overleaf 中插入 PDF 图片失败的问题:排查与修复 Tmux ctrl+B快捷键失效处理办法 对抗训练综述学习笔记 【转知乎回答】一文看懂 LLaMA 中的旋转式位置编码(Rotary Position Embedding) 二进制中为什么负数是正数取反再加一 leetcode 常见题型代码总结 Prompt-Tuning、P-Tuning和Prefix-Tuning区别和代码实现【转】 Deepspeed ZeRO系列算法原理+通信开销详解 NSCC集群使用笔记 Huggingface Transformers实现张量并行的小坑 set/get_output_embeddings Pytorch 如何使用 storage 实现参数 offload? TACC 集群使用笔记 图解 vLLM 的推理调度策略 大模型推理框架 vLLM 源码解析(二):Block 模块分配和管理 OpenAI 的视频生成大模型Sora的核心技术详解(一):Diffusion模型原理和代码详解 大模型推理框架 vLLM 源码解析(一)
MoE 推理的内存墙,被一块多芯粒芯片打穿了?
marsggbo · 2026-04-29 · via 博客园 - marsggbo

今天想和大家聊聊这篇来自港科大的工作 —— Expert Streaming,最近在 arXiv 上出现,是少见的从芯片架构角度直接解决 MoE 推理内存瓶颈的硬核工作。

先交代下背景:MoE 火是真的火,DeepSeek、Qwen3 都在往 MoE 走,但我们自己跑的时候,却结结实实踩了个大坑 —— 显存根本不够用。稀疏激活的好处(计算量小)在 edge 设备上被"要把所有 expert 权重全量加载进来"这一条给彻底抵消了。


1. 问题到底出在哪里

MoE 的逻辑是:每次 forward,一个 token 只激活 top-K 个 expert,90% 以上的 expert 权重全程闲着。理论上很省计算,但现实是:

你得把所有 expert 的权重都放进 on-chip memory,才能在激活时立刻取用。

Qwen3-30B-A3B 有 128 个 expert,全量加载就是海量的 on-chip 存储需求。在 edge 多芯粒(multi-chiplet)加速器上,每块芯粒的 SRAM 是有限的,放不下。

大家的常见做法是 Expert Parallelism(EP)—— 把不同的 expert 分到不同芯粒上,每个芯粒只存一部分 expert。但这带来两个问题:

  1. all-to-all 通信开销:token 要跨芯粒路由到对应 expert 所在的芯粒,通信量随 batch size 下降而急剧放大
  2. 负载不均衡:MoE 有个很典型的"长尾效应"——

Figure 2: MoE 模型的长尾激活效应(不同 batch size 下,expert 的 token 处理数量)

如上图,小 batch 下这个长尾效应更严重:少数 hot expert 处理大量 token,大量 cold expert 几乎空转,芯粒利用率极不均匀。

还有个 state-of-the-art 的方案叫 Hydra,思路是利用 cross-layer expert popularity 来提前预测哪些 expert 会被激活,减少跨片通信。但本质还是基于 EP 的思路,没有从根上解决 on-chip memory 压力。

这也是整个行业 MoE edge 部署面临的核心矛盾:稀疏激活带来的计算收益,被全量权重加载的内存代价完全吃掉了。


2. Expert Streaming 的核心思路

这篇工作的出发点很有意思 —— 既然 D2D(die-to-die)高带宽互联(比如 UCIe)越来越成熟,为什么不把它当成一种计算资源,而不是单纯的通信开销来对待?

Figure 1: 多芯粒 AI 加速器架构模板,以及 MoE 网络结构示意

核心方案叫 FSE-DP(Fully Sharded Expert Data Parallelism),可以拆成三个互相咬合的设计:

2.1 Micro-slice Streaming

把每个 expert 的权重切成小块(micro-slice),在芯粒之间像流水线一样循环传输。

每个芯粒同时做三件事:

  • 计算当前 micro-slice 对应的矩阵乘
  • 接收下一块从邻居芯粒传来的 micro-slice
  • 转发刚算完的 micro-slice 给下一个芯粒

这样,D2D 通信和计算完全 overlap,expert 权重不需要全量驻留在任何一个芯粒上。

Figure 4: micro-slice 流水线:D2D 通信与计算 overlap 的详细示意

关键效果:on-chip memory 只需要存若干个 micro-slice 大小的 buffer,而不是整个 expert 的权重。

更进一步,他们做了"eager micro-slice usage"的优化 —— 芯粒收到 micro-slice 后立刻转发,不等计算完,这样每块 micro-slice 在 ring 上停留时间更短,buffer 占用更低。

2.2 多芯粒下的全分片并行(FSE-DP)

一个 expert 不再绑定在某一个芯粒上,而是均匀切分到所有芯粒上。每个芯粒持有这个 expert 的一个 slice,token 在芯粒间做 redispatch 以均衡负载。

Figure 3: FSE-DP 示意:4 个芯粒共同计算 expert 1,两种等价的数据流方式

两种等价的执行方式:

  • (a) token sequence 不动,expert slice 在芯粒间流动
  • (b) expert slice 不动,token sequence 在芯粒间流动

本质是一样的,调度器统一抽象为"trajectory"来管理。

2.3 Paired-load + Token Buffering

光有 micro-slice streaming 还不够,还有个利用率问题:DDR 加载 expert 权重的延迟(off-chip)比 D2D 通信慢得多。

Paired-load:把 hot expert(处理 token 多,compute-bound)和 cold expert(处理 token 少,memory-bound)配对,在同一个时间窗口内交错执行,让计算和 DDR 加载互相掩盖对方的 idle 时间。

Token Buffering:遇到 cold expert 时,不急着立刻处理这个 request,而是在 MoE 层边界暂停,等积累到一定数量的 token 之后再一起处理,提升 expert 利用率。

Figure 5: Paired-load 和 Token Buffering 策略的示意图

这两个策略把 DDR 加载的 overhead 和 D2D 的 micro-slice 流完全融合进了一个统一的 pipeline:

Figure 6: DDR 加载与 D2D micro-slice 流的 flow fusion 示意


3. 调度器设计

上面这套方案能运转,有个前提:需要一个硬件调度器来实时决定"哪些 expert 的 micro-slice 走哪条 trajectory"。

他们把这个调度器实现在 IO die 上,面积仅 0.43 mm²(28nm 工艺),调度延迟在亚微秒级别,不会成为 bottleneck。

Figure 8: 调度器硬件设计,实现在 IO die 上

"Virtualization"是调度器抽象层的关键概念 —— 无论 expert 在各芯粒上如何不均匀分布,调度器只需要保证 micro-slice 按规定的 trajectory 流动,底层实现细节对上层完全透明。

Figure 7: Virtualization 示意:irregular 分布下 micro-slice 仍能正确高效流动


4. 实验效果

测试了 4 个模型:Phi-3.5-MoE(16 experts)、Yuan2.0-M32(32 experts)、DeepSeek-MoE-16B(64 experts)、Qwen3-30B-A3B(128 experts),数据集覆盖 Wikitext-2、C4、WinoGrande。

单层 latency

Figure 9: 不同模型、数据集、输入 token 数下的单层 MoE 延迟对比

FSE-DP 在 16–1024 token 的 low-batch 范围内,单层 latency 均优于 EP 和 Hydra。

端到端 throughput

Figure 14: 端到端 throughput 对比(多个模型-数据集组合)

端到端 throughput 相比 state-of-the-art 基线,实现了 1.22×–2.00× 的提升。

On-chip memory savings

与 Expert Parallelism 相比,节省了高达 78.8% 的 on-chip memory

Figure 12: 不同模型下的 on-chip memory 用量对比

Ablation study

Figure 15: FSE-DP 各设计组件的 ablation 实验

micro-slice streaming、paired-load、token buffering 三个模块各自都有贡献,叠加后达到最优。


5. 我的 take

这篇工作有几个地方让我觉得很有意思:

1. 视角的转换很关键。 之前大家把 D2D 通信当成 MoE 并行的"代价"来优化,这篇工作直接把它当成"流水线资源"来利用,思路上有个质的跳转。

2. 真正的硬件协同设计。 光有算法不够,他们实际流片了(Figure 10 有芯片照片),在真实芯片上验证了整套方案,这在学术界还是比较稀缺的。

Figure 10: 芯片 floorplan 和封装照片

3. 对 edge MoE 的意义。 2.00× throughput + 78.8% memory savings,在资源受限的 edge 场景下,这个 combo 是实质性的提升,不是那种"提了 3%,但只在特定条件下"的 benchmark 游戏。

当然,也有局限性:token buffering 会引入额外的 latency(在 request 层面),这对 latency-sensitive 的场景有影响;另外这套方案对 D2D 带宽有一定要求,不同代际芯片的迁移成本还不清楚。

总体来说,这是一篇把系统架构、调度算法、硬件实现做得比较扎实的 MoE 推理优化工作,推荐做 LLM 系统和 edge 部署方向的同学认真看看。

欢迎评论区交流,有问题也欢迎指出。