跳转至

AWQ

AWQ(Activation-aware Weight Quantization,自适应激活权重量化)是一种针对大语言模型(LLM)的高效量化技术。它的核心目标是在大幅压缩模型体积(通常将 16 位浮点数转为 4 位整数)的同时,几乎不损失模型的推理精度。

简单来说,AWQ 认为模型中的权重并不是“生而平等”的,某些权重对模型表现至关重要,而大部分则相对普通。


1. 核心原理:并非所有权重都重要

在传统的量化(如 RTN,Rounding-to-Nearest)中,所有权重都被一视同仁地压缩,这会导致模型处理某些关键信息时出现严重偏差。

AWQ 发现了一个关键点:权重的显著性(Salience)是由其对应的“激活值”(Activation)决定的。

  • 激活值: 模型处理数据时产生的中间状态。
  • 观察发现: 只有约 1% 的权重通道对应着较大的激活值。如果强行量化这 1% 的权重,精度就会崩塌;而剩下的 99% 即使量化得狠一点,影响也不大。

2. AWQ 是如何运作的?

AWQ 并没有采用昂贵的“重训练”(Quantization-Aware Training)方法,而是通过一种巧妙的缩放(Scaling)机制:

  1. 寻找显著权重: 通过少量的校准数据,观察哪些权重的输入激活值较大。
  2. 空间换精度: 为了保护这 1% 的关键权重,AWQ 会在量化前对它们进行“放大”处理。
  3. 自动缩放: 这种放大不是拍脑袋定的,而是通过搜索一个最优的缩放因子(Scale factor),使得量化误差降到最低。
  4. 硬件友好: 与那些将关键权重保持 FP16 格式的混合精度方法不同,AWQ 在缩放后会将所有权重统一转为 INT4。这样在计算时,硬件依然可以跑整齐的矩阵运算,效率极高。

3. AWQ 的优势

特性 传统量化 (RTN) AWQ 量化
显存占用 显著降低 显著降低(约减少 70%)
推理精度 损失较大,模型变“笨” 极低损失,接近原版 FP16
硬件加速 取决于实现 非常友好,尤其在 NVIDIA GPU 上加速明显
通用性 较强 极强,适用于各类 Llama、Qwen、Mistral 模型

4. 为什么开发者喜欢用 AWQ?

如果你在本地部署模型(例如使用 vLLM、AutoAWQ 或 LM Studio),AWQ 通常是首选方案,原因如下:

  • 省显存: 一个 32B 的模型原始需要约 64GB 显存,量化后不到 20GB 就能跑起来,普通的消费级显卡也能胜任。
  • 快: 因为数据变小了,内存带宽压力减轻,推理速度(Tokens per second)通常会有显著提升。
  • 不折腾: 它不需要对模型进行重新微调,量化过程非常快。

总结

AWQ 的本质就是“保重点”。 它通过观察数据流向,识别出那 1% 最重要的权重并给予特殊照顾(缩放),从而实现了在极小体积下保留大模型的绝大部分“智商”。

比喻一下:

普通量化:全员降薪

AWQ:核心员工高薪,其余降薪