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