剪枝校准改用模型自生成 token,LLM 解码最高提速 1.48 倍

SparseDecoding: Decoding-Aware Pruning for Accurate and Efficient LLM Inference

Qitong Wang, Xinwei Niu, Mingluo Su, Shanwei Zhao, Shiai Zhu, Huan Wang

cs.LG, cs.CL

2026-10-09

剪枝校准改用模型自生成的解码期激活,配专用 N:M SpMV 核,A100 上解码最高提速 1.48 倍,2:4 剪枝的 Qwen3 写作分近乎翻倍。

这篇在解决什么

自回归解码是 LLM 推理的访存瓶颈,长输出场景(文档起草、长文写作、代码生成)下延迟几乎全花在这里。免训练剪枝(SparseGPT、Wanda 一类)是主流省钱路线:按二阶信息砍掉一半权重,解码时从显存读的参数随之减半。这条路埋着两个坑。

一是校准数据错位。这类方法用固定语料(C4、WikiText)在 teacher forcing 下收集激活、估 Hessian,据此决定砍谁。teacher forcing 是把现成文本逐个喂进模型,每步上下文都由人给;解码时模型吃的是自己生成的 token,早期步骤的剪枝误差会改写后续上下文,激活分布越走越偏。论文测了 dense 与剪枝模型解码期的相对激活差异:所有层在前 12 步内冲到最终偏离平台的 90%,之后几百步基本不动。偏离在极早期就定型,固定语料校准从没见过这个状态。

二在硬件侧。cuSPARSELt 这类 2:4 Sparse Tensor Core 库面向 SpMM(稀疏矩阵乘矩阵,prefill 的形态),prefill 能拿 1.31 到 1.46 倍加速;batch-1 解码的线性层做的是 SpMV(稀疏矩阵乘向量),同一份 2:4 权重只有 dense 吞吐的 0.85 到 0.87 倍,比不剪还慢。

方法

SparseDecoding 两头下手。

算法侧的改动:

剪枝求解器一行没改,变的只是 Hessian 统计的对象:从 teacher-forced 分布换成模型自生成时的分布,与部署态对齐。理论上,Theorem A.1 把校准目标与解码期重建目标的最坏相对偏差刻画为归一化 Hessian 差的谱范数;实测 Qwen3-14B/32B 上,自生成校准在至少 87% 的可剪枝模块里偏差更小,中位数比值 1.81 到 3.26。

系统侧是用 Triton 写的 N:M SpMV 核,两个关键设计:

缓存策略也分了家:输入向量走 .ca 进 L1 和 L2(跨输出行复用),权重和掩码走 .cg 主要过 L2(流式读取)。

结果

写作用 WritingBench(1000 条 prompt、6 个领域、DeepSeek-V4-Flash 当裁判、1-10 分制),代码用 ClassEval(100 个 Python 类、类级 Pass@1)。所有对比统一 50% 稀疏、1M 校准 token、同一个 SparseGPT 后端,唯一变量是校准激活从哪来。

设置C4 校准SparseDecoding差距
WritingBench 2:4,Qwen3-14B1.854.18+2.33
WritingBench 2:4,Qwen3-32B2.995.31+2.32
WritingBench 2:4,Llama-3.3-70B3.103.29+0.19
ClassEval 2:4 Pass@1,Qwen3-32B9.0%24.0%+15pt
ClassEval 2:4 Pass@1,Qwen3-14B0.0%6.0%+6pt

50% 非结构化稀疏下,四个模型的 WritingBench 提升在 0.19 至 0.75 分。ClassEval 上八个「模型×稀疏度」组合全部领先 4 到 15 个百分点;2:4 下 C4 校准在 Llama-3.1-8B 和 Qwen3-14B 上 Pass@1 直接归零,SparseDecoding 能救回非零分。换 Wanda 后端、换 Pile 或 RedPajama 校准语料、换 8:16 模式,优势都保持。

速度在 A100 上用 GPT-Fast 测端到端解码吞吐(batch-1、上下文 512、50 次取中位):Llama-3.1-8B 从 96.3 到约 136.4 token/s(1.42 倍),Llama-3.3-70B 从 21.7 到 32.1(16:32 模式,1.48 倍),Qwen3-14B 1.35 倍,Qwen3-32B 1.45 倍。2:4、4:8、8:16、16:32 四种模式吞吐几乎相同,因为都留一半权重、用同一种 bitmask 元数据,访存量一致。

对照 dense 的绝对差距也要摆出来:Qwen3-32B 在 2:4 下拿 5.31,dense 是 6.48;ClassEval 从 dense 的 34% 掉到 24%。砍一半参数,质量折扣实打实存在。

为什么重要

对部署长输出服务的人,算法侧的改动几乎免费:不训练、不动求解器,只把校准激活从固定语料换成 dense 模型自己的解码,而在 2:4 这种约束最紧、最伤质量的模式下收益最大,Qwen3 两个尺寸上接近翻倍。2:4 是 Tensor Core 原生支持的格式、工程接受度最高,它此前在生成质量上的坏名声,有一部分是校准错位背的锅。

系统侧的价值独立于剪枝算法:任何 50% N:M 稀疏的权重都能用这个核跑解码。它还顺手解释了一个常见疑惑,为什么 2:4 剪枝 prefill 变快、解码反而变慢。

局限与存疑

校准要先跑 dense 模型自回归生成约 1M token,这笔一次性开销不小。收益部分来自校准 prompt 与评测任务同域(LongWriter 对写作、LiveCodeBench 对代码),论文没测任务错位时还剩多少优势;跨模型消融(拿 32B 的生成给 14B 校准)只差 0.1 分上下,说明「谁的 token」不要紧,「哪个任务的 token」要紧到什么程度没验证。速度全部在 A100、batch-1、512 上下文下测,更长上下文、更大 batch、其他 GPU 都没有数据,大 batch 场景回到 SpMM 路径,那仍是 cuSPARSELt 的地盘。WritingBench 分数由单个 LLM 裁判给出,绝对值带裁判偏好,好在两组对比共用同一裁判。论文没有单独的 limitations 章节,以上多为读者侧推断。

术语

原文与代码

相关论文

全部论文解读