MOE大模型的动态并行与负载均衡
完成和云计算领域相关的不少于10篇文章的研究综述,要求文章必须为 CCF A类,且发表于2025-2026年。
一共有五个方向:(1)数据中心网络 (2)分布式体系结构与存储【本文的方向】 (3)大数据分析处理 (4)机器学习人工智能 (5)边缘计算
下面的格式是老师规定的;只有“基础知识”是我加的。
Abstract#
混合专家模型通过稀疏激活机制在可控计算成本下大幅扩展模型容量,已成为大语言模型的主流架构之一。然而,MoE 特有的动态路由与专家并行模式,在分布式训练和推理中引入了严重的负载不均与通信瓶颈。本文围绕“动态并行与负载均衡”这一主题,选取了2025-2026年间十篇代表性工作,涵盖训练阶段的负载均衡策略、通信优化、推理阶段的解耦并行与内存受限加速、模型参数压缩以及边缘协同推理。通过分析各工作的背景动机、技术思路与局限,本文试图勾勒出面向 MoE 模型的分布式系统优化全景图,并探讨未来研究方向。
Introduction#
近年来,大语言模型(LLM)的参数规模持续增长,传统稠密模型的计算与内存需求已逼近硬件极限。混合专家(Mixture of Experts, MoE)架构通过将前馈网络层替换为多个专家子网络,并借助门控网络对每个输入仅激活少数专家,实现了模型容量扩展与计算成本近恒定的理想特性。从 Google 的 GShard、Switch Transformer,到 DeepSeek-V3、Mixtral 等代表性工作,MoE 已成为支撑千亿乃至万亿参数模型的关键技术。
然而,MoE 模型的分布式训练与推理面临一系列新的系统挑战。首先,门控网络动态路由导致不同专家接收的 token 数量呈现长尾分布,部分热门专家负载过重,形成尾延迟瓶颈,严重拖累整体训练吞吐。其次,专家并行要求在各层进行 All-to-All 通信以分发 token 和收集结果,通信开销可占总训练时间的 40% 以上。再次,推理阶段虽然只激活少量专家,但参数量巨大,对 GPU 显存容量和访存带宽造成巨大压力;解码阶段注意力模块的内存密集与专家模块的计算密集特性相互干扰,进一步加剧了资源利用率低下的问题。
为了应对上述挑战,学术界和工业界从模型层和系统层两个维度开展了大量研究。模型层方法通过添加负载均衡损失、设计可微门控或约束专家容量来促进均衡,但往往影响模型收敛质量。系统层方法则聚焦于动态专家复制、重定位、样本重排、通信-计算重叠以及异构资源协同等方向。本文选取了十篇发表于 2025–2026 年的高质量论文,按照“训练负载均衡与通信优化—推理系统优化—模型压缩—边缘协同”的逻辑主线,逐一剖析其问题、动机、技术方案与局限,最终总结该领域的核心洞察与未来趋势。
文章选择理由#
训练阶段的负载均衡与通信优化 是该领域的起点。Pro-Prophet[1] 和 LAER-MoE[2] 分别从专家复制和全分片专家并行的角度,试图解决动态负载不均问题;NetMoE[3] 和 MegaScale-MoE[4] 则将目光投向 All-to-All 通信本身,前者通过样本重排将跨节点通信转化为节点内通信,后者通过差异化并行策略从源头减少通信量。这四个工作共同刻画了训练系统优化的两个核心矛盾:负载不均与通信开销。
推理阶段的效率问题 因服务场景的延迟约束和成本敏感性而更加突出。MegaScale-Infer[5] 将注意力与专家模块解耦到不同 GPU 节点,各自采用最优并行策略,解决了解码阶段专家批次过小的困境;BrownoutServe[6] 面向突发流量提出“联合专家”与动态降级机制;MoE-Lightning[7] 和 KTransformers[8] 则聚焦单卡或少量卡的显存受限场景,分别通过 CPU-GPU 流水线与高级指令集优化来榨取硬件潜力。这四个工作体现了从“重计算”到“重访存、重调度”的范式转变。
模型层面的压缩 为系统优化提供了互补视角。Sub-MoE[9] 通过子空间专家合并直接减少专家数量,与前述系统方法正交且可叠加使用。
边缘协同推理 是 MoE 思想在设备级协作上的泛化。MoE²[10] 将每个边缘 LLM 视为一个专家,通过门控网络在线选择最合适的模型子集,在延迟与能耗约束下提升推理质量,拓展了 MoE 的边界。
以下各节将按照上述逻辑顺序,对每篇文章进行详细解读。
基础知识#
LLM 推理的两个阶段#
大语言模型的推理过程与传统的单次前向传播不同,其生成方式为自回归模式:模型每次只生成一个 token,并将新生成的 token 与原始输入拼接,作为下一轮推理的输入,重复此过程直到遇到终止符。根据计算特征和资源需求的不同,LLM 推理可以划分为两个阶段:
- 预填阶段(prefill):模型首次接收用户输入的 prompt,计算所有输入 token 之间的注意力关系,生成第一个输出 token。在此阶段,所有 token 的键值对(Key-Value cache, KV cache)会被一次性计算并缓存,供后续解码阶段使用。预填阶段的计算特点是:输入 token 数量大、计算密度高、可并行度高,属于典型的计算密集型(compute-intensive)任务。门控网络在此阶段会激活大量甚至全部专家,对 GPU 的计算吞吐能力要求较高。
- 解码阶段(decoding):从第二个 token 开始,模型每次只处理最新生成的一个 token,利用已缓存的 KV cache 计算其与历史 token 的注意力,然后经过门控网络和专家模块生成下一个 token。解码阶段的计算特点是:每次只处理一个 token、需要频繁访问 KV cache、专家模块仅激活小部分专家,属于典型的内存密集型(memory-intensive)任务。由于每个 token 的解码延迟直接决定了用户的感知响应时间,解码阶段的优化主要关注降低访存延迟和提高内存带宽利用率。
通信原语#
在分布式训练与推理中,不同设备(GPU/CPU)之间需要交换梯度、激活值、专家输入输出等数据。这些通信操作被抽象为若干标准原语,作为构建并行策略的基础构件。本节简要介绍后续会频繁出现的几种通信原语,理解它们的语义与开销特征对于分析 MoE 系统中的通信瓶颈至关重要。
- Broadcast:一对多,发送方将自己的数据发给所有其他设备,最终每个设备都有完整数据。
- Scatter:一对多,发送方将自己的数据切分为多份,分别发给不同设备,自己只保留一份。相当于一列变一行。
- Gather:多对一,所有设备将自己的数据发送给一个设备,该设备拼接得到完整数据。收集其他设备的碎片数据,反向Scatter。相当于一行变一列。
- All-Gather:多对多,每个设备都执行一次 Gather,相当于先 Gather 后 Broadcast。
- Reduce:多对一,收集各设备数据并进行规约操作(如求和),结果存放在一个设备上。
- Reduce-Scatter:多对多,先按块独立 Reduce,再将结果 Scatter 到各设备。
- All-Reduce:多对多,效果相当于 Reduce 后 Broadcast,常用 Ring 或 Tree 算法实现。比如数据并行中,每个设备都要收集其他设备的梯度、求和得到最终梯度用于更新。
- All-to-All:多对多,所有设备同时进行 Scatter 和收集,相当于数据的转置操作。比如专家并行中不同的 token 需要发送到路由到的专家所在的设备中。比 All-Reduce 更慢。
并行计算范式#
- 数据并行(Data Parallelism, DP):有多个 GPU ,每个 GPU 上有完整的模型,将输入沿着 batch 维度切分,每个 GPU 处理一部分输入,计算完后通过 All-reduce 同步梯度。
- Zero Redundancy Optimizer:以通信换显存,是显存不够(一张卡放不下整个模型时)的数据并行。此时每个 GPU 只存模型的一部分参数(包括激活值/优化器参数),每个设备前向传播时,先 All-Gather 拼出当前层的完整参数,算完就释放;反向传播时,先 All-Gather 拼出完整参数计算梯度,再 Reduce-Scatter 将梯度切分发回原设备进行聚合。峰值显存开销只有:拼出来的某一层的运行开销+自己的参数切片+激活值(原始的DP是:某一层的运行开销+整个模型+激活值)。计算图在CPU上,负责记录和调度。
该技术在 Pytorch 中的实现为 Fully Sharded Data Parallel(FSDP),还用了两个关键技术:- 参数预取(parameter pre-fetching)。为了加速,加载某一个层是可以提前进行的。比如在计算层 时,就可以提前加载层 的参数了,通信和计算并行。
- 梯度通信优化。反向传播有从后向前的计算顺序,梯度的生成是流式的,每个设备在计算完自己负责的参数的梯度后,就立即 Reduce-Scatter 发送出去,不用等所有参数都计算完了再通信。
- Zero Redundancy Optimizer:以通信换显存,是显存不够(一张卡放不下整个模型时)的数据并行。此时每个 GPU 只存模型的一部分参数(包括激活值/优化器参数),每个设备前向传播时,先 All-Gather 拼出当前层的完整参数,算完就释放;反向传播时,先 All-Gather 拼出完整参数计算梯度,再 Reduce-Scatter 将梯度切分发回原设备进行聚合。峰值显存开销只有:拼出来的某一层的运行开销+自己的参数切片+激活值(原始的DP是:某一层的运行开销+整个模型+激活值)。计算图在CPU上,负责记录和调度。
- 张量并行(Tensor Parallelism, TP):用多个 GPU 计算一个算子,比如将矩阵乘法拆成多个部分给不同的 GPU 并行算,算完合并。
- 流水线并行(Pipeline Parallelism, PP):每个 GPU 存放模型的一部分,输入沿着 batch 维度切分成多个微批次,第一批输入在第一层处理完后传给第二层,第一层接着处理第二批输入,以此类推。这样每个 GPU 都在同时处理不同批次的不同层,实现计算和通信的重叠。
- 专家并行(Expert Parallelism, EP):针对模型的 MoE 层,每个 GPU 上存放一部分专家,输入经过门控网络路由后,需要通过 All-to-All 通信将 token 发送到专家所在的 GPU 进行计算,计算完再通过 All-to-All 通信将结果返回。
- 上下文并行(Context Parallelism, CP):CP 是 序列并行(Sequence Parallelism, SP)的一种。对于 Attention 层中形如 [B, L, D] 的输入,沿着序列长度 L 维度切分,每个 GPU 处理一段连续序列片段,需要通过 All-Gather(Ring 实现)收集所有 GPU 上的 Key 和 Value,再用自己的 Query 计算局部注意力矩阵,最后拼接所有GPU的结果得到完整的注意力矩阵。反向传播时需再次 All-Gather 计算 Query 梯度,并通过 All-Reduce 同步梯度。
前人做法#
传统专家并行中,每个 GPU 的专家分配是固定的。对于负载不均问题,有以下经典解法:
- 训练时就要求负载均衡。这一般通过增加负载均衡损失实现[11][12],但是会减慢收敛速度、影响模型性能。
- 专家复制(expert replication)[13][14]:将热门专家多复制一些。但是增加了梯度同步开销。
- 专家重定位(expert relocation)[15]:根据历史负载情况动态调整专家分布。但是训练时移动专家时涉及的不仅仅是参数,还有优化器状态,一共约为参数量的6倍。这对通信容量的要求更高。
运行时调整方法的理论依据是负载的时间局部性,即相邻的训练步骤中,负载分布是相似、缓变的,因此可以根据历史负载情况来预测未来的负载情况。
各篇文章综述#
Pro-Prophet[1]:经典的基于时间局部性的专家复制方法#
本文是一篇典型的利用时间局部性、对专家复制进行改进的文章。
背景问题#
在专家并行中,门控网络根据输入动态路由,导致某些热门专家接收大量输入、对应设备负载过重,而冷门专家几乎空闲。这种不均衡模式在训练过程中动态变化,难以静态优化,严重降低设备利用率和训练吞吐量。
研究动机#
动态复制热门专家来缓解不均存在两个缺陷:一是引入了额外的梯度同步,增加了通信开销;二是由于数据依赖,通信与计算无法充分重叠。作者观察到输入分布具有时间局部性(相邻训练步的负载分布相似),因此可以用上一轮的分布预测本轮,提前制定专家放置策略。和 FasterMoE[13] 相比,本文的创新点在于:采用“组播”而非“广播”减少通信量;利用局部性设计了高效的贪心搜索算法;通过块级拆分调度实现通信与计算的充分重叠。
总体解决思路与实现方式#
Pro-Prophet 分为规划器和调度器两部分。规划器提出“轻量级专家放置”:每个专家只复制到必要的设备子集上,而非所有设备。为了在巨大搜索空间中找到高效策略,规划器基于时间局部性设计了一个贪心搜索算法:每次迭代都将最忙的专家复制到最需要它的设备上,并用性能模型评估执行时间。
调度器则负责将通信操作与计算操作充分重叠:同一轮迭代中,第 层的前向计算与第 层的专家参数复制重叠;反向传播时,梯度聚合与后续层的计算重叠。此外,调度器将通信原语拆分为子操作,以子算子粒度与计算交错执行。
思考#
Pro-Prophet 的核心贡献在于系统化地利用了负载的时间局部性,并通过组播和块级调度显著降低了复制开销。但该方法本质上仍是热门专家复制,且“时间局限性”早已被利用,创新有限;其建模假设过于理想(同构设备、无限显存、无专家切换开销),实际生产环境中的价值可能打折扣。
LAER-MoE[2]:基于全分片专家并行的负载自适应重布局#
这篇文章针对训练时的负载不均问题,提出了一种非常创新的系统性解法:用 FSDB 的思想,动态重构专家。
背景问题#
现有专家复制和专家重定位虽然能缓解负载不均,但都会引入额外的通信开销。因此这些方法只能低频调整,难以跟上路由分布的快速变化。
研究动机#
作者受 FSDP 启发,提出了一个新的并行范式——全分片专家并行(Fully Sharded Expert Parallelism, FSEP)。核心洞察是:既然每个设备已经存储了所有专家的分片,那么在每一轮训练中,设备可以通过 All-to-All 通信按需重建出当前需要的专家完整参数。这一设计将专家重布局与 FSDP 的参数预取和梯度 Rreduce-Scatter 机制融为一体,使得重布局的通信开销可以被计算完全掩盖,从而实现每轮迭代都能灵活调整专家布局。从原理上,FSEP 统一了专家复制和专家重定位(都是重建,只是重建的份数和位置不同)。
总体解决思路与实现方式#
FSEP 在模型初始化时将每个专家的参数平铺并切分为 份( 为设备数),每个设备保存所有专家的一份分片。前向传播时,设备通过 All-to-All 通信获取所需专家的完整参数;反向传播时,再将梯度切分并发回原设备进行聚合。由于 MoE 层中每个设备只需要重建部分专家,通信量与传统 FSDP+EP 相比仅增加约 10%,且通过参数预取和梯度延迟通信等手段可以完美重叠。
在此基础上,LAER-MoE 设计了一个负载均衡规划器。它首先根据专家历史负载,使用优先级队列确定每个专家需要重建的份数(一个专家需要被重建多少份?);然后在上述约束下,通过一个拓扑感知的贪心算法,将每个副本放置到最合适的设备上,同时尽量保证同一专家在不同节点上的副本数量均衡(每个设备上重建哪些专家?)。
思考#
LAER-MoE 是笔者最为欣赏的工作之一。方法很创新,本质是利用MoE架构的稀疏性让FSDP更加高效,将FSDP带来的动态性发挥得淋漓尽致,从原理上统一了“专家复制”和“专家重定位”两种方法(都是重建,只不过是重建的数目和位置)。但文章只专注于训练阶段,不知道推理阶段是否也适用。
NetMoE[3]:移动样本,而不是移动专家#
背景问题#
在专家并行中,每次路由后都需要 All-to-All 通信来交换 token。随着模型规模增大,All-to-All 通信时间可占到总训练时间的 80%,成为最主要的效率瓶颈。
研究动机#
已有方法要么动态调整专家放置(参数大、通信重),要么修改模型定义(影响收敛且需大量调参),都是对专家的操作。这些方法忽略了几个关键观察:
- 同一训练样本中的不同 token 在专家路由上往往表现出相似的偏好,即存在数据局部性。
- 节点内通信(如 NVLink)远快于跨节点通信(如 InfiniBand)。节点指的是多个 GPU 共享同一主机的情况。
- 样本数据远比专家参数轻量。
由此,本文提出从“样本放置”而非“专家放置”的角度优化通信:通过调整计算后样本在各个 GPU 上的位置(而不是返回原设备),将跨节点的慢速通信转化为节点内的快速通信,且这种调整仅仅改变 All-to-All Gather 的目标位置,不引入额外开销。
总体解决思路与实现方式#
本文的核心思路是:在每个 MoE 层,根据当前路由结果,重新决定 Gather 时每个样本应该放在哪个 GPU 上,使得后续通信中更多数据在高速通道(节点内)上传输。
优化目标同时考虑本层和下一层的路由通信:考虑本层是为了降低 Gather 的开销,考虑下层是为了降低 Scatter 的开销。为得到下一层的路由情况,文章提出了一个近似:下一层的 Attention 几乎不改变 token 的路由归属,因此可以直接使用下一层的门控网络预测路由结果。
算法将通信成本建模为节点内和节点间两部分,采用两阶段优化:先在节点级别分配样本(最小化跨节点通信),再在节点内将样本分配到具体 GPU(最小化节点内通信)。每个阶段均转化为加权二分图匹配问题,用 Kuhn-Munkres 算法求解。求解过程通过 CPU 后台线程运行,与 All-to-All Scatter 和专家计算完全重叠,实现零额外时间开销。
一个关键细节是残差连接的处理。传统做法是在 All-to-All Gather 之后将输入与专家输出相加。但 NetMoE 改变了样本位置,若仍按原顺序执行,残差加法的两个输入会位于不同设备上。为此,文中将残差加法内联到专家计算中,在 Gather 之前完成加法,使得移动后的数据已经包含了残差项。
思考#
总体而言,这是一个极具启发性的工作:将优化矛头从“专家”转向“样本”,并且与其他方法正交,堪称即插即用。它巧妙地利用了样本内 token 的路由相似性,将通信优化问题转化为可高效求解的匹配问题。
然而,其有效性依赖于专家分布的局部性——如果同一样本的 token 分散到多个节点,优化空间会缩小;预测下一层路由时跳过 Attention 虽然实验有效,但理论上缺乏严格保证。
MegaScale-MoE[4]:生产环境下的通信高效 MoE 训练#
背景问题#
在超大规模 MoE 训练中,通信可占前向传播总时间的 43.6%,占整个训练过程的 32%。Megatron-LM[16] 对 Attention 和 FFN 统一采用张量并行,导致两个问题:TP 在每个 MoE 层都引入 All-Gather 和 Reduce-Scatter,通信量随并行度增加而恒定,最终超过计算时间;TP 切分专家 FFN 的 hidden 维度,大幅降低 GEMM 效率。
研究动机#
Attention 和 FFN 在 MoE 中的计算模式和通信模式完全不同,不应使用同一种并行策略。本文提出对 Attention 采用序列并行,对 Experts 采用专家并行,并在算子间与算子内实现通信-计算的完全重叠。
总体解决思路与实现方式#
MegaScale-MoE 的核心技术包括:
- 差异化并行策略:Attention 改用 SP(按序列维度切分),通信量降至 TP 的约四分之一;Experts 改用 EP,保留完整专家以避免 GEMM 效率损失,并根据 top-k 大小自适应切换 All-to-All 与 all-gather+reduce-scatter 模式。
- 算子间重叠:将 MoE 层包装为统一宏模块,手动调度通信与独立计算(如激活重计算)在异步 CUDA stream 上并发执行,选择性保留重算代价高的激活值,减少约 50% 激活内存。
- 算子内重叠:针对有直接依赖的通信与计算(如 All-to-All 与 GEMM),将算子拆解为 tile 级任务,用 device-side barrier 实现细粒度同步。对 MoE 的 GroupedGEMM,按专家和源 rank 排序 token,使每个计算 tile 仅依赖少数通信源,实现 tile 级交错。
- 通信压缩:DP 梯度同步时,本地用 FP32 累加,通信时 cast 到 BF16 做 All-to-All,收齐后再用 FP32 求和,通信量减半。FP8 训练时对前向通信做 per-token 量化,反向做 per-channel 量化。
思考#
MegaScale-MoE 代表了工业界大规模训练系统的最优实践。它与 MegaScale-Infer[5] 形成有趣对照:训练选择“逻辑解耦”(同一 GPU 内不同并行策略),推理选择“物理解耦”(分离到不同 GPU)。这种模块感知的并行策略设计,为未来更大规模的 MoE 训练提供了可复用的方法论。不过,其 tile 级重叠目前多为手工调度,如何自动化仍是开放问题。
MegaScale-Infer[5]:解耦专家并行的 MoE 推理服务#
背景问题#
在实际推理服务中,MoE 的解码阶段存在严重的 GPU 利用率低下问题。原因在于:每个令牌仅被路由到少数专家,导致每个专家处理的批次大小远小于计算密集所需的最小值,使专家模块从计算密集型变为内存密集型。同时,GPU 内存容量和延迟约束限制了全局批次的进一步增大。
研究动机#
原有方法将注意力模块与专家模块耦合部署在同一 GPU 上,无法独立优化二者截然不同的计算特性——注意力模块在解码阶段是内存带宽密集,而专家模块本应是计算密集却因稀疏性被拖累。两者最佳运行条件完全不同,为什么必须放在一起?本文提出解耦架构:将注意力模块与专家模块分离到独立的 GPU 节点上,各自选用最适合的并行策略和硬件。
总体解决思路与实现方式#
系统的核心是解耦专家并行(Disaggregated Expert Parallelism)。Attention 池可配置高带宽 GPU 并采用张量并行,专家池部署大显存、高带宽 GPU 并采用更大规模的专家并行。但是这样的架构引入了严重的通信开销:整个批次必须频繁地在 Attention 池与专家池之间“穿梭”,且原本卡内调用变为了跨节点的通信,需要解决现有通信模式的问题。为此提出三项关键技术:
- 乒乓流水线并行:将请求批次拆分为多个微批次,在注意力节点和专家节点之间交替处理,使计算与通信重叠。
- 性能模型辅助部署优化:通过线性模型估算 Attention 与专家模块的计算时间及通信时间,平衡二者使流水线效率最大化,并在延迟约束下搜索最优批次大小、微批次数量和并行配置。
- 高性能 M2N 通信库:针对注意力节点到专家节点的多对多通信,摒弃 NCCL 中的 GPU–CPU 拷贝、组操作开销和 GPU 同步,采用 RDMA 写、轮询完成队列、高优先级 ACK 队列等优化。
思考#
MegaScale-Infer 的成功标志着分布式推理系统正从“通用并行”向“架构感知并行”演进。至于流水线的设计,是多设备串行时的常见优化。
BrownoutServe[6]:突发负载下的 MoE 推理 SLO 保障#
针对瞬时高负载的情况优化了 MoE 的推理,适用于中小规模集群的突发流量场景。
背景问题#
MoE 推理面临两个挑战:预填阶段激活几乎所有专家,计算压力大;解码阶段冷门专家处理极少的 token,导致 GPU 利用率低。尤其在突发流量时,现有静态优化(张量并行、专家并行、连续批处理)无法快速响应,水平扩展(加实例)响应太慢且且短时突发后资源闲置浪费。所以需要一个动态的、快速响应的机制。
研究动机#
文章要解决的点很独特:频繁的、细粒度的专家访问(特别是冷专家)带来了巨大的计算调度开销和内存带宽压力,尤其是在处理突发流量时,这成为了推理延迟的主要瓶颈;此外冷门专家处理极少的 token,导致 GPU 利用率低下。
专家访问的开销:每次激活一个专家,GPU 都需要从显存(HBM)中加载该专家的权重参数。这个过程非常耗时,被称为“内存墙”。如果一个 GPU 要运行多个专家,由于总带宽一定,会导致每个专家的参数搬得慢,导致了严重的延时。
本文提出将多个冷门专家通过知识蒸馏融合为一个“联合专家”(united expert),从而减少专家加载次数、增加每次调用时的数据量,进而提升 GPU 利用率(其实就是参数效率)。同时引入电力系统中的“brownout”(降级)概念,在高负载时动态决定哪些 token 走原始专家、哪些走联合专家,以少量精度损失换取 SLO 保障。
总体解决思路与实现方式#
BrownoutServe 包含联合专家模型和动态降级机制,本质为降低精度换取效率。
联合专家的训练是对已有专家的蒸馏:将每层中的多个原始专家分组,根据实际路由情况产生数据,用 MSE 损失训练对应的融合专家。
降级策略分为三种:zero-brownout(全用原始专家)、full-brownout(丢弃部分 token)、partial-brownout(将丢弃的 token 路由到联合专家)。系统设有一个 SLO 感知的延迟控制算法(SALC),实时监控 P99 延迟,当延迟超过 SLO 时降低阈值(让更多 token 走联合专家),当延迟过低时提高阈值以恢复精度。阈值和分组大小可动态调整。
思考#
这个机制无需重启模型,能够快速响应负载变化;代价是高负载时模型的能力会下降。但是文中有很多可以优化的地方:
- 文中说的是均匀分组,但实际上应该考虑专家使用频次;
- 虽然考虑了路由的影响(根据实际路由情况产生数据),但没有考虑路由计算出的权重——损失一视同仁。我认为应该用路由的权重给损失加权:如果某个token同时激活同一组的多个专家,肯定要优先逼近权值大的专家的输出,而不是平均。
- 蒸馏后的专家完全丢失了原专家的身份(即没有增加一个“原来是哪个专家”的输入)。完全可以把身份信息融入到输入,稍微增加融合后专家的参数量,实现更好的逼近。
考虑到这篇文章是一个硕士生拖了两个IEEE fellow,靠他一个人做成这样也可以了。
MoE-Lightning[7]:显存受限 GPU 上的高吞吐 MoE 推理#
背景问题#
单张消费级 GPU 显存无法容纳完整 MoE 模型,必须采用 CPU 卸载技术。但 CPU–GPU 之间的通信开销成为新瓶颈。现有卸载系统(如 FlexGen)存在资源利用率低和策略次优的问题:
- 资源利用率低:GPU 计算、CPU 计算和数据传输之间缺乏有效的重叠,导致 GPU 和 CPU 经常处于空闲状态,无法充分利用资源。
- I/O 利用率不足:权重传输开销大,需要足够大的 batch size 来摊销。但增大 batch size 会增加 KV cache 的 CPU 内存占用,而 CPU 内存有限,形成 trade-off。
- 策略次优:现有系统的策略搜索未考虑瓶颈资源会随 workload 变化而变化(如从 GPU 计算 bound 变为 CPU-GPU 带宽 bound),导致选择的 batch size 和 micro-batch size 并非最优。
研究动机#
本文提出通过精细的流水线调度和基于分层 Roofline 模型的性能分析,最大化 CPU 和 GPU 的资源利用率,同时找到最优的 batch size 和 micro-batch size。
总体解决思路与实现方式#
文章针对性给出了两个解决方案:
- 提出了 HBM 来分析瓶颈。针对给定模型、硬件和 workload,HRM 能判断 attention 和 MoE FFN 应该放在 CPU 还是 GPU 执行,并找出最优的 batch size () 和 micro-batch size ()。
- 用 CGOPIPE 调度执行:按照 HRM 给出的策略,CGOPIPE 精细调度 GPU 计算、CPU 计算和四种数据传输(QKV 下传、隐藏状态上传、权重上传、KV cache 上传),实现三路重叠。
HRM#
经典的 Roofline Model 用于计算当前模型在某机器上的性能上限,包含以下概念:
- 算力 : 计算平台的性能上限,指每秒最多完成的浮点运算数,单位为
FLOP/s. - 带宽 : 计算平台的带宽上限,指每秒最多传输的数据量,单位为
B/s. - 计算强度 : 模型的计算强度,指每个输入样本需要的浮点运算数与需要传输的数据量之比,单位为
FLOP/s, 反映了内存使用效率。由具体运算类型决定。 - 性能上限 : 模型在该计算平台上的性能上限。
- 模型的理论性能 : 在给定环境下,模型的运算速度,单位为
FLOP/s.
最终的图以 为横轴、 为纵轴,分成两个区域:前一半区域以斜率为 的线为上界,此时是 Memory Bound:访存带宽限制了性能;后一半区域以水平线 为上界,此时是Compute Bound:CPU 计算速度限制了性能。模型的性能受限于计算还是带宽取决于它的计算强度 与 的关系。
对于给定的模型,其计算强度 受 Batch size 等的影响(同一套权重用得越多 越大),根据 Roofline Model 的图,可以知道在不同的 Batch size 下,模型是受计算限制还是带宽限制,从而指导优化策略。在转折点处,没有资源闲置,是最理想的位置。
经典 Roofline 比较简单,忽略了很多其他的因素,往往只能得到理论上界。这篇文章基于 Roofline Model 提出了 Hierarchical Roofline Model (HRM) 用于评估 MoE 模型的性能,考虑了多级存储(GPU HBM、CPU DRAM)和不同处理器(GPU、CPU)的峰值性能与带宽,从而判断给定模型和硬件下,Attention 和 MoE FFN 应该放在 CPU 还是 GPU 执行,并搜索出最优的配置:
- : batch size.
- : micro-batch size.
- : 是否在GPU上计算attention(实验表明 CPU 注意力比 KV cache 从 CPU 传输到 GPU 再计算要快 3–4 倍)。
- : 是否在GPU上计算 MoE FFN.
- : 权重静态驻留GPU的比例(跨micro-batch)。
- : KV cache 静态驻留GPU的比例。
CGOPIPE#
CGOPIPE 是一种 CPU-GPU-I/O 流水线调度策略,它将每层的计算拆分为多个微批次,并采用权重分页技术,使得 GPU 计算(后注意力与 MoE FFN)、CPU 计算(注意力 softmax)以及四种数据传输(QKV 下传、隐藏状态上传、权重上传、KV cache 上传)能够三路重叠。
思考#
HRM 的提出重新定义了“最优”:最优策略往往让所有资源处于同等压力下的“匹配状态”,而不是单点极致。
KTransformers[8]:释放 CPU/GPU 混合推理的全部潜力#
这篇文章解决的是在资源受限的边缘设备上(单张消费级 GPU 和 CPU),高效推理超大规模MoE模型的问题。
背景问题#
在本地设备上推理超大规模 MoE 模型(如 DeepSeek-V3 671B)时,即使采用专家卸载到 CPU 的混合方案(将 routed experts 放在 CPU 执行,shared experts 和 attention 放在 GPU 执行),CPU 端仍面临严峻的性能瓶颈。
- CPU 上的专家计算效率远未饱和。现有推理框架(如 Fiddler、llama.cpp)在 CPU 上执行矩阵运算时主要依赖 AVX-512 指令集,未能充分利用现代 CPU 内置的高级矩阵扩展(如 Intel AMX)。微基准测试显示,即使 PyTorch 通过 oneDNN 库调用了 AMX,其 MoE 内核吞吐也仅达到理论峰值的 7% 左右,性能损失主要来自内存布局不匹配和缓存效率低下。
- CPU 与 GPU 之间的同步和启动开销过大。解码阶段混合推理中 CPU 操作会打断 GPU 计算的连续性,每次 GPU 内核启动延迟累积后占 GPU 执行时间的 20% 以上。
- 传统 Transformer 的执行顺序强制注意力模块等待当前层所有专家计算完成后才能进入下一层,导致 CPU 与 GPU 交替空闲。在 DeepSeek-V3 的单层解码中,CPU 利用率仅为 74%,GPU 利用率更是低至 28%,硬件资源严重浪费。
研究动机#
针对上述瓶颈,作者从三个关键观察出发,识别出突破性能上限的机会。
第一,AMX 与 AVX-512 的适用场景存在显著差异。AMX 在大规模矩阵乘法(如预填阶段,每个专家处理数十甚至上百个 token)中优势明显,但在小规模矩阵(如解码阶段,每个专家仅处理 1–4 个 token)中,因其固定 tile 粒度带来的开销反而可能超过收益。这意味着可以根据每层的算术强度(即每个专家处理的 token 数量)动态选择最优指令集。
第二,解码阶段的计算模式高度固定。每层执行的算子序列、张量形状和依赖关系几乎不变,具备被整体优化的潜力。虽然 CPU 端的专家计算会打断 CUDA Graph,但若将整个解码阶段中所有 CPU 端操作(包括专家计算)封装为回调函数,则可以将所有 GPU 内核统一捕获到单个 Graph 中,从而彻底消除内核启动开销。
第三,Transformer 的残差连接具有天然的容错性。残差结构使得某一层的输出并非要求所有专家的贡献都精确及时——部分专家的输出可以推迟到后续层再累加,且对最终精度影响很小。这一特性为重新排布计算顺序创造了条件:将部分“延迟专家”的计算与下一层的注意力计算并发执行,有望将 CPU 和 GPU 利用率同时推高。
总体解决思路与实现方式#
KTransformers 从内核优化、调度优化和计算重排三个层面展开。
内核优化:AMX/AVX-512 自适应切换#
作者首先设计了 AMX 专用的内存布局:专家权重矩阵在模型加载时即按 AMX tile 寄存器的大小(16×64 字节)进行分块和 64 字节对齐,消除推理时的转置和重排开销。基于此布局,实现了缓存友好的 AMX 内核:专家权重按层切分后适配 L2 缓存大小,输入激活常驻 L3 缓存,tile 级计算直接在寄存器中完成,最大化数据复用。同时,实现了一个轻量级 AVX-512 内核,与 AMX 共享相同的内存布局。运行时根据每个专家处理的 token 数量决定使用哪种内核。
调度优化:单 CUDA Graph 封装整个解码阶段#
作者将解码阶段中所有 GPU 操作(包括 attention 的 QKV 投影、softmax、输出投影,以及 shared expert 的前向)与 CPU 端 routed expert 计算之间的交互点用 cudaLaunchHostFunc 封装。该函数允许 CUDA 运行时在 GPU 流中异步调用 CPU 回调,使得整个解码阶段的所有 GPU 内核可以被一次性捕获到单个 CUDA Graph 中,而 CPU 专家计算作为回调在流中执行,既不打断图结构,又实现了 CPU 与 GPU 的异步并发。
计算重排:专家延迟策略#
在每个 MoE 层中,不再等待所有 routed experts 完成,而是只立即计算门控分数最高的前 5 个“即时专家”,将其输出累加到本层结果中。剩余 3 个“延迟专家”的计算被推迟,与下一层的注意力模块并发执行,其输出通过残差连接累加到下一层的输出中。该策略将 CPU 利用率从 74% 提升至接近 100%,GPU 利用率从 28% 提升至 37%,单层执行时间减少 26%。实验表明,在 DeepSeek-V3 上延迟 6 个专家时,HumanEval、GSM8K 等下游任务的平均精度下降不超过 0.5%。
思考#
KTransformers 的核心价值在于系统化地挖掘了 CPU 侧的计算潜力,并通过专家延迟策略打破了 Transformer 固有的顺序执行约束。
专家延迟策略尤其值得关注。它巧妙地利用了残差网络对延迟累加的不敏感性,将部分计算从关键路径移出,实现了原本相互依赖的模块之间的并行。这一思路不仅适用于 MoE,也可能推广到其他具有残差结构的稀疏模型。当然,该策略的配置(每层延迟几个专家、选择哪些专家作为延迟对象)目前仍依赖手工调参,需要在速度和性能上权衡;且预填阶段无法使用,因为该阶段各专家的 token 负载较为均衡,延迟会导致内存访问量翻倍。
Sub-MoE[9]:子空间专家合并的模型压缩方法#
从根源上加速:减少MoE的参数量。
背景问题#
MoE 模型参数量巨大,导致显存占用高、推理延迟大。一种方法是减少专家的数量。传统专家剪枝会丢弃知识,需要昂贵微调;专家合并(如加权平均)因 MoE 专家之间相似度极低(0.1–0.3)而产生参数冲突,破坏专有能力。此处的相似度是对输出的度量,而不是对参数的度量。
研究动机#
本文致力于探索如何在减少专家数量的同时保持模型性能。核心洞察是:专家之间不能直接合并,是因为它们的有效表示方向不一致。若能找到一个共同的子空间,让所有专家的输出表达用同一套“语言”,那么在这个对齐后的子空间中合并专家(加权平均)就不会产生冲突。
总体解决思路与实现方式#
Sub-MoE 分为两个阶段:
一、自适应专家聚类:基于专家输出向量的余弦相似度做 K-means 聚类,找出功能相似的专家群体。这一步是为了防止下一步合并时语义差异过大。支持跨层自适应分配,根据全局压缩比为每层自动分配不同聚类数。
二、子空间专家合并:将组内专家的权重矩阵拼接后 () 做 SVD,得到共享的 矩阵(共同输出空间基)和各专家的 矩阵(输入投影,如何提取特征)。由于 是共享的,专家之间的冲突被消除。然后按激活频率加权平均 V 得到 ,最后重构为 。
使用 SwiGLU 的专家有三个参数矩阵,本文每一类单独处理。扩展版本 Sub-MoE† 进一步截断奇异值实现专家内部压缩,但效果较差。
思考#
跨层自适应分配的具体算法缺失,难以复现;Intra-Expert 压缩效果差且用的是 SVD 截断的老方法;分布偏移问题未讨论;同一个专家的三类矩阵单独处理,没有理论保证(可能之间强耦合,拆分效果反而不好)。这类训练后压缩的方法应该用在 BrownoutServe 这种高负载场景,即仅仅作为暂时的降级手段。
MoE²[10]:面向边缘大语言模型的协同推理#
解决异构边缘大语言模型协同推理问题。注意此处 MoE 指的是 Mixture-of-Edge-Experts,而不是 Mixture-of-Experts,是模型之间的协同,而不是模型内部专家之间的协同。
背景问题#
边缘设备资源受限,但希望部署 LLM 以获得低延迟、高隐私的优势。不同边缘设备上有不同规模、不同能力的 LLM,如何让它们协同工作,在满足延迟和能耗约束的前提下尽可能提高推理质量?
研究动机#
现有方法要么只用单个模型(能力有限),要么简单集成(忽略资源约束),要么是模型内部的 MoE(不适用于边缘的独立模型)。本文首次将 MoE 的思想提升到边缘设备间协作的层面,将每个边缘 LLM 视为一个专家,通过门控网络动态选择最适合当前 prompt 的模型子集。同时考虑了“任务-专家”的匹配质量和系统的延迟/能耗约束,实现了一种可部署在真实异构边缘环境中的协同推理框架。
总体解决思路与实现方式#
核心思想是两阶段决策:离线选池 + 在线路由。基本流程为:
- 进行 Coarse-Grained Selection: 根据门控参数,和系统预设的长期约束(如总能耗、延迟上限),通过离散单调优化算法(SMO)找出最优的专家子集 S。这一步离线执行,更新频率很低。
- 收到用户的 prompt,先用某 embedding 模型得到特征向量,然后用轻量级门控网络(MLP)算出每个专家的门控值。
- 进行 Fine-Grained Routing: 在子集中进行top-k选择并归一化,得到最终要用的专家和专家的权重。为了适应动态环境和负载均衡,细粒度路由还支持实时跳过过载专家或网络质量差的专家。
- 先每个专家独立进行 prefill。解码阶段先根据门控加权得到最终的分布,然后采样,每个专家再根据采样结果进行下一步。
最大的难点在第一步:如何在不知道输入的情况下,提前选好一个满足约束的专家子集。做法很粗暴:需要一个数据集提供 prompt 分布情况的参考,再在约束范围内找到让分布损失(目标 token 序列的最大似然)最小的专家子集。该方法时间复杂度过大,作者做了一些优化,提出的一些定理就是用于剪枝的。另外,论文提出基于聚类的领域专家构建方法:用预训练模型将 prompt 编码为 embedding,通过 K-means 聚类后对每个簇微调 LLM,从而获得领域专属的边缘专家。
思考#
主要难点是资源的约束下如何找到最好的专家子集。但是即使经过优化,子集选择算法实在过于缓慢(所以作者说这是长期使用的专家子集,不能频繁调整)。
子集选择算法依赖参考数据集,但如果参考分布和实际分布不一致,会影响选择效果。文章没有提及这个数据集的规模,也没提到这个数据集的更新。
当前门控权值用于后续所有 token 的生成。是否可以像 FFN 的 MoE 一样,进行每个 token 独立的分布加权?
Decode 阶段每次推理一个 token 都需要同步,极大增加了延迟。文中也没考虑“选择响应速度相近的专家”,只是动态跳过慢的专家。完全是为了效果而放弃了速度。
总结与展望#
稀疏性:从修补到利用#
早期系统级负载均衡方法(如 Pro-Prophet)的思路是:在保持专家并行框架不变的前提下,通过动态复制热门专家来缓解不均。这种做法的本质是对抗稀疏性——专家激活的稀疏导致了负载不均,系统则通过复制参数来强行拉平负载,代价是额外的通信和同步。
近年来的代表性工作则转向主动利用稀疏性来重构系统设计。LAER-MoE 将专家参数拆散到所有设备并按需重建,使重布局的通信开销被计算完全掩盖,负载均衡不再需要单独规划,而是成为分布式过程的自然副产品。NetMoE 利用样本内 token 路由偏好的局部性——稀疏激活模式下,同一输入的 token 往往去往相似的专家——将跨节点通信转化为节点内通信。MegaScale-MoE 与 MegaScale-Infer 则利用 Attention 与 Experts 计算密度的极端差异:前者在解码阶段因稀疏性导致专家批次极小,传统张量并行效率崩溃,因此为两者定制差异化并行策略;后者甚至将两类模块物理解耦到不同 GPU 节点,使各自的稀疏性在最适合的硬件上发挥。KTransformers 利用残差网络对延迟累加的不敏感性,将部分专家计算推迟到下一层,使 CPU 与 GPU 并发执行——本质上是用稀疏激活带来的自由度换取硬件利用率。
这一转变的共同逻辑是:不再将稀疏性视为需要修补的缺陷,而是将其作为系统优化的新维度——稀疏意味着“大部分参数/计算可以延迟、压缩或跳过”,系统设计应围绕这一特性重新思考数据放置、通信拓扑与并行策略。
通信优化:从遮掩、压缩到源头减少#
通信开销是 MoE 分布式系统的核心瓶颈,上述工作也折射出通信优化思路的三个层次。
一、重叠。 Pro-Prophet 和 LAER-MoE 均通过流水线设计将通信与计算重叠,使通信不再处于关键路径上。MegaScale-MoE 更进一步,将 All-to-All 与 GroupedGEMM 拆解为 tile 级任务,用 device-side barrier 实现细粒度交错,将重叠推向极致。
二、压缩。 MegaScale-MoE 在梯度同步时采用 BF16 通信、FP32 本地累加,在前向通信中引入 per-token 量化,将通信量减半。这类有损压缩在训练精度可容忍的范围内显著降低了带宽压力。
三、从源头减少通信量。 NetMoE 给出了一个反直觉却极具启发性的答案:与其移动庞大的专家参数,不如移动轻量的样本数据。MegaScale-MoE 为不同模块选择差异化并行策略,从计算模式上避免了大量冗余通信。这些工作的共同哲学是:最优的通信是不需要的通信——通过重排计算与数据的拓扑关系,从根本上减少必须交换的信息量。
修改模型:另一条平行路径#
部分工作不再局限于系统层调度,而是直接修改模型本身或跨层架构设计,从根源上降低优化难度,本质是用精度换速度。这种方法的挑战在于如何在压缩率和性能之间找到最佳平衡点,以及如何设计出既能被系统高效利用又能保持模型能力的修改方案。
模型压缩:专家合并。 Sub-MoE 与 BrownoutServe 本质上都是对多个专家进行合并,以减少开销。
量化与混合精度。 虽然本文未专门讨论量化类工作,但值得指出的是,MoE 模型的量化(特别是专家权重的量化)是一个天然适配的方向:专家之间的独立性使得每专家的量化参数可以差异化配置,热门专家用高精度、冷门专家用低精度,从而在整体压缩率下保持性能。MegaScale-MoE 中的 FP8 训练已显露出这一潜力。
计算重排与架构修改。 KTransformers 的“专家延迟”策略虽然属于调度优化,但其理论基础来自对残差网络容错性的利用——这本质上是对 Transformer 计算图结构的修改。
这一路径与系统层方法正交,往往可以叠加使用,形成“模型-系统协同优化”的格局。
挑战#
动态适应性仍是难题。现有策略普遍依赖负载的局部性假设,当 workload 剧烈变化时预测可能失效。如何在在线场景中量化“调整收益与开销”的权衡,尚缺乏理论框架。
异构硬件的统一抽象也待完善。多数工作假设同构设备或仅为特定异构场景定制。一个能自动感知 CPU/GPU/不同加速器差异并动态映射专家的执行模型,本质上是多维背包问题,需要更高效的近似算法。
此外,MoE² 将 MoE 思想拓展到端侧设备协作,而端云协同的分层 MoE(边缘处理常见请求,云端处理复杂请求)尚未被充分探索,这可能成为兼顾延迟、成本和隐私的新方向。
总而言之,MoE 分布式系统的研究正在从“修复稀疏性带来的问题”走向“利用稀疏性重构系统”。未来的系统将不再是“支持 MoE 的分布式框架”,而是“为稀疏而生的分布式框架”。
参考文献
- Wei Wang, Zhiquan Lai, Dongsheng Li et al.. Pro-Prophet: A Systematic Load Balancing Method for Efficient Parallel Training of Large-Scale MoE Models. IEEE Transactions on Parallel and Distributed Systems. 2026. DOI: 10.1109/TPDS.2026.3668887.
- Xinyi Liu, Yujie Wang, Fangcheng Fu et al.. LAER-MoE: Load-Adaptive Expert Re-layout for Efficient Mixture-of-Experts Training. Proceedings of the 31st ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 2. 2026.
- Xinyi Liu, Yujie Wang, Fangcheng Fu et al.. Netmoe: Accelerating moe training through dynamic sample placement. The Thirteenth International Conference on Learning Representations. 2025.
- Chao Jin, Ziheng Jiang, Zhihao Bai et al.. Megascale-moe: Large-scale communication-efficient training of mixture-of-experts models in production. Proceedings of the 21st European Conference on Computer Systems. 2026.
- Ruidong Zhu, Ziheng Jiang, Chao Jin et al.. Megascale-infer: Efficient mixture-of-experts model serving with disaggregated expert parallelism. Proceedings of the ACM SIGCOMM 2025 Conference. 2025.
- Jianmin Hu, Minxian Xu, Kejiang Ye et al.. BrownoutServe: SLO-Aware Inference Serving under Bursty Workloads for MoE-based LLMs. IEEE Transactions on Computers. 2026.
- Shiyi Cao, Shu Liu, Tyler Griggs et al.. Moe-lightning: High-throughput moe inference on memory-constrained gpus. Proceedings of the 30th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 1. 2025.
- Hongtao Chen, Weiyu Xie, Boxin Zhang et al.. Ktransformers: Unleashing the full potential of cpu/gpu hybrid inference for moe models. Proceedings of the ACM SIGOPS 31st Symposium on Operating Systems Principles. 2025.
- Lujun Li, Qiyuan Zhu, Jiacheng Wang et al.. Sub-moe: Efficient mixture-of-expert llms compression via subspace expert merging. Proceedings of the AAAI Conference on Artificial Intelligence. 2026.
- Lyudong Jin, Yanning Zhang, Yanhan Li et al.. MoE 2: Optimizing collaborative inference for edge large language models. IEEE Transactions on Networking. 2026.
- William Fedus, Barret Zoph, Noam Shazeer. Switch transformers: Scaling to trillion parameter models with simple and efficient sparsity. Journal of Machine Learning Research. 2022.
- Dmitry Lepikhin, HyoukJoong Lee, Yuanzhong Xu et al.. Gshard: Scaling giant models with conditional computation and automatic sharding. arXiv preprint arXiv:2006.16668. 2020.
- Jiaao He, Jidong Zhai, Tiago Antunes et al.. Fastermoe: modeling and optimizing training of large-scale dynamic pre-trained models. Proceedings of the 27th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming. 2022.
- Wei Wang, Zhiquan Lai, Shengwei Li et al.. Prophet: Fine-grained load balancing for parallel training of large-scale moe models. 2023 IEEE International Conference on Cluster Computing (CLUSTER). 2023.
- Mingshu Zhai, Jiaao He, Zixuan Ma et al.. {SmartMoE}: Efficiently training {Sparsely-Activated} models through combining offline and online parallelization. 2023 USENIX Annual Technical Conference (USENIX ATC 23). 2023.
- Mohammad Shoeybi, Mostofa Patwary, Raul Puri et al.. Megatron-lm: Training multi-billion parameter language models using model parallelism. arXiv preprint arXiv:1909.08053. 2019.