POP:仅预填充阶段剪枝实现高效大模型推理 POP: Prefill-Only Pruning for Efficient Large Model Inference
通过在预填充阶段裁剪深层网络、在解码阶段保留完整模型,实现 1.37 倍加速且精度几乎无损
前置知识
Transformer 自回归推理的预填充与解码两阶段
大语言模型的推理过程天然分为两个阶段。预填充阶段(prefill)将用户输入的全部 token 一次性并行处理,为每一层生成 Key-Value 缓存(KV Cache),为后续生成提供上下文。解码阶段(decode)则逐 token 生成,每次只处理最新一个 token,同时需要利用全部历史 KV 缓存进行注意力计算,并预测下一个 token 的概率分布。这两个阶段在计算模式和功能目标上存在本质差异:预填充是纯编码任务,解码则同时承担编码和预测双重角色。
本文的核心贡献就是揭示并利用这两个阶段对剪枝的不对称敏感性,不理解两阶段的区别就无法理解论文的动机和方法。
结构化剪枝与非结构化剪枝
非结构化剪枝(如 SparseGPT、Wanda)移除单个权重参数,基于权重幅度或激活值范数来决定剪哪些权重。虽然能保持精度,但需要专用硬件和稀疏内核才能实现实际加速。结构化剪枝则移除整个组件(如整个层、整个注意力头或整个通道),硬件兼容性好,可以直接在现有 GPU 上获得加速,但往往带来严重的精度下降,尤其在开放式生成任务上。
论文正是要解决结构化剪枝方法精度崩溃的问题,同时保持其硬件友好的优势。
KV 缓存(Key-Value Cache)
在 Transformer 推理中,为了不重复计算历史 token 的注意力,每一层都会将之前所有 token 的 Key 和 Value 向量缓存下来。新的 token 生成时,只需计算当前 token 的 Query、Key、Value,然后将 Key 和 Value 追加到缓存中。KV 缓存对于解码阶段至关重要——如果某些层的 KV 缓存缺失,模型就无法对这些层进行完整的注意力计算。
POP 方法在剪枝深层时,必须确保这些被跳过的层仍然能生成有效的 KV 缓存,这正是独立 KV 投影机制的设计动机。
虚拟门(Virtual Gate)机制
这是本文提出的重要性估计方法。通过在每一层的残差分支上乘以一个虚拟标量参数 $g_l$,当 $g_l = 1$ 时层正常工作,$g_l = 0$ 时层被跳过。然后利用二阶泰勒展开来近似 $g_l$ 从 1 变为 0 时损失函数的变化量,从而一次性估计每层对模型性能的重要性,无需反复逐层移除和评估。
虚拟门是论文方法论的技术基础,使得高效、精确地分析每一层在不同推理阶段的重要性成为可能。
Fisher 信息矩阵近似
在虚拟门的重要性估计中,二阶导数项(Hessian)的直接计算代价很高。论文采用采样策略:从模型自身分布中采样目标响应来计算损失,使得期望一阶梯度为零,同时期望 Hessian 等于梯度的二阶矩。这将复杂的二阶计算简化为单次前向-反向传播就能得到的梯度平方期望值。
这一近似使得虚拟门机制在计算上可行,否则逐层计算 Hessian 的代价将使整个方法无法实际使用。
研究动机
现有的结构化剪枝方法采用与推理阶段无关的统一策略(stage-agnostic),对预填充和解码两个阶段施加完全相同的剪枝方案。这导致了灾难性的精度崩溃。具体而言,当 SliceGPT 以 25% 的剪枝率应用于 Llama-3.1-8B-Instruct 时,在 GSM8K 数学推理任务上的准确率从 79.68% 骤降至 0.91%,HumanEval 代码生成从 68.29% 降至 0%,HotpotQA 长上下文问答从 55.66% 降至 8.71%。ShortGPT 在相同设置下同样表现糟糕,GSM8K 降至 0.38%,HumanEval 降至 0%。这些结果表明,现有方法虽然能处理选择题等基于似然的任务,但在需要开放式生成的任务上完全崩溃。根本原因在于:它们忽视了预填充和解码两个阶段在功能上的不对称性——深层网络对解码至关重要,但对预填充阶段的上下文编码来说是冗余的。
本文的目标是本文的目标是提出一种阶段感知的剪枝策略(stage-aware pruning),在预填充阶段安全地裁剪冗余的深层网络以减少计算量和延迟,同时保留完整模型用于解码阶段,从而在几乎不损失精度的前提下显著加速推理。具体目标包括:在预填充阶段实现 1.3 倍以上的加速;在所有类型的任务(常识推理、数学推理、代码生成、长上下文问答、多模态理解)上保持接近完整模型的精度;方法无需模型重训练,不需要专用硬件或稀疏内核。
与已有工作不同的是,本文的独特切入角度是揭示并利用预填充与解码两个阶段的功能不对称性。论文提出了一个关键洞察:标准自回归推理中,预填充阶段的唯一目标是将输入编码到 KV 缓存中,而解码阶段必须同时完成当前 token 的编码和下一个 token 的预测。通过虚拟门机制的分析,论文发现深层网络(后 1/3 层)在解码阶段的重要性分数远高于预填充阶段——对于 Qwen3-VL-8B-Instruct,深层在解码阶段的重要性分数可超过 50,而在预填充阶段接近 0。这种不对称性意味着可以在预填充阶段安全地跳过这些层,而不会影响解码阶段的生成质量。这与此前所有结构化剪枝方法的根本区别在于:不是找一个全局最优的剪枝方案,而是为两个功能不同的阶段分别定制剪枝策略。
核心方法
POP 的整体思路可以分为三个层次理解。直觉层面:既然预填充只需要编码上下文,解码才需要精确预测下一个 token,那为什么不让模型在预填充阶段偷个懒、只用浅层网络快速编码,而在解码阶段才全力以赴?技术层面:通过虚拟门机制定量验证了这个直觉——深层网络在预填充阶段几乎不贡献信息(重要性分数接近零),但在解码阶段至关重要(重要性分数极高)。因此可以在预填充阶段安全地跳过最后 1/3 的层。工程层面:为了让这个看似简单的想法真正可行,还需要解决两个技术挑战:被跳过的层在解码阶段仍然需要 KV 缓存,因此需要独立的 KV 投影机制来生成这些缓存;最后一个输入 token 如果也被剪枝处理,会导致第一个生成 token 的精度严重下降,因此需要边界处理策略。
POP 的核心创新点在于提出了「仅预填充剪枝」(Prefill-Only Pruning)这一全新的剪枝范式,与已有方法有本质区别。传统方法(如 SliceGPT、ShortGPT)是在整个推理过程中统一移除某些组件,无论预填充还是解码都使用同一个精简模型。POP 则打破了这一范式:预填充阶段使用精简模型(跳过深层),解码阶段使用完整模型。这一创新的关键技术支撑是独立 KV 投影机制——对于被跳过的层 $l \in S_{skip}$,不执行完整的注意力和 FFN 计算,而是仅执行轻量级的 KV 投影:$k_l := \text{RoPE}(\text{LN}(x_l) W^K)$,$v_l := \text{LN}(x_l) W^V$。由于 KV 投影的计算量不到完整注意力和 FFN 块的 5%,这既保证了解码阶段有完整的 KV 缓存可用,又不牺牲预填充的加速效果。另一个关键创新是边界处理:将最后一个输入 token $x_N$ 的处理从预填充阶段移到解码阶段,确保第一个生成 token 利用模型的全部容量。
方法步骤详情
POP 方法的完整流程分为以下步骤。第一步,层重要性分析。使用虚拟门机制,在校准数据集上分别计算每层在预填充和解码阶段的重要性分数 $\tilde{I}_l$。具体做法是:对每个校准样本,通过一次前向-反向传播计算 $\partial L / \partial g_l$ 的梯度,然后取梯度平方的期望值作为重要性估计。第二步,层选择。基于重要性分析的结果,选择深层(最后 1/3 层)作为剪枝目标集合 $S_{skip}$。这个比例是通过经验确定的平衡点——消融实验表明,20%-25% 的剪枝率可以保持甚至略微超越完整模型精度(如 Qwen3-VL 的 GSM8K 从 81.50% 提升到 83.09%),但加速有限;33% 在精度和加速之间取得了最佳平衡;超过 50% 则会导致性能急剧下降。第三步,预填充阶段执行。对前 $N-1$ 个 token,对不在 $S_{skip}$ 中的层执行完整的注意力和 FFN 计算;对在 $S_{skip}$ 中的层,仅执行独立 KV 投影生成缓存,然后直接将输入传递给下一层($\hat{x}_{l+1} := x_l$)。第四步,边界处理。将第 $N$ 个 token(最后一个输入 token)的处理从预填充移到解码阶段,作为第一个解码步骤。第五步,解码阶段执行。对每个生成的 token,使用完整模型(所有层)进行计算,包括被跳过的层——这些层此时已有完整的 KV 缓存可供注意力计算使用。
技术新颖性
POP 的技术新颖性体现在三个层面。首先,在方法论层面,它是第一个明确提出「阶段感知剪枝」概念的工作。此前所有结构化剪枝方法都隐含假设最优剪枝方案在预填充和解码阶段是相同的,POP 首次挑战了这一假设并通过虚拟门机制的定量分析给出了令人信服的证据。其次,在技术实现层面,独立 KV 投影机制是一个巧妙的设计:它利用了 KV 投影与完整注意力+FFN 计算之间的巨大计算量差异(小于 5% vs 100%),在几乎不增加计算开销的情况下解决了被剪枝层的缓存缺失问题。这与传统剪枝方法「要么全留要么全去」的思路形成鲜明对比。最后,在分析工具层面,虚拟门机制本身也具有独立价值——它通过 Fisher 信息近似,将逐层重要性估计的计算复杂度从 $O(L)$ 次完整推理降低到单次前向-反向传播,且能分别分析不同推理阶段的重要性,这为未来的模型分析和优化工作提供了有力工具。
实验结果
论文在三个模型系列(Llama-3.1-8B-Instruct、Qwen3-VL-8B-Instruct、Gemma-3-12B-It)和多种任务上进行了全面评估,核心发现如下。第一,POP 在所有任务类别上都能保持接近完整模型的精度。以 Llama-3.1 为例,POP(31.25% 剪枝率)在 MMLU 上达到 67.43%(完整模型 68.33%),GSM8K 达到 77.26%(完整模型 79.68%,保留 97.00%),HumanEval 达到 64.63%(完整模型 68.29%,保留 95.64%)。第二,现有结构化剪枝方法在开放式生成任务上灾难性崩溃。SliceGPT 在 Llama-3.1 的 GSM8K 上从 79.68% 降至 0.91%,ShortGPT 降至 0.38%。POP 在剪枝率更高(33% vs 25%)的情况下仍然保持了 97% 的精度。第三,POP 的精度与非结构化剪枝方法 Wanda 相当,但硬件兼容性远优于后者。在 Gemma-3 上,POP 平均精度 62.95% vs Wanda 的 62.55%,且 POP 在 A100 GPU 上能获得实际加速,而 Wanda 使用稠密内核无法获得任何加速(1.0倍)。第四,推理加速方面,POP 在长序列场景下优势明显。在输入长度 2048 token 时,Llama-3.1 获得 1.36 倍加速,Gemma-3 获得 1.37 倍加速,均优于 SliceGPT 和 ShortGPT。对于 Qwen3-VL 处理高分辨率图像(2560x1440),POP 也保持了 1.16 倍的稳定加速。第五,消融实验验证了三个设计组件的必要性:去除独立 KV 投影后 GSM8K 从 80.21% 崩溃至 2.05%;去除边界处理后 HotpotQA 从 63.13% 降至 11.45%;浅层剪枝策略使 GSM8K 降至 0.15%。第六,POP 与稀疏注意力和 token 剪枝方法正交互补。将 POP 与 FlexPrefill 结合使用,在 Llama-3.1 上实现了 1.54 倍的加速(单独 FlexPrefill 为 1.13-1.22 倍),同时保持了更高的精度。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| 常识推理(MMLU、HellaSwag、WinoGrande、PIQA 平均) | 平均准确率 | Llama-3.1: 74.87%; Qwen3-VL: 76.38%; Gemma-3: 76.92% | 完整模型: Llama-3.1: 75.84%; Qwen3-VL: 76.30%; Gemma-3: 76.46% | POP 保持与完整模型几乎相同的精度,显著优于 SliceGPT(Llama-3.1: 54.14%)和 ShortGPT(Llama-3.1: 67.00%) |
| 数学与代码推理(GSM8K、HumanEval) | 准确率 | Llama-3.1: GSM8K 77.26%, HumanEval 64.63%; Qwen3-VL: GSM8K 80.21%, HumanEval 89.63% | SliceGPT Llama-3.1: GSM8K 0.91%, HumanEval 0.00%; ShortGPT Llama-3.1: GSM8K 0.38%, HumanEval 0.00% | POP 在这些开放式生成任务上保留了 95%-97% 的完整模型精度,而 SliceGPT 和 ShortGPT 完全崩溃 |
| 长上下文理解(HotpotQA) | F1 分数 | Llama-3.1: 53.48%; Qwen3-VL: 63.13%; Gemma-3: 59.11% | 完整模型: Llama-3.1: 55.66%; Qwen3-VL: 65.49%; Gemma-3: 59.62% | POP 保持 96%-99% 的完整模型精度,显著优于 SliceGPT(Gemma-3: 4.18%) |
| 多模态理解(MMMU、RealWorldQA、TextVQA、ScreenSpot 平均) | 平均准确率 | Qwen3-VL: 71.77%; Gemma-3: 44.25% | 完整模型 Qwen3-VL: 72.57%; Gemma-3: 44.88% | POP 在多模态任务上精度损失极小,远优于 SliceGPT(Qwen3-VL: 18.58%) |
| 预填充延迟加速(TTFT) | 加速比(输入长度 2048) | Llama-3.1: 1.36x; Gemma-3: 1.37x | SliceGPT Llama-3.1: 1.31x, Gemma-3: 1.29x; ShortGPT Llama-3.1: 1.30x, Gemma-3: 1.31x | POP 在长序列场景下实现最高 1.37x 加速,且精度远优于基线 |
局限与改进
作者在论文中坦诚地承认了两个主要局限。第一,内存占用问题:与传统剪枝方法永久移除参数不同,POP 需要在内存中保留完整模型权重,因为解码阶段要使用所有层。因此 POP 无法减少峰值显存占用(peak VRAM usage),最适合计算瓶颈(compute-bound)场景而非显存瓶颈(capacity-bound)场景。第二,分布式部署适配:当前实现基于单进程推理管线(修改自 Transformers 库),而现代推理系统如 DistServe 和 Splitwise 将预填充和解码实例部署在不同硬件上。POP 虽然天然适合这种解耦架构,但适配分布式框架需要大量工程工作。此外,作者还指出 POP 的加速效果在短序列场景下有限——输入长度为 32 token 时 Llama-3.1 仅获得 1.22 倍加速,Gemma-3 仅 1.02 倍,这是因为短序列预填充是显存带宽瓶颈,且边界处理策略要求最后一个 token 使用完整模型处理。从独立观察来看,POP 还有一个隐含局限:剪枝比例(1/3)是经验性选择的固定值,缺乏自适应机制。不同模型、不同任务的最优剪枝比例可能不同,目前缺乏自动确定最优比例的方法。另外,论文的消融实验表明剪枝率超过 50% 后性能急剧下降(GSM8K 从 80.82% 降至 38.51%,HotpotQA 从 61.69% 降至 5.45%),说明方法的加速上限受到精度的严格约束。
独立分析的弱点
第一个弱点是剪枝比例的固定性。论文采用经验选择的 1/3 剪枝比例,但不同模型和任务的最优比例可能差异很大。消融实验显示 20%-25% 的剪枝率甚至能略微提升精度(GSM8K 从 81.50% 升至 83.09%),而 50% 以上则急剧崩溃。改进方向:可以设计自适应剪枝策略,基于每层的实际重要性分数动态决定剪枝比例,而不是固定移除最后 1/3 层。第二个弱点是独立 KV 投影引入的表示漂移。论文附录 A 的实验表明,被剪枝层的隐藏状态余弦相似度从 1.0 下降到 0.71,KV 缓存中的 Value 状态甚至下降到 0.46。虽然注意力机制的加权聚合能部分平滑这种漂移(注意力输出相似度保持在 0.96 以上),但在长上下文场景下,累积的表示漂移可能会更显著。改进方向:可以考虑对被剪枝层的 KV 投影进行轻量级微调,使其更好地逼近完整层的输出分布。第三个弱点是短序列场景加速有限。输入长度为 32 token 时加速仅 1.02-1.22 倍,因为短序列预填充是显存带宽瓶颈,且边界处理要求最后一个 token 使用完整模型。改进方向:可以探索对短序列场景的专门优化,比如减少边界处理的开销,或者与量化方法结合降低显存访问成本。第四个弱点是缺乏对更大规模模型(如 70B、400B)的实验验证。论文仅在 8B 和 12B 规模的模型上进行了实验,尚不清楚 POP 的效果是否能迁移到更大规模的模型上。
未来方向
论文作者提出了几个未来研究方向。首先是将 POP 适配到分布式推理系统(如 DistServe、Splitwise),这些系统将预填充和解码部署在不同硬件上,与 POP 的阶段感知设计天然契合,适配后有望进一步最大化集群级吞吐。其次是与其他加速技术的深度集成——论文附录 B 已经展示了 POP 与 FlexPrefill(稀疏注意力)和 LLMLingua-2(token 剪枝)的正交互补性,三者结合可在 Llama-3.1 上实现 1.56 倍加速。基于论文成果,还可以延伸以下方向:将 POP 的阶段感知思想推广到量化(如预填充用低精度、解码用高精度);探索自适应层剪枝,根据输入内容动态决定哪些层需要剪枝;将虚拟门机制用于模型压缩的其他任务(如模型蒸馏中的层重要性分析);在更大规模模型和更多模态(音频、视频)上验证 POP 的泛化性。
复现评估
论文的复现条件较为理想。代码方面,论文基于 PyTorch 和 HuggingFace Transformers 库实现,这些都是广泛使用的开源框架。校准数据集方面,论文使用了公开可用的 WizardLM-V2-196K(文本任务)和 LLAVA-Instruct-150K(多模态任务),每个方法仅需 200 个校准样本,数据需求很低。算力方面,所有实验在 NVIDIA A100 80GB GPU 上进行,对于 8B-12B 规模的模型,单卡即可完成。评估框架使用了成熟的开源工具(LM-Evaluation-Harness、LongBench、LMMs-Eval)。方法本身不涉及训练,仅需一次前向-反向传播进行重要性估计,然后在推理时应用剪枝策略,复现难度较低。总体而言,复现难度为中等偏低——所需数据、工具和算力都是公开可用且门槛不高的。不过论文尚未明确说明是否会开源代码,如果不开源,需要自行实现虚拟门机制、独立 KV 投影和边界处理策略。
论文图表
该图包含两个子图,分别展示了 Llama-3.1-8B-Instruct 在 WizardLM-V2-196K 数据集上和 Qwen3-VL-8B-Instruct 在 LLAVA-Instruct-150K 数据集上各层的重要性分数。蓝色实线表示预填充阶段的重要性,橙色实线表示解码阶段的重要性。图中可以清晰看到:解码阶段的重要性分数(橙色线)在深层急剧上升,远超预填充阶段;预填充阶段的重要性在深层接近零。
这是整篇论文最关键的图,它直观地展示了 POP 方法的核心理论基础——预填充和解码阶段的功能不对称性。没有这张图的支撑,深层在预填充阶段冗余这一核心论点就缺乏说服力。