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% 的关键权重,AWQ 会在量化前对它们进行“放大”处理。
- 自动缩放: 这种放大不是拍脑袋定的,而是通过搜索一个最优的缩放因子(Scale factor),使得量化误差降到最低。
- 硬件友好: 与那些将关键权重保持 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:核心员工高薪,其余降薪