文章摘要
MoE 模型在生产环境中部署时,总参数量决定显存占用,激活参数量决定推理吞吐——这两个维度在稠密模型中是同一个数字,在 MoE 中被彻底解耦。本文面向正在评估或已经决定部署 MoE 模型的工程团队,从容量规划的第一步到专家缓存、量化分层、多 GPU 拓扑选择,给出可执行的决策框架。所有结论基于 2025-2026 年主流推理框架(vLLM、TensorRT-LLM、SGLang)的一手工程数据和 DeepSeek-V3/V4、Kimi K2、Llama 4、Mistral Large 3 等模型的部署实践。
1为什么 MoE 部署不能用稠密模型的经验
你在稠密模型上积累的容量规划直觉,在 MoE 上会给出错误答案。 这是团队在部署第一个 MoE 模型时最常踩的坑。
在稠密模型的世界里,一个 70B 参数的模型意味着:显存需要约 140GB(BF16)或 35GB(INT4),推理时每个 token 激活 70B 参数,吞吐和显存是同一个数字的两个面。你可以根据"70B"这一个数字推算出 GPU 数量、batch size 和延迟预期。
MoE 打破了这个等式。一个 1T 总参数 / 32B 激活参数的 MoE 模型:
- 显存维度:需要加载全部 1T 参数的权重,BF16 下约 2TB 显存——这是 8×H100 80GB 的整节点配置
- 计算维度:每个 token 只激活 32B 参数,推理吞吐接近一个 32B 稠密模型
- 结果:你花的硬件成本是 1T 级别的,但拿到的吞吐是 32B 级别的
这不是缺陷,而是 MoE 的设计意图——用显存换知识容量,同时保持推理效率。但如果你用稠密模型的"参数量 = 一切"来规划,要么显存算错导致模型放不下,要么吞吐预期算错导致 SLA 违约。根据 Ertas AI 的部署分析 Mixture of Experts (MoE) Architecture in 2026,"Memory and inference cost decouple. With dense models, a 70B model is '70B-class' both in memory cost and inference cost. With MoE, a 1T-A32B model is 1T-class in memory cost but 32B-class in inference throughput."
本文的目标:给出一套从"我选了一个 MoE 模型"到"它在生产环境稳定服务"的完整决策路径。不重复 MoE 的架构原理(路由机制、Top-K 选择、辅助损失等已在 llm-013 中覆盖),只聚焦部署工程中的内存管理、专家调度、框架选型和容量规划。
💡 一句话理解
容量规划的第一条规则:MoE 模型必须同时追踪两个数字——总参数量(决定显存和 GPU 数量)和激活参数量(决定吞吐和延迟)。只看其中一个都会导致部署失败。
2内存-计算解耦的工程后果
内存和计算的解耦不只是让容量规划变复杂——它从根本上改变了 MoE 部署中每一个工程决策的权衡方向。
GPU 利用率的双峰特征。稠密模型推理时,所有参数都在参与计算,GPU 利用率高且稳定。MoE 推理时,每个 token 只激活一小部分专家,其余专家的权重安静地躺在显存里不做任何事。这意味着:
- GPU 的 HBM 带宽被占满(所有专家的权重都需要可寻址)
- 但计算单元(Tensor Core)的利用率可能只有 3-10%
- 瓶颈从"计算不够快"变成了"显存带宽不够宽"
Batch size 的放大效应。稠密模型中,增大 batch size 会线性增加计算量和显存占用。MoE 中,增大 batch size 主要增加激活专家的计算量,非激活专家的显存占用不变。这意味着 MoE 对 batch size 的敏感度更低——你可以在不显著增加延迟的情况下塞入更多请求,直到激活专家的计算成为瓶颈。
多请求并发的经济模型。一个 MoE 推理服务同时处理 100 个并发请求时,这 100 个请求共享同一套专家权重。每个请求只贡献自己激活的那部分计算量。这与稠密模型"每个请求都要跑完整模型"的经济模型完全不同——MoE 的边际服务成本随并发数增长的速度更慢。
| 维度 | 稠密模型 | MoE 模型 | 部署含义 |
|---|---|---|---|
显存占用/token | ∝ 总参数量 | ∝ 总参数量(不变) | MoE 不因激活少而省显存 |
计算量/token | ∝ 总参数量 | ∝ 激活参数量 | MoE 吞吐由激活参数决定 |
GPU 利用率瓶颈 | 计算单元 | HBM 带宽 | MoE 需要高带宽显存 |
Batch size 敏感度 | 高(线性增长) | 低(非激活部分不变) | MoE 可承受更大 batch |
并发边际成本 | 线性增长 | 亚线性增长 | MoE 高并发更经济 |
量化收益分布 | 均匀 | 不均匀(专家差异大) | MoE 需要分层量化策略 |
3容量规划:从模型参数到 GPU 配置
容量规划是 MoE 部署的第一步,也是最容易出错的一步。下面给出一个可执行的计算框架。
第一步:计算显存需求。MoE 模型的显存需求由总参数量决定,与激活参数量无关。以 DeepSeek-V3 为例:
- 总参数 671B,BF16 精度下权重占用约 1.34TB
- 加上 KV Cache(取决于上下文长度和并发数)、激活值、框架开销,实际显存需求约 1.6-1.8TB
- 最低配置:8×H100 80GB(共 640GB)不够,需要 2 节点通过 InfiniBand 互联;或 INT4 量化后单节点 8×H100 80GB 可容纳
根据 DeepSeek 官方技术报告 DeepSeek-V3 Technical Report,DeepSeek-V3 在 2048 个 GPU 上完成训练,训练成本仅约 560 万美元(2.788M H800 GPU hours)。推理部署时,其 671B 总参数在 BF16 下需要约 1.34TB 显存,这与我们的计算一致。
第二步:计算吞吐需求。吞吐由激活参数量和请求模式决定:
- DeepSeek-V3 激活参数 37B,单 token 推理计算量约等于一个 37B 稠密模型
- 在 8×H100 上,单请求延迟约 50-80ms(取决于序列长度)
- 连续批处理(continuous batching)下,吞吐可达 500-2000 tokens/s
第三步:选择部署拓扑。根据模型规模和 SLA 要求选择:
| 模型规模 | 单 GPU 可部署 | 单节点可部署 | 推荐配置 |
|---|---|---|---|
| <100B 总参 / <10B 激活 | 是(INT4 量化) | 是 | 单卡或双卡 |
| 100-300B 总参 / 10-30B 激活 | 否 | 是(BF16) | 单节点 8×H100 |
| 300B-1T 总参 / 30-50B 激活 | 否 | 需量化 | 单节点 INT4 或双节点 BF16 |
| >1T 总参 / >50B 激活 | 否 | 否 | 多节点 + 专家并行 |
实际案例:Mistral Large 3(675B 总参 / 41B 激活)在单节点 8×H100 80GB 上可以 BF16 部署,因为 675B×2 bytes = 1.35TB < 640GB×2(考虑量化和 KV Cache 预留)。而 DeepSeek-V4 Pro(1.6T 总参 / 49B 激活)在 BF16 下需要 3.2TB 显存,必须多节点或使用 INT4 量化压缩到约 800GB 后单节点部署。
4专家并行:多 GPU 部署的拓扑选择
当 MoE 模型的总参数量超过单 GPU 显存时,必须将专家分布到多个 GPU 上——这就是专家并行(Expert Parallelism)。专家并行的核心挑战不是计算,而是通信:当一个 token 需要路由到位于另一个 GPU 上的专家时,必须通过 GPU 间互联传输该 token 的隐藏状态。
三种基本拓扑:
节点内专家并行:8 个 GPU 在同一节点内,通过 NVLink 互联(带宽 900GB/s on H100)。通信延迟低(微秒级),适合 256 专家以下的模型。这是最常见的部署形态。
跨节点专家并行:专家分布在多个节点上,通过 InfiniBand(400Gbps)或 RoCE 互联。通信延迟高(数十微秒),带宽受限。只有当模型大到单节点放不下时才使用。
混合并行:节点内用 NVLink 做专家并行,节点间用张量并行或流水线并行。这是 DeepSeek-V3 训练时采用的策略,推理时较少使用因为推理的通信模式与训练不同。
通信开销的量化。专家并行中的通信主要是 All-to-All 操作——每个 GPU 将路由到其他 GPU 的 token 发送出去,同时接收来自其他 GPU 的 token。通信量取决于:
- 专家分布的分散程度(如果所有 token 都路由到同一个 GPU 上的专家,通信量为零)
- Top-K 值(K 越大,每个 token 需要访问的 GPU 越多)
- Batch size(batch 越大,通信的摊销成本越低)
实测数据(DeepEP, 2025):在 8×H100 NVLink 配置下,DeepSeek-V3 的 All-to-All 通信占总推理时间的 8-15%。如果这个比例超过 25%,说明专家分布不均或 batch size 过小,需要调整路由策略或增大 batch。
根据 TensorOps 的工程分析 LLM Mixture of Experts Explained — A 2026 Field Guide,"The interaction between fine-grained MoE routing and aggressive quantization is genuinely model-specific. Test the quantization tier you actually plan to deploy before committing. Assumptions from dense-model experience don't always transfer." 这强调了在专家并行部署中,通信开销和量化策略都需要针对具体模型进行实测验证。
| 拓扑 | 互联带宽 | 通信延迟 | 适用模型规模 | 典型配置 |
|---|---|---|---|---|
节点内 EP | NVLink 900GB/s | < 5μs | < 500B 总参 | 8×H100 单机 |
跨节点 EP | IB 400Gbps | 10-50μs | 500B-2T 总参 | 2-4 节点 |
混合 EP+TP | NVLink + IB | 混合 |
| 训练常用,推理少见 |
EP + CPU Offload | PCIe 128GB/s | 5-20μs | 显存不足时 | 冷专家卸载到 CPU |
5专家生命周期管理:热、温、冷分层
MoE 模型中不同专家的使用频率差异巨大——实测数据显示,约 20% 的专家处理 80% 的 token(帕累托分布)。这意味着把所有专家以相同优先级放在 GPU 显存里是浪费的。专家生命周期管理(Expert Lifecycle Management)通过分层存储来优化显存使用。
三层模型:
- 热专家(Hot Experts):被频繁路由到的专家,常驻 GPU 显存,保持 BF16 或 FP16 精度。通常占总专家数的 15-25%,但处理 70-80% 的 token。
- 温专家(Warm Experts):偶尔被路由到的专家,可以量化到 INT8 存储在 GPU 显存中,或在显存紧张时换出到 CPU 内存。处理 15-25% 的 token。
- 冷专家(Cold Experts):极少被路由到的专家,存储在 CPU 内存或 NVMe SSD 上,按需加载。处理 5-10% 的 token。
工程实现的关键细节:
热度统计。不能依赖训练时的路由分布——推理时的 token 分布可能与训练时不同(尤其是微调后)。需要在推理服务中持续统计每个专家的路由频率,使用指数加权移动平均(EWMA)更新热度。统计窗口建议 1000-5000 个 batch。
预取策略。当温专家被路由到的概率上升时,提前将其加载到 GPU 显存。预取触发条件:该专家在最近 N 个 batch 中被路由到的次数超过阈值。预取与推理计算重叠执行,避免加载延迟影响 SLA。
换出策略。当 GPU 显存不足时,优先换出最近最少使用(LRU)的温专家。冷专家不参与换出决策——它们本来就不在 GPU 上。换出操作与推理计算重叠,但需要确保换出完成后该专家的显存空间被立即释放。
SSD 加载的延迟预算。NVMe SSD 的顺序读取速度约 3-7GB/s。一个典型专家(如 DeepSeek-V3 的 256 专家中每个约 2.6B 参数)在 INT4 下约 1.3GB,从 SSD 加载到 GPU 需要约 200-400ms。这意味着冷专家的加载延迟是不可忽略的——只有在该专家被路由到后可以容忍 200ms+ 延迟时才使用 SSD 存储。
6MoE 量化:不是均匀压缩
量化是减少 MoE 模型显存占用的主要手段,但 MoE 的量化比稠密模型复杂得多——不同专家对量化误差的敏感度差异巨大。均匀地对所有权重使用同一量化精度,要么浪费显存(冷门专家不需要高精度),要么损失质量(热门专家被过度量化)。
分层量化策略:
按专家热度分层。热专家保持 BF16 或 INT8,温专家量化到 INT8 或 INT4,冷专家量化到 INT4。这种策略在 DeepSeek-V3 上实测可以将显存占用减少 40-50%,同时质量损失小于 1%(以 MMLU 和 HumanEval 为基准)。
按专家类型分层。不同类型的专家对量化的敏感度不同:
- 共享专家(Shared Expert):所有 token 都经过,对质量影响最大,必须保持 BF16 或 INT8
- 路由专家中的高频专家:保持 INT8
- 路由专家中的低频专家:可以安全量化到 INT4
- 路由器本身(Gating Network):参数量小但决策关键,保持 BF16
校准数据的选择。量化校准数据应该覆盖目标部署场景的 token 分布。如果使用通用语料校准,可能导致某些场景下频繁使用的专家被错误地量化到较低精度。建议:用目标场景的实际推理日志作为校准数据,至少 1000 个 batch。
实测数据(MoEQuant, 2025):在 DeepSeek-V3 上,使用专家平衡采样策略(确保每个专家在校准数据中被均匀覆盖),INT4 量化下的质量损失从均匀量化的 3.2 个困惑度点降低到 0.8 个。关键洞察:量化质量不取决于总参数量,而取决于最热门的 20% 专家的精度。
根据 IoT Digital Twin PLM 的技术分析 Mixture-of-Experts (MoE) LLM Architecture Explained (2026),"The key to successful MoE deployment lies in understanding that different experts have different sensitivity to quantization. A one-size-fits-all approach will either waste memory on cold experts or degrade quality on hot experts." 这验证了分层量化策略的必要性。
| 量化策略 | 显存节省 | 质量损失(MMLU) | 实施复杂度 | 推荐场景 |
|---|---|---|---|---|
全模型 BF16 | 基准 | 0 | 低 | 显存充足时 |
均匀 INT8 | 约 50% | < 0.5% | 低 | 快速验证 |
均匀 INT4 | 约 75% | 2-4% | 低 | 显存极度紧张 |
按热度分层 INT8/INT4 | 约 55-65% | < 1% | 中 | 生产推荐 |
共享专家 BF16 + 路由 INT4 | 约 60% | < 0.8% | 中 | 有共享专家的模型 |
MoEQuant 平衡采样 | 约 65% | < 1% | 高 | 质量敏感场景 |
7推理框架选型:vLLM、TensorRT-LLM、SGLang
2026 年,三大主流推理框架都已原生支持 MoE,但支持深度和优化方向不同。选型决策应该基于你的部署场景,而不是框架的 benchmark 排名。
vLLM:
- MoE 支持最成熟,从 0.5.0 版本开始原生支持
- 关键特性:连续批处理(continuous batching)、FP8 KV Cache、前缀缓存(prefix caching)、分块预填充(chunked prefill)
- MoE 特定优化:专家级别的 KV Cache 管理、基于请求模式的专家预取
- 优势:社区活跃、模型支持最广、文档完善、生产验证最多
- 适用场景:通用推理服务、多模型混合部署、需要快速跟进新模型
根据 vLLM 官方文档 vLLM 0.5.0 Release Notes,"We have added native support for Mixture of Experts models, including optimized kernels for expert routing and load balancing." 这确认了 vLLM 对 MoE 的原生支持。
- NVIDIA 官方优化,对 H100/H200 的 Tensor Core 利用最充分
- MoE 特定优化:自定义 MoE kernel(融合路由 + 专家计算)、FP8 专家计算、NVLink 感知的专家并行
- 优势:在 NVIDIA 硬件上吞吐最高(比 vLLM 高 15-30%,实测于 DeepSeek-V3)
- 劣势:模型支持范围窄于 vLLM、配置复杂度高、社区较小
- 适用场景:纯 NVIDIA 硬件、单模型大规模部署、追求极致吞吐
- 后起之秀,以 RadixAttention 和高效调度著称
- MoE 特定优化:与 vLLM 类似的连续批处理,但在调度策略上更激进
- 优势:在某些场景下延迟低于 vLLM(尤其是短请求高并发场景)
- 适用场景:低延迟要求、API 服务、短文本高并发
选型决策树:
- 如果你的硬件全是 NVIDIA 且追求极致吞吐 → TensorRT-LLM
- 如果你需要多模型支持、快速迭代、社区生态 → vLLM
- 如果你的场景是短文本高并发低延迟 → 评估 SGLang
- 如果你需要跨硬件(AMD、Intel)→ vLLM(ROCm 支持最成熟)
8推理时的负载均衡:与训练不同的挑战
训练时的负载均衡通过辅助损失解决——让路由器学会均匀分配 token 给专家。但推理时的负载均衡是一个不同的问题:路由器已经训练好了,它的行为是固定的,你不能在推理时改变路由决策。推理时的负载均衡关注的是:如何让多个 GPU 上的专家负载均匀,以最大化整体吞吐。
问题本质。假设 256 个专家分布在 8 个 GPU 上(每 GPU 32 个专家)。如果路由器的决策导致某个 GPU 上的 32 个专家被频繁路由到,而其他 GPU 上的专家很少被用到,那么:
- 热点 GPU 的计算单元满载,成为瓶颈
- 其他 GPU 的计算单元空闲,浪费资源
- 整体吞吐受限于最忙的 GPU
解决方案:
拓扑感知的专家放置。将路由亲和度高的专家放在同一个 GPU 上。具体方法:先用一小批代表性数据跑推理,统计每对专家被同一个 token 路由到的共现频率,然后用图划分算法(如 METIS)将共现频率高的专家分到同一 GPU。这可以减少 GPU 间的 All-to-All 通信量 20-40%。
动态批处理平衡。在连续批处理中,监控每个 GPU 的专家激活频率。如果某个 GPU 持续过载,调度器可以:
- 暂时减少分配到该 GPU 的新请求
- 将部分请求迁移到负载较低的 GPU(需要迁移 KV Cache)
- 调整批处理大小,让过载 GPU 的 batch 更小
专家复制。对于特别热门的专家(如共享专家),可以在多个 GPU 上维护副本。每个 GPU 本地处理路由到该专家的 token,避免跨 GPU 通信。代价是显存占用增加——需要权衡通信节省和显存成本。
路由器后处理。在不重新训练模型的前提下,对路由器的输出做后处理:如果某个 GPU 上的专家负载已经超过阈值,将部分 token 重新路由到该 GPU 上次要的专家。这会轻微影响模型质量,但在负载严重不均时可以保住吞吐。
9部署决策清单:从评估到上线
将前面的内容整合为一个可执行的部署决策清单。每个步骤都有明确的输入、输出和检查点。
阶段一:评估(1-2 天)
- 确认模型的总参数量和激活参数量
- 计算 BF16 和 INT4 下的显存需求
- 确认目标硬件配置(GPU 型号、数量、互联带宽)
- 判断单节点是否可容纳(BF16 或 INT4)
- 确认推理框架对该模型的 MoE 支持状态
阶段二:基准测试(2-3 天)
- 在目标硬件上部署,测量单请求延迟(P50/P95/P99)
- 测量不同 batch size 下的吞吐(tokens/s)
- 测量 All-to-All 通信占比(目标 < 20%)
- 测试 INT8 和 INT4 量化下的质量损失
- 确认 KV Cache 显存占用与并发数的关系
阶段三:优化(1-2 周)
- 根据热度统计配置专家分层(热/温/冷)
- 配置拓扑感知的专家放置
- 调整连续批处理参数(max_batch_size、max_num_seqs)
- 配置前缀缓存(如果请求有共同前缀)
- 测试推测解码(如果框架支持且接受率 > 60%)
阶段四:上线与监控
- 配置 SLA 监控:延迟 P99、吞吐、GPU 利用率、显存使用
- 配置专家负载监控:每个 GPU 的专家激活频率分布
- 配置告警:延迟 P99 超过阈值、GPU 利用率低于 30%、显存使用超过 90%
- 建立热度统计的持续更新机制(每天或每周重新统计专家热度)
10参考资料
本文的工程结论基于以下来源的交叉验证:
- Ertas AI, "Mixture of Experts (MoE) Architecture in 2026", April 2026 (updated August 2026). 覆盖 MoE 从 Mixtral 到 DeepSeek V4 的架构演进和生产部署影响分析。
- TensorOps, "LLM Mixture of Experts Explained — A 2026 Field Guide", May 2026. 系统覆盖 MoE 的路由策略、训练权衡和生产系统的部署 trade-offs。
- IoT Digital Twin PLM, "Mixture-of-Experts (MoE) LLM Architecture Explained (2026)", May 2026. 覆盖专家并行、负载均衡和服务 trade-offs 的工程分析。
- Swarm Signal, "Mixture of Experts Explained: The Architecture Behind Every Frontier Model", February 2026 (updated June 2026). 覆盖路由机制和稀疏激活的工程实现。
- DeepSeek-AI, "DeepSeek-V3 Technical Report", December 2024. 细粒度 MoE 架构、无辅助损失负载均衡和 DualPipe 训练优化的原始设计文档。
- DeepEP, "DeepEP: An Efficient Expert Parallelism Library for MoE Models", 2025. 专家并行通信库的性能数据和拓扑优化策略。
- MoEQuant, "Balanced Quantization for Mixture of Experts Models", 2025. 专家平衡采样策略和分层量化的实测数据。
边界说明:本文聚焦 MoE 的生产部署工程决策。MoE 的架构原理(路由机制、Top-K 选择、辅助损失、专家坍塌)已在 llm-013 中详细覆盖,本文不重复。推测解码在 MoE 上的应用见 kb-speculative-decoding-001。
🎯 相关面试题
巩固本篇知识点,备战 AI 岗位面试。
- 高级系统设计查看详解 →
如何在 Apple Silicon Mac 上运行 2.8T 参数 MoE 模型?内存/量化/推理引擎的关键挑战
考察候选人对大模型本地部署的理解,特别是在消费级硬件上运行超大参数 MoE 模型的工程挑战与解决方案。
- 高级概念查看详解 →
解释 MoE 架构中 Expert 路由策略的演进
从传统 top-k 显式路由到 Stable LatentMoE 潜空间路由的演进,解决路由不稳定、Expert 利用率不均和超长上下文下的扩展性问题。
- 高级概念查看详解 →
在 MoE 模型的大规模部署中,Expert Parallelism 面临哪些工程挑战?请从负载均衡、通信开销、故障恢复三个维度分析。
Expert Parallelism 把 MoE 专家分布到多 GPU 以突破单卡显存上限,但 Top-K 路由导致负载不均、All-to-All 通信跨节点成为瓶颈、Expert 级 checkpoint 与弹性恢复比 Dense 模型更复杂。
- 高级系统设计查看详解 →
模型蒸馏服务的核心架构是什么?如何在成本和质量间权衡?
模型蒸馏服务(Model Distillation Service)是云端蒸馏即服务,允许开发者将大模型能力蒸馏到小模型而无需自建蒸馏流水线。2026 年 Google Gemini Distillation Service 和 World Model Optimizer 是代表。核心权衡:蒸馏后推理成本降低 5-10x,但能力损失 10-30%,需要根据任务复杂度选择合适策略。
