Article · AI translation
混合专家语言模型中的高阶专家剪枝
引言
混合专家(MoE)模型使最先进的大语言模型得以扩展到数千亿参数,但也有一个根本且代价高昂的问题:推理时,每个专家 MLP 都必须占用内存,尽管对于任意给定的 token,绝大多数专家都处于闲置状态。例如,Qwen3.5-122B 的 48 个 MoE 层中,每层都有 256 个专家;其约 250 GB 的参数内存占用中,95% 完全由这些专家 MLP 占据。然而,对于任意给定的 token,每层实际上只使用 8 个专家。
专家剪枝是解决这一内存瓶颈最直接的方法之一,也就是永久删除最无用的专家。剪枝避免了使专家动态加载和卸载变得不切实际的延迟问题;不需要任何训练;还可以与量化结合使用。鉴于这些吸引人的优点和方法本身的简洁性,专家剪枝成为缩小 MoE 模型的常用方法并不难理解。难点在于判断删除哪些专家最安全。
现有剪枝方法会独立评估每个专家,根据校准数据集为每个专家赋予一个标量重要性分数,然后在每一层分别删除最不重要的专家。这些是一阶方法,因为它们假设每个专家的贡献都独立于其他专家。实际上,专家会组成协作群组。我们在自己的实验中观察到稳定存在的共同激活专家簇,独立研究也表明,专家协作是 MoE 的稳定特性,对模型性能十分重要。忽略这些相互作用会导致剪枝效果欠佳,在高剪枝比例下尤其如此。
我们的最新论文提出了 HOPE(Higher-Order Pruning of Experts,高阶专家剪枝),这是一种考虑专家两两相互作用的二阶方法。在 50% 的剪枝比例下,HOPE 取得了所有方法中最佳的平均排名;在智能体编程任务上,相比表现第二好的剪枝方法,提升最高达 +6.1%。
本文将解释 HOPE 的工作原理,展示它在哪些方面优于现有方法,并逐步说明如何将它用于你自己的模型。不了解 MoE 架构的读者,可参阅《Transformers 中的混合专家(MoE)》 。
专家并非单独工作
在标准 MoE 中,每层有 E E 个专家,每个输入 token x x 都会被独立路由到其中 K K 个专家(K = 8 K = 8 是一种典型选择)。路由由单个层完成,该层为每个专家 k k 生成经过 softmax 归一化的门控权重 g k ( x ) g_{k}(x);门控权重最高的 K K 个专家被选中,形成活跃专家集合 T ( x ) ⊂ { 1 , . . , E } T(x) \subset\{1,..,E\}。该层的输出随后为 ∑ k ∈ T ( x ) g k ( x ) f k ( x ) \sum\limits_{k\in T(x)}g_{k}(x)f_{k}(x),其中 f k ( x ) f_{k}(x) 是专家 k k 对 token x x 的输出。
左:典型的 MoE 层,每个 token 都被路由到排名前 K 的专家。右:一阶方法根据标量重要性分数对专家排序并删除专家,但最佳剪枝决策还会考虑专家之间相互作用的强度。
重要的是,选中集合 T ( x ) T(x) 中的专家并非彼此独立。专家会形成稳定的协作群组,并持续共同激活。此前的文献也观察到了这一现象:专家共同选中的模式在训练早期出现,并在之后保持稳定。
这意味着,当我们对 MoE 层中的专家进行剪枝时,剪枝决策需要考虑这些专家之间的高阶效应。单独看,删除专家 A 似乎没有问题;但如果专家 B 经常与 A 协作并依赖 A,而且 B 非常重要,那么只删除 A 一个专家就会瓦解一个协作群组。一阶方法完全忽略了这一点,因为它们分别对 A 和 B 评分。
这种效应在高剪枝率下会进一步累积。当我们移除多达 50% 的专家时,就有可能破坏许多协作关系。此时二阶剪枝最具优势。
HOPE 如何确定待剪枝专家集合
(HOPE 目标函数的完整推导见我们对应论文的附录 A)
当我们从某个 MoE 层删除一个包含 P P 个专家的集合时,所选专家集合 T ( x ) T(x)(对于任意 token x x)可能发生变化。原本会被选中的已剪枝专家,将由门控权重次高的专家替代。由此产生的层输出变化就是剪枝误差。我们的目标是找到一个待剪枝专家集合 P P(其剪枝预算 ∣ P ∣ \vert P\vert 已预先设定),使校准集中各 token x x 的剪枝误差最小。
遗憾的是,直接在 P P 上最小化剪枝误差在计算上不可行。剪枝误差取决于替代专家的身份,而替代专家又取决于待剪枝专家集合 P P 本身。HOPE 为此定义了一个可求解的替代量 Z Z,它是剪枝误差主要组成部分的严格上界:
Z = [ ∑ j ∈ P ∩ T ( x ) g j ( x ) ∥ f j ( x ) ∥ 2 ] 2 ≥ 真实误差 Z = \bigl[\sum\limits_{j \in P\cap T(x)} g_{j}(x)\Vert f_j(x)\Vert_{2}\bigr]^{2} \geq \text{真实误差}
由于 Z Z 是一个和的平方,将其展开自然会产生专家两两之间的交叉项 g i ( x ) g j ( x ) ∥ f i ( x ) ∥ 2 ∥ f j ( x ) ∥ 2 g_{i}(x)g_{j}(x)\Vert f_{i}(x)\Vert_{2}\Vert f_{j}(x)\Vert_{2}。这些就是一阶方法舍弃的交互项。
为找到最优待剪枝专家集合,HOPE 在校准集上最小化 E [ Z ] \mathbb{E}[Z],这可以改写为以下二次规划问题:
P ∗ = arg min p p ⊤ F p,约束条件:p ∈ { 0 , 1 } E,∑ k = 1 E p k = ∣ P ∣ P^{*} = \argmin_{p}\; p^{\top}Fp \quad \text{约束条件:} \quad p \in \{0,1\}^{E}, \sum\limits_{k=1}^{E}p_{k} = \vert P\vert
其中,F ∈ R E × E F\in\mathbb{R}^{E\times E} 定义为:
F i , j = 1 ∣ X i , j ∣ ∑ x ∈ X i , j g i ( x ) g j ( x ) ∥ f i ( x ) ∥ 2 ∥ f j ( x ) ∥ 2,其中 X i , j = { x : i , j ∈ T ( x ) } F_{i,j} = \frac{1}{\vert \mathcal{X}_{i,j}\vert} \sum\limits_{x\in\mathcal{X}_{i,j}} g_{i}(x)g_{j}(x)\Vert f_{i}(x)\Vert_{2}\Vert f_{j}(x)\Vert_{2}\quad\text{其中}\quad \mathcal{X}_{i,j} = \{x: i,j \in T(x)\}
这个 F 矩阵是在校准数据集上收集得到的;通过连续松弛求解由此形成的二次规划(QP),再将结果舍入为二元解,即可得到最优待剪枝专家集合。每个元素 F i , j F_{i,j} 表示在专家 i i 和 j j 同时被激活的 token 上,两者经门控权重加权的输出乘积的平均值。对角元素 F k , k F_{k,k} 衡量单个专家的重要性,而非对角元素(当 i ≠ j i\neq j 时的 F i , j F_{i,j})衡量专家两两协作的贡献。
F F 在实际中是什么样的?它呈现出随层而异的专家协作结构:
GLM-4.5-Air 的交互矩阵 F 在 3 个代表性层(早期、中期、后期)的可视化结果;该模型每层有 128 个专家,总参数量为 1060 亿。专家经过聚类,以揭示分块结构。沿对角线的亮色块表示专家之间两两交互得分较高的群组。
在实际成本方面,HOPE 与其他任何专家剪枝方法一样,需要进行一次校准遍历(对校准数据进行一次前向传播)。唯一增加的步骤是求解二次规划;虽然该问题是非凸的,但可以用标准二次规划求解器高效求解(每层 1–2 秒)。由于耗时主要来自校准,与一阶方法相比,额外的总开销可以忽略不计。
值得注意的是,HOPE 与 Router-weighted Expert Activation Pruning(REAP)有很强的关联;REAP 是一种最先进的一阶专家剪枝方法。HOPE 的 F 矩阵在对角线上编码了各个专家的重要性分数,而这些对角线值实际上重现了 REAP 用于独立地对专家进行剪枝排序的分数(两者仅在专家贡献的方差方面有所不同)。F 矩阵的对角线几乎完美地重现了 REAP 的专家排名(斯皮尔曼 ρ = 0.988)。因此,HOPE 相对于 REAP 取得的任何改进,都可归因于 F 矩阵非对角线元素中的二阶交互项。
结果
我们使用 3 个模型(Qwen3.5-122B、Qwen3.5-35B 和 GLM-4.5-Air)以及 2 个校准数据集(Evol-CodeAlpaca 和 SWE-Bench Verified 轨迹),评估了 HOPE 作为专家剪枝方法的表现。我们使用 Tulu3 测试套件和 SWE-Bench Pro(智能体编程)测试剪枝后的模型,并在 10% 至 50% 的剪枝率范围内,将 HOPE 与 4 种一阶基线方法(REAP、MAN、EAN 和 Frequency)进行比较。
HOPE 在各种条件下取得了最佳总体排名,并在高剪枝率下占据优势。左:所有模型、校准集和基准测试的平均排名(越低越好)。右:Qwen3.5-35B 在 SWE-Bench Pro 上的表现。
在所有条件下,HOPE 的平均排名最佳(在 5 种方法中为 2.07),获得第 1 名的比例最高(占全部条件的 39%),进入前 2 名的比例也最高(67%)。在一对一比较中,HOPE 在大多数条件下都胜过其他每一种基线方法。
正如预期,HOPE 的优势随着剪枝率升高而扩大。移除的专家越多,被破坏的协作联系就越多,F 矩阵的非对角线项也就越重要。在 50% 的剪枝率下,HOPE 的平均排名提高至 1.58(排名第二的方法 REAP 为 2.42)。这一设置也与部署最为相关,因为节省的内存足以支持更长的上下文、更深入的推理和更多工具调用。
HOPE 的优势在 SWE-Bench Pro 上最为明显。这是一项智能体编程基准测试,要求模型自主解决真实的 GitHub 问题。这些问题涉及跨多个轮次、需要组合运用不同能力的任务(例如编程、工具调用、推理等),很可能会用到多种专家组合;这正是保留协作结构最为重要的情形。在 50% 的剪枝率下,Qwen3.5-35B-A3B 使用 HOPE 在 SWE-Bench Pro 上取得了 42.3,与未剪枝模型的 41.8 相当(而 REAP 降至 36.2,退步了 13%)。
值得注意的是,剪枝后的模型有时能够达到甚至超过未剪枝基线模型的表现,这可能是因为移除相关性较低的专家减少了目标任务中的噪声。这种效应并非 HOPE 独有,在其他剪枝方法中也观察到了。此外,我们的实验表明,使用任何剪枝方法(包括 HOPE)进行面向代码的校准,都没有使非编程基准测试的表现严重下降;无论使用哪个校准集,HOPE 在 Tulu3 测试套件中均表现良好。
与保留专家之间的平均协作强度(以 F 矩阵的值衡量),按 HOPE 和 REAP 意见不一致的专家分组。
HOPE 的优势源于对整个交互矩阵 F 进行优化。为了解这在实践中如何影响剪枝决策,我们考察了 HOPE 与 REAP 意见不一致的专家。对于每个存在分歧的专家,我们计算其协作分数(即它与其他保留专家之间 F 值的平均值)。仅被 HOPE 保留的专家,其协作分数始终高于仅被 REAP 保留的专家。换言之,作为 QP 优化的一部分,HOPE 放弃了一些单独得分较高的专家,以保留协作的专家群。上述基准测试中的性能提升证明,这种取舍是有利的。
如何运行 HOPE
我们创建了一个运行 HOPE 的基础软件包。它包含 3 个步骤:1)校准;2)求解;3)剪枝。我们的软件包已在 Qwen3、Qwen3-Next、Qwen3.5 和 GLM-4.5 上完成测试。
校准步骤会对校准数据执行一次前向传播,无论这些数据是智能体运行轨迹还是单轮交互轨迹。该步骤使用 HuggingFace transformers 钩入每个独立 MoE 层的前向传播。对于每个 token,它会记录选中了哪些专家、这些专家的门控权重、输出范数以及成对共同激活统计量。此步骤的输出是 F 矩阵,存储在一个 HDF5 文件中。
这条命令将 F 矩阵实体化,并通过连续松弛求解二元二次规划。每层需要几秒钟,输出是一个包含待剪枝集合的 JSON 文件。严格来说,这就是 HOPE 算法的最终输出。
为完成整个流程,我们运行这条命令,根据待剪枝集合实际创建更小的模型检查点。剪枝后的模型是标准的 HuggingFace 检查点,在磁盘和内存中占用的空间都更小(无需更改 vLLM 或 SGLang 的模型定义)。
我们还发布了一个更简洁的 Python API:
HOPE 的局限性
HOPE 的优势在较高剪枝率(40–50%)下最为明显。在较低剪枝率(10–20%)下,REAP 和 MAN 等一阶方法有时具有竞争力,HOPE 的优势也会缩小。此外,与大多数专家剪枝算法一样,HOPE 独立地对每一层进行剪枝,并未考虑跨层相互作用。在我们的论文中,我们提出了跨层 HOPE 的理论框架,但相关结果仍属初步阶段。最后,HOPE 捕捉的是成对相互作用;更高阶的相互作用(三元组及以上)可能提供额外信息,尽管对它们进行估计在组合复杂性方面十分困难。
更多信息
如需了解更多信息,请参阅我们的相关论文和代码库。
论文:https://arxiv.org/abs/2609.18916
代码:https://github.com/awslabs/HOPE
要了解如何将 HOPE 应用于下一代混合架构,请参阅我们的相关代码仓库。
引用: