AI 快讯给LLM剪枝,物理学家搬来了伊辛模型
开发心得

给LLM剪枝,物理学家搬来了伊辛模型

2026-09-21T15:08:10.321Z
给LLM剪枝,物理学家搬来了伊辛模型

Multiverse Computing 与 CAI 提出一种新思路:把 Transformer 模块移除建模为 Ising 优化问题,同时考虑模块自身重要性与模块之间的协同影响,让 LLM 结构化剪枝从“逐个试删”变成全局组合优化。

给 LLM 剪枝,物理学家搬来了伊辛模型

大型语言模型的结构化剪枝,正在从“凭经验删几层”走向组合优化。

近日,Multiverse Computing 与 CAI 在 Hugging Face 发布文章,介绍了一种基于物理学方法的 LLM 剪枝方案:把 Transformer 模块的保留或移除,转化为一个 Ising(伊辛)优化问题,再利用组合优化算法寻找更优的剪枝结构。

这个思路的价值不在于又提出了一个“重要性分数”,而在于它重新定义了剪枝问题。传统方法往往逐层评估、按分数排序,然后移除排名靠后的层或模块;而 Ising 方法试图回答另一个更接近真实部署的问题:当只能保留固定数量的模块时,哪些模块应该成组留下,哪些模块可以同时删除,才能让整体性能损失最小?

这一区别很关键。Transformer 里的模块不是互相独立的零件。一个注意力模块单独看可能贡献有限,但它可能负责把信息传给后续的 MLP;某个中间层单独移除影响不大,和另一个层一起移除却可能造成明显的分布漂移。剪枝真正难的地方,从来不是找到一个“看起来不重要”的模块,而是判断一组删除动作叠加之后会发生什么。

Transformer 结构化剪枝示意图:将每个 Transformer block 表示为二元变量,并通过 Ising 模型寻找最优保留组合

Ising 模型是什么,为什么能用来剪枝?

**Ising 模型是一种用二元自旋变量描述相互作用系统的数学模型,最初用于研究铁磁材料中原子自旋的排列。**在计算优化中,它常被改写为一个寻找最低能量状态的问题:每个变量只有两种状态,变量之间存在相互作用,最终需要找到整体代价最低的组合。

物理学里的自旋通常写成:

  • sᵢ = +1:自旋向上;
  • sᵢ = -1:自旋向下。

在 LLM 剪枝中,可以把每一个 Transformer block、注意力头、FFN 子模块,甚至更细粒度的结构映射成一个二元决策变量。例如:

  • sᵢ = +1:保留第 i 个模块;
  • sᵢ = -1:移除第 i 个模块。

随后,为每个模块设置一个单体代价或收益项,再为模块之间的关系设置交互项。一个简化后的 Ising 能量函数可以写成:

H(s) = Σᵢ hᵢsᵢ + Σᵢ<ⱼ Jᵢⱼsᵢsⱼ

其中,hᵢ 表示第 i 个模块自身的重要性,Jᵢⱼ 表示第 i 个模块和第 j 个模块之间的协同或冲突关系。

如果两个模块功能高度互补,同时删除它们会造成额外损失,那么它们之间的交互项就应该反映这种风险。如果两个模块功能重复,保留其中一个已经足够,那么算法就可能倾向于删除其中一个。这样一来,剪枝不再只是对模块做独立排序,而是把模块之间的耦合纳入了目标函数。

传统剪枝为什么容易陷入局部最优?

**传统结构化剪枝通常通过重要性评分对模块排序,再按比例删除低分模块。**这种方法实现简单、工程成本低,但它隐含了一个很强的假设:每个模块的价值可以被独立评估。

常见的重要性指标包括:

  1. 权重范数:使用 L1 或 L2 范数估算模块权重大小;
  2. 梯度敏感度:观察移除某个模块后损失函数的变化;
  3. 激活统计:统计模块输出的平均幅度、稀疏率或激活频次;
  4. 注意力模式:分析注意力头是否长期关注重复信息;
  5. 消融实验:实际关闭某个模块,再在校准数据集上测量困惑度变化。

这些指标可以告诉我们“某个模块单独有多重要”,却不一定能告诉我们“多个模块同时被删掉会怎样”。

举个简单例子。假设一个模型有 10 个 Transformer block,目标是删除其中 3 个。逐层评分可能发现第 2、5、8 层的重要性最低,于是直接删除它们。但真正的最优组合可能是第 1、5、9 层,因为第 2 层和第 8 层虽然单独贡献不高,却分别承担了早期特征整理和后期信息重组的作用。

这类问题本质上是组合优化。10 层里删除 3 层只有 120 种组合,人工还可以穷举;但如果模型有 80 层、需要删除 20 层,组合数已经达到 C(80,20),不可能逐一验证。更麻烦的是,每次验证一个候选结构都可能需要完整跑一遍校准集,计算成本会迅速上升。

Ising 建模的目标,就是用一个全局目标函数压缩这些组合关系,再交给专门的优化器搜索更优解。

这套方法如何把剪枝问题写成 Ising 问题?

**Ising 剪枝的核心步骤,是把模块重要性、模块间相互作用和剪枝预算统一编码到一个能量函数中。**整体流程可以拆成四步。

第一步:定义可剪枝模块

研究者首先需要决定优化对象是什么。

最粗粒度的方案是移除完整 Transformer layer,也就是同时移除该层的自注意力、归一化和前馈网络部分。这种方式结构变化最明显,也最容易带来真实推理加速。

更细粒度的方案则可以只针对:

  • 注意力头;
  • FFN 的中间维度;
  • MLP block;
  • 稀疏矩阵中的权重块;
  • 特定阶段的 Transformer block。

对于实际部署而言,完整层、注意力头和 FFN hidden dimension 通常比非结构化权重更有工程价值。原因很直接:把权重设为零,不代表硬件真的少算;只有计算图和矩阵形状发生变化,推理框架才更容易减少 FLOPs、显存访问和 kernel 执行时间。

第二步:测量模块的重要性

接下来需要使用一批校准数据,测量每个候选模块对模型输出的影响。

可以比较移除模块前后的:

  • 语言模型损失;
  • 困惑度;
  • logits 差异;
  • 隐状态差异;
  • 下游任务准确率;
  • 特定能力测试结果。

如果只看最终 loss,可能无法区分模块具体负责什么。更稳妥的做法,是同时观察隐藏状态和输出分布。例如,某个模块对通用文本困惑度影响很小,但对代码补全、数学推理或长上下文任务非常关键,那么单一指标就会把它误判为冗余。

第三步:估算模块之间的交互

这是 Ising 方法和简单贪心剪枝的主要区别。

研究者不仅要测量“移除模块 i 的损失”,还要估算“同时移除模块 ij 的损失”,再与两者单独损失之和进行比较。如果联合损失明显高于简单相加,说明两个模块之间存在正向协同,不能轻易一起删除。

可以将这种关系理解成剪枝版的“组合风险”:

  • 单独删除 A,性能下降 0.2%;
  • 单独删除 B,性能下降 0.3%;
  • 同时删除 A 和 B,性能下降 2.0%。

那么 A、B 就不是两个独立的低价值模块,而是一个需要谨慎处理的耦合组合。

反过来,如果单独删除 A 和 B 各自带来 0.4% 的损失,但同时删除只带来 0.5%,说明两者可能存在功能冗余。与其保留两个模块,不如删掉其中一个,把剪枝预算用在别处。

第四步:加入剪枝预算

实际压缩通常不是“能删多少删多少”,而是有明确约束:例如保留 70% 的层、将 FLOPs 降低 30%,或者把模型推理显存压到某个上限。

因此,优化目标通常需要加入预算约束。它可以被理解为:

  • 最小化模型性能损失;
  • 同时满足固定的保留层数;
  • 或满足 FLOPs、参数量、显存占用等硬约束。

如果直接使用 Ising 形式,可以把约束通过惩罚项加入能量函数;也可以先转换为 QUBO(Quadratic Unconstrained Binary Optimization,二次无约束二元优化)形式,再交给相应求解器处理。

这使得优化器寻找的不是一个抽象的最低能量状态,而是一个满足部署预算的模型结构。

它比逐层贪心更好吗?答案不是无条件的

**Ising 方法更擅长处理模块之间的组合关系,但它并不会自动创造更可靠的评估信号。**这是理解这项工作的关键。

贪心剪枝的优点是快。它只需要不断移除当前看起来最不重要的模块,工程实现简单,适合快速做出一个基线模型。问题是,一旦删错,后续评估是在已经被破坏的模型上进行,误差可能层层累积。

Ising 优化则试图一次性考虑多个模块的联合选择,理论上更容易跳出局部最优。尤其在以下场景中,它可能更有价值:

  • 模块之间存在明显冗余或协同;
  • 剪枝比例较高;
  • 模型结构允许多种可行组合;
  • 评估预算足够覆盖模块间交互;
  • 目标不是单一 loss,而是多个任务的加权表现。

但它也有现实成本。假设模型有 N 个候选模块,完整测量所有两两交互需要大约 N(N-1)/2 组组合。即使不完整穷举,也需要设计采样、近似或分块策略,否则校准阶段的计算量会非常大。

此外,Ising 求解器找到的是当前目标函数下的最优解。如果目标函数只使用通用语料困惑度,那么它优化出来的结构未必适合代码、数学或工具调用。物理学优化无法替代任务设计,它只是让搜索过程更系统。

与其他剪枝方法相比,差异在哪里?

| 方法 | 优化对象 | 是否考虑模块交互 | 主要优点 | 主要风险 | |---|---|---:|---|---| | 权重幅度剪枝 | 单个权重或结构 | 通常不考虑 | 成本低、实现简单 | 重要性与权重大小不总是相关 | | 贪心层剪枝 | Transformer 层 | 弱 | 速度快、容易部署 | 容易陷入局部最优 | | 迭代剪枝 | 层、头、通道 | 部分考虑 | 每轮可重新评估模型 | 需要多次前向计算 | | 蒸馏辅助剪枝 | 剪枝后模型行为 | 通过训练间接考虑 | 有机会恢复能力 | 需要额外训练数据和时间 | | Ising 结构优化 | 模块组合 | 显式考虑 | 适合组合选择和全局搜索 | 建模与求解成本较高 | | 低秩分解 | 权重矩阵 | 通常不直接考虑 | 参数压缩效果稳定 | 可能改变表达能力和 kernel 形状 |

这项方法并不是要取代所有剪枝算法。更现实的用法,是把 Ising 优化放在结构搜索阶段,再用微调、蒸馏或量化完成后处理。

物理优化找到的结构,能直接带来多少加速?

剪枝比例不等于推理加速比例,模型结构是否被硬件和推理框架真正利用,才决定最终收益。

例如,删除 20% 的 Transformer 层,理论上可能减少接近 20% 的层级计算;但实际端到端延迟还会受到以下因素影响:

  • 算子融合是否重新生效;
  • 推理框架是否支持不规则层结构;
  • GPU kernel 是否因为小矩阵变得低效;
  • KV Cache 的读写是否成为新瓶颈;
  • batch size 和上下文长度如何变化;
  • 数据搬运和显存访问是否占据主要时间。

如果只是把权重置零,而模型仍使用原始矩阵形状,那么 FLOPs 可能几乎不变。结构化剪枝则更容易产生真实收益,但前提是需要重新构建模型配置、权重张量和执行图。

因此,评估 Ising 剪枝不能只报告参数量下降,还应至少同时给出:

  1. 实际 FLOPs 变化;
  2. 峰值显存变化;
  3. prefill 延迟;
  4. decode 阶段每 token 延迟;
  5. 不同 batch size 下的吞吐量;
  6. 目标硬件上的端到端测试结果。

如果一套方法只说“保留了 70% 的模块”,却没有说明真实延迟从多少降到多少,那么它还不能算完整的工程结论。

最大挑战:重要性测量和交互建模都很贵

Ising 剪枝的瓶颈不一定在求解器,而可能在于如何构造一个可信的 Ising 模型。

第一,校准数据集会直接决定优化方向。数据太少,模块重要性估计会有噪声;数据过于单一,剪枝结果会过拟合某类任务。面向通用聊天、代码生成、数学推理和长上下文的模型,最好使用多领域校准集,并对不同任务设置权重。

第二,二阶交互只是近似。真实 Transformer 的模块关系可能包含三阶甚至更高阶依赖。一个层的作用,可能取决于前面两个层是否同时存在。将这些复杂关系压缩成线性项和二次项,能够让问题可以求解,但也会损失部分信息。

第三,模型在剪枝后通常需要恢复训练。即便搜索阶段找到的结构不错,直接删除模块仍可能导致隐藏状态分布变化。少量继续预训练、监督微调或知识蒸馏,往往是把理论结构变成可用模型的必要步骤。

第四,能力损失可能是不均匀的。平均困惑度下降 1%,并不意味着所有能力都下降 1%。剪掉某些层可能对闲聊影响很小,却显著损害代码、事实记忆或复杂推理。因此,剪枝评测必须从单一指标走向能力矩阵。

对开发者的实际启示

如果你的目标是降低真实推理成本,应该把剪枝看成“结构搜索加系统验证”,而不是一次性的权重删除。

一个相对稳妥的工程流程可以是:

  1. 先确定部署约束,包括显存、延迟、吞吐和最大上下文长度;
  2. 选择可以被推理框架真实利用的剪枝粒度;
  3. 使用多领域校准集测量单模块损失;
  4. 对高风险模块估算两两交互;
  5. 将保留比例、FLOPs 或显存限制写入组合优化目标;
  6. 使用 Ising、QUBO、整数规划或其他搜索方法生成候选结构;
  7. 对候选结构做短周期恢复训练或蒸馏;
  8. 在真实硬件上测试 prefill、decode 和长上下文性能;
  9. 重新评估代码、数学、推理和安全等关键能力。

在资源有限时,也不必一开始就对全模型做完整交互建模。可以先使用权重、激活或梯度指标筛掉明显重要的模块,再对剩余候选集使用 Ising 优化。这样既保留全局搜索的优势,也能把校准成本控制在可接受范围内。

这项工作的真正意义

把 Transformer 剪枝转化为 Ising 优化,真正改变的是问题的表达方式,而不是凭空提高模型能力。

过去的结构化剪枝更像是在一张排行榜上从后往前删模块;Ising 方法则把它变成了一个有预算、有相互作用、有全局目标的组合选择问题。对于模块耦合越来越强、结构越来越复杂的 LLM,这种视角比单纯比较权重范数更接近模型实际运行方式。

但它距离“通用剪枝方案”仍有明显距离。方法是否有效,取决于三件事:交互项是否测得准,求解成本是否可控,剪枝后的结构是否能被硬件真正加速。任何一项缺失,最终都可能变成漂亮的优化结果,却没有对应的部署收益。

截至 2026 年 9 月,这条路线最值得关注的地方,是它把机器学习模型压缩和组合优化、量子启发式计算连接起来。未来更现实的方向,可能不是单独使用 Ising 剪枝,而是把它和蒸馏、混合精度量化、KV Cache 优化以及硬件感知搜索结合起来:先用组合优化决定“删什么”,再用蒸馏恢复“丢掉的能力”,最后由编译器和推理 kernel 决定“到底能快多少”。

对于开发者而言,结论可以简单概括为一句话:剪枝不是找到最不重要的层,而是在给定计算预算下,找到损失最小、结构可部署、能力仍然可用的模块组合。

参考来源

相关推荐

查看全部