所属: 训练推理平台层。本页边界: 怎样用近似降低模型的权重、激活或缓存成本。
#核心公式
#符号说明
| 符号 | 含义 | 单位/条件 |
|---|---|---|
| 原始浮点值与反量化后的近似值 | 浮点数 | |
| 存储或计算使用的整数码 | 整数 | |
| 量化步长/尺度 | 正实数 | |
| 表示实数零点的整数偏移 | 整数 | |
| 目标整数类型可表示的上下界 | 整数 | |
| 后文中的权重与激活量化误差 | 与原张量同形状 | |
| 蒸馏 softmax 温度 | 正实数 | |
| 温度 下教师与学生的输出分布 | 概率分布 | |
| 知识蒸馏损失、KL 散度 | 非负标量 | |
| 原权重、权重量化误差、激活量化误差 | 张量 | |
| 原计算输出与量化后输出 | 张量 | |
| 后文二阶损失近似中的 Hessian | 矩阵 | |
| 量化分组大小 | 正整数 | |
| SmoothQuant 中控制难度迁移比例的超参数 |
若发生截断,误差不再受最近邻取整的 上界约束;逐元素误差小也不保证生成质量不变。
#技术要点
- PTQ 在训练后量化;QAT 在训练中模拟量化误差。EfficientQAT 通过两阶段设计将 2-bit Llama-2-70B 量化时间压缩到单卡 41 小时。
- 权重量化主要减容量和带宽;KV 量化还面对动态分布。
- 激活量化比权重量化困难,原因是激活中存在系统性的离群值,且离群值在通道间分布高度不均匀。SmoothQuant 通过数学等价变换将量化难度从激活迁移到权重。
- 蒸馏让学生拟合教师 logits、特征或轨迹。反馈驱动的知识蒸馏通过学生反馈生成针对性训练数据。
- 结构化剪枝删除通道或层以直接减少计算;非结构化剪枝仅减少参数计数,不保证加速。
- 联合压缩(剪枝+量化)在相同压缩率下比单独量化平均提升 20% 性能。
- 误差小不保证生成质量不变。
#原理与演进
#量化的近似从哪里来
- 是量化步长, 是零点, 是整数范围;取整与截断把连续值映射到有限整数,再用 近似恢复。
- 权重的离群值会迫使整体尺度变大,普通值精度变差。按通道或按组设尺度能改善误差,但增加元数据与实现复杂度。
- PTQ 不更新或少量校准权重,成本低;QAT 在训练中模拟量化误差,让参数主动适应,训练成本更高。
- 权重低 bit 只保证存储量下降;若核函数先反量化到高精度且计算受限,延迟收益可能很小。
- 在未发生截断、使用最近邻取整时,标量误差满足下式;超出量化范围而被裁剪时,此上界不再成立。层间误差还会传播,所以单层误差小不保证最终生成稳定。
#蒸馏传递的是分布或行为
- 温度 平滑教师与学生的输出分布;学生除真实标签外,还学习“其他候选有多可能”。
- 对大模型还可蒸馏中间特征、生成轨迹或偏好;轨迹质量差会把教师错误传给学生。
#压缩技术解决不同成本
| 技术 | 降低什么 | 可能新增问题 |
|---|---|---|
| 权重量化 | 容量、权重带宽 | 离群值误差、kernel 适配 |
| KV 量化 | 长上下文缓存占用 | 注意力误差随生成累积 |
| 蒸馏 | 模型规模与单次推理成本 | 学生容量不足、长尾退化 |
| 结构化剪枝 | 层/头/通道规模 | 需重训练并验证任务退化 |
端侧为什么更在意这些取舍,见边缘约束。
#1. 量化的误差是如何累积的
对式(1)所示线性层,量化后得到式(2),于是
式(1):
式(2):
权重量化影响 ,激活量化影响 ;两者同时存在会产生交叉项。单元素 MSE 小并不意味着最终生成一致,因为后续非线性、归一化和自回归生成会传播偏差。
对称量化通常取下式,实现简洁但非对称分布利用率可能不足;非对称量化用零点适配范围,额外引入零点处理。Per-tensor、per-channel、group-wise 的粒度越细,通常误差越小、元数据和核实现越复杂。
#1.1 分组量化与元数据成本
分组量化将权重矩阵按列方向分为大小为 的组,每组独立计算量化尺度 和零点 。设权重矩阵为 ,整数权重占用 比特,缩放因子和零点额外占用 个参数。 越小,量化精度越高,但元数据占比越大:满足式(1)时元数据约占权重存储的 3%–5%;满足式(2)时可达 10%–15%。这是一个精度与存储开销之间的显式权衡,不是“越细越好”的单调关系。
式(1):
式(2):
#2. PTQ 为什么需要校准
训练后量化(PTQ)用少量代表性输入估计激活范围、离群值和敏感层。若校准集缺少长上下文、代码、专业术语或真实部署格式,得到的尺度会对这些样本失准。量化感知训练(QAT)在前向模拟取整/截断,用近似梯度更新权重;可恢复精度,但要再次训练。
路线:全精度权重 → FP16/BF16 降低带宽与容量 → INT8 PTQ 保持较低误差 → INT4 等低 bit 权重量化(离群值和分组关键)→ 激活/KV 量化(进一步降内存,但动态分布更难)→ QAT 或混合精度修补敏感部分。
| 对象 | 何时确定分布 | 主要困难 |
|---|---|---|
| 权重 | 训练完成后固定 | 离群通道、不同层敏感度 |
| 激活 | 随输入变化 | 极值、动态范围漂移 |
| KV Cache | 随历史和层变化 | 长序列误差、在线缩放代价 |
#2.1 AWQ:激活感知的通道缩放
AWQ 的核心发现是权重的重要性应该通过激活分布而非权重本身来判断。传统方法用权重的 L2 范数或绝对值判断重要性,但实验表明这种策略在 LLM 量化中效果与随机选择相当。AWQ 的计算方式为:对输入激活 ,计算每个输入通道的平均激活幅度
激活幅度最大的前 0.1%–1% 通道被视为显著通道。
AWQ 不采用混合精度(将显著通道保留 FP16),因为混合精度需要处理不同数据类型,硬件实现效率低。取而代之的是按通道缩放:对显著通道的权重乘以下式所示缩放因子,同时将输入的逆缩放 折叠到前一层。这一变换在数学上等价,不改变模型输出,但显著通道的权重量化相对误差被降低——因为权重被放大了,相同的绝对量化误差对应的相对误差更小。
从激活敏感性的统一理论框架看,AWQ 是对激活敏感性的一种近似:它假设下游梯度均匀,从而将敏感性简化为激活幅度。这一假设在多数 LLM 层中大致成立,但在某些层可能失效。
#2.2 GPTQ:二阶误差补偿
GPTQ 将量化建模为逐层的二次优化问题。对第 层的权重 和校准数据 ,目标是最小化 。该目标关于权重的 Hessian 可高效计算如下。
GPTQ 按列从左到右逐列量化。量化第 列后,其误差通过 Hessian 逆矩阵传播到所有未量化列:
这一更新规则将量化误差“补偿”到后续列中,使整体量化误差最小化。GPTQ 使用 Cholesky 分解更新 Hessian 逆矩阵,比 OBQ 的逐行删除数值更稳定。为减少数据传输,GPTQ 将更新限制在包含当前列的小块 内,块外的列在块处理完毕后一次性更新。
GPTQ 可在数小时内将 OPT-175B 和 BLOOM-176B 压缩到 3–4 bit 且精度几乎不受影响。从统一敏感性框架看,GPTQ 是对激活敏感性的另一种近似:它使用输入协方差作为 Hessian 代理,但忽略激活尺度本身的结构。
#2.3 SmoothQuant:激活量化的等价变换
激活量化比权重量化困难,根本原因是激活中存在系统性的离群值:少数通道的激活幅度远大于其他通道,且这些离群值在所有 token 上表现出一致的通道分布模式。如果直接对激活做 per-tensor 量化,离群值会拉伸量化范围,使非离群通道的有效量化位仅剩 2–3 位。
SmoothQuant 的观察是:不同 token 在通道间的变化模式是相似的。基于这一观察,SmoothQuant 在离线阶段执行数学等价的逐通道缩放变换:
其中平滑因子见式(1),超参数 控制将多少量化难度从激活迁移到权重。式(2)是均衡点,使对应通道的权重和激活具有相似的最大值,共享相同的量化难度。
式(1):
式(2):
关键工程细节:由于输入 通常由前一层(如 LayerNorm 或线性层)产生,平滑因子可以折叠到前一层参数中,不引入额外的 kernel 调用开销。这是 SmoothQuant 相比 LLM.int8() 的混合精度分解方案的核心优势——后者将离群值用 FP16 处理、其余用 INT8,硬件实现效率低。
#2.4 QAT 的工程实现
EfficientQAT 通过两阶段设计使 QAT 可行。第一阶段 Block-AP 以块为单位训练所有参数,这是首个直接在块级别训练全部参数的方法,通过扩大优化空间降低低比特场景的精度损失。第二阶段 E2E-QP 仅端到端训练量化参数(步长),考虑所有子模块之间的交互。在 Llama-2-70B 上,EfficientQAT 在单张 A100-80GB 上 41 小时获得 2-bit 模型,精度退化不到 3 个点(69.48 vs 72.41)。
QAT 的缩放律:对 268 次 QAT 实验的拟合表明,量化误差随模型规模增大而减小,随训练 token 数增加而增大,随量化分组粒度变粗而增大。这一趋势与训练后量化的观察一致:训练越充分的模型对量化越脆弱。
#3. 蒸馏为何不等于压缩文件
蒸馏改变学生参数的学习目标。硬标签损失只把正确类设为 1;教师软分布提供类别之间的相对信息。温度升高后教师输出更平, 因子常用于保持梯度量级,但不同实现的蒸馏目标需检查定义。
学生容量小,未必能同时保留教师的所有能力:高频简单任务可能维持,长尾知识、长上下文、复杂推理常先退化。只在教师生成样本上蒸馏还会继承教师错误和分布偏差。
#3.1 蒸馏方法的分类与选择
对 11 种 LLM 知识蒸馏方法的系统分析将其分为五类:散度基(拟合教师输出分布)、奖励基(用强化学习优化学生行为)、数据基(通过数据选择或生成传递知识)、任务特定(针对特定能力蒸馏)和混合方法。研究表明,最优蒸馏方法取决于模型规模、任务特性和效率需求,不存在通用最优选择。方法范式已从简单的输出分布“模仿”演进为上下文感知的“教学”范式。
反馈驱动的知识蒸馏是一个值得注意的方向:利用学生模型对教师提问,根据学生的反馈生成针对性的训练数据。这一机制让学生主动暴露其知识盲区,教师据此生成学生最需要的示范,而不是在固定数据集上被动蒸馏。这改变了蒸馏的信息流向——不再是教师单向输出,而是学生引导的知识获取。
#3.2 贝叶斯知识蒸馏
BayesKD 针对资源受限微调场景设计了三个组件:Logits 双重缩放处理教师和学生输出分布的尺度差异,知识对齐模块在特征空间中对齐教师和学生的表示,贝叶斯蒸馏优化将蒸馏损失建模为概率推断问题。这一设计使紧凑模型在有限微调预算下获得更稳定的知识迁移。
#4. 剪枝与低秩近似的区别
非结构化剪枝将部分权重置零,理论参数数减少,但普通密集核仍可能同样耗时;要加速,需要硬件支持的稀疏格式。结构化剪枝删除层、头或通道,更容易得到实际加速,却可能破坏网络功能,通常需微调恢复。
#4.1 结构化剪枝的方法演进
OOPS 采用三组件设计:异常值感知的剪枝单元选择、基于二次规划的重建、逐层蒸馏。前两个组件使 OOPS 在无需重训练的情况下即可优于现有免重训练方法;加入逐层蒸馏后,以更低计算成本超越基于重训练的方法。在 4 个 LLM 家族的 11 个模型上验证了这一设计。
AdaPruner 针对结构化剪枝中校准数据和重要性估计两个环节进行优化,引入样本感知的自适应策略。在 20% 剪枝率下实现了显著的性能保持。
PIP 采用双视角迭代剪枝:结合权重空间和激活空间两个视角的信息进行剪枝决策,参数数减少约 20% 时保留超过 85% 的原始准确率。
SlimLLM 关注剪枝效率与精度的平衡,提出了一种快速结构化剪枝方法。SPRINT 的发现具有反直觉性:选择性剪枝某些注意力头可以提升推理性能,尤其在困难任务上。这一现象提示剪枝不仅是压缩手段,也可能作为能力调节机制。
#4.2 低秩近似与 LoRA 的区别
低秩近似写作下式,理论乘法成本从 变为 ;若 不够低,额外 kernel 启动和中间张量抵消收益。它与 LoRA 不同:LoRA 常在冻结 上添加低秩更新,并未把 本身替换成低秩矩阵。
#5. 评价压缩应同时看四个量
报告权重大小、实际峰值内存、目标硬件上的吞吐/延迟、任务质量。模型文件变小不代表 KV Cache 变小;FLOPs 变少不代表在小批 decode 上更快。特定任务至少保留长上下文、少数语言、专业事实与错误案例分层评测。
#5.1 语义保持压缩率
SrCr 指标量化模型压缩与语义保持之间的权衡,解决了此前评估框架未能准确捕捉压缩模型真实退化模式的问题。基于 SrCr 的优化显示,剪枝与量化的联合配置在相同理论压缩率下比纯量化模型平均提升 20% 性能。这说明压缩技术不是相互独立的——剪枝改变了权重分布,进而影响量化的误差特征;量化后的权重结构也可能更适合进一步剪枝。
#5.2 智能体能力的压缩评估
ACBench 是首个评估压缩对 LLM 智能体能力影响的基准。初步结果显示,压缩使真实应用准确率下降 10%–15%,这一降幅通常大于标准 NLP 基准上的退化。ACBench 引入 ERank(有效秩)、Top-k 排序相关性和 Energy 三个指标来系统化分析压缩对智能体行为的影响。这一发现的方法论意义是:压缩后的模型在传统语言理解任务上可能表现良好,但在需要多步工具调用、状态跟踪和错误恢复的智能体场景中退化更严重,因为智能体能力依赖于更多样的中间表示和更长的推理链。
#6. 为什么逐权重误差最小不一定最优
模型最终关心输出变化,不是权重矩阵的逐元素距离。对小扰动 ,损失可作二阶近似:
在接近局部驻点时一阶项较小,Hessian 的高敏感方向会让相同大小的量化误差造成更大损失。实际方法通常用近似曲率、激活统计或校准样本识别敏感通道,而非显式计算巨大 Hessian。
激活敏感性统一框架将 AWQ 和 GPTQ 统一为同一敏感性度量在不同假设下的近似。激活敏感性定义为通道级扰动对损失的期望影响,通过一阶 Taylor 展开可表示为梯度加权激活的平方范数:
这一度量同时捕获激活幅度和下游误差传播两个因素。AWQ 可视为在“下游梯度均匀”假设下对敏感性的近似,GPTQ 可视为在“激活无关协方差”假设下的近似。两者覆盖了敏感性的不同侧面,因此在某些层上 AWQ 更优、在另一些层上 GPTQ 更优。
这解释了为何混合精度有意义:对敏感层保留较高位宽,对容忍误差的层使用低 bit。代价是存储格式和 kernel 更复杂,未必比统一量化更快。
#7. 压缩前后任务分布可能不同
若只用短文本校准 PTQ,长上下文时激活/KV 的值域可能变化;若只用通用聊天数据蒸馏,专业任务表现可能下降。评测应包含:校准集内、校准集外、长输入、稀有语言、结构化输出和多步推理。压缩后的“平均准确率只下降 1%”可能掩盖某个关键子群明显退化。
路线:参数量过大 → 量化降低存储 → 发现离群值/敏感层 → 分组与混合精度 → 激活/KV 进一步压缩 → 校准分布变化与生成误差成为新瓶颈。
关联概念: 存储层次解释带宽为何影响低 bit 收益;推理与 KV Cache解释缓存量化对象;分布式训练与 LoRA解释参数高效更新和量化基座的区别;端侧约束解释压缩后的实际设备目标。
#原始资料
- AWQ: Activation-aware Weight Quantization for On-Device LLM Compression and Acceleration
- GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers
- SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models
- Activation Sensitivity as a Unifying Principle for Post-Training Quantization
- EfficientQAT: Efficient Quantization-Aware Training for Large Language Models
- Scaling Law for Quantization-Aware Training
- OOPS: Outlier-aware and quadratic programming based structured pruning for LLMs
- AdaPruner: Sample-aware Adaptive Structured Pruning for LLMs
- PIP: Perturbation-based Iterative Pruning for Large Language Models
- Semantic Retention and Extreme Compression in LLMs
- ACBench: Can Compressed LLMs Truly Act?
- Survey on Knowledge Distillation for Large Language Models
- BayesKD: Bayesian Knowledge Distillation for Compact LLMs