AWQ(Activation-aware Weight Quantization,激活感知权重量化)是一种 4-bit 量化方法,其核心思路是:并非所有权重同等重要,它根据激活模式识别并保护约 1% 的关键权重,从而在不引入混合精度开销的前提下降低量化误差。官方资料称其可实现约 3 倍加速且精度损失较小。
一、适用场景 资料建议在以下情况使用 AWQ:需要 4-bit 量化且精度损失小于 5%;部署指令微调或对话模型(AWQ 泛化性更好);希望相对 FP16 获得约 2.5-3 倍推理加速;使用 vLLM 进行生产服务;拥有 Ampere 及以上 GPU(A100、H100、RTX 40xx)以支持 Marlin 内核。
资料同时给出替代方案:需要最大生态兼容性、使用 ExLlamaV2 后端或使用不支持 Marlin 的旧 GPU 时,可考虑 GPTQ;需要零校准开销(即时量化)、使用 QLoRA 微调或偏好更简单集成时,可考虑 bitsandbytes。
二、安装与要求 默认(Triton 内核):pip install autoawq 带优化 CUDA 内核与 Flash Attention:pip install autoawq[kernels] Intel CPU/XPU 优化:pip install autoawq[cpu] 环境要求:Python 3.8+、CUDA 11.8+、计算能力 7.5+。
三、主要能力与使用方式
- 加载预量化模型:使用 AutoAWQForCausalLM.from_quantized 加载,可设置 fuse_layers=True 启用融合注意力以提速,配合 AutoTokenizer 进行生成。
- 量化自有模型:使用 AutoAWQForCausalLM.from_pretrained 加载模型与分词器,配置 quant_config(zero_point、q_group_size 默认推荐 128、w_bit=4、version 可选 GEMM 或 GEMV),调用 model.quantize 后通过 save_quantized 保存。资料称 7B 模型约需 10-15 分钟,70B 模型约需 1 小时。
- 内核后端:GEMM 为默认,适合批量推理(batch size > 1);GEMV 适合单 token 生成,batch_size=1 时约快 20%,但仅支持 batch size 1,不适合大上下文;Marlin 在 A100/H100 上约快 2 倍,要求计算能力 8.0+;ExLlamaV2 支持 AMD GPU,预填充更快。
- HuggingFace Transformers 集成:可直接加载,也可通过 AwqConfig 启用融合模块(do_fuse=True、fuse_max_seq_len),但融合模块不能与 FlashAttention2 同时使用。
- vLLM 集成:vLLM 可自动检测 AWQ 模型,通过 LLM(model=..., quantization="awq", dtype="half") 使用。
- 自定义校准数据:可在 quantize 中传入 calib_data(如 wikitext 或自定义字符串列表)、max_calib_samples、max_calib_seq_len,样本越多精度通常越好。
- 多 GPU 部署:通过 device_map="auto" 与 max_memory 自动跨 GPU 切分。
四、性能与精度(资料给出的基准) 显存降低:Mistral 7B 从 14 GB 降至 5.5 GB(2.5 倍);Llama 2-13B 从 26 GB 降至 10 GB(2.6 倍);Llama 2-70B 从 140 GB 降至 35 GB(4 倍)。 RTX 4090 推理速度:Mistral 7B GEMM 预填充 3,897 tok/s、解码 114 tok/s、显存 5.55 GB;TinyLlama 1B GEMV 预填充 5,179 tok/s、解码 431 tok/s、显存 2.10 GB;Llama 2-13B GEMM 预填充 2,279 tok/s、解码 74 tok/s、显存 10.28 GB。 困惑度精度:Llama 3 8B 从 8.20 变为 8.48(+3.4%);Mistral 7B 从 5.25 变为 5.42(+3.2%);Qwen2 72B 从 4.85 变为 4.95(+2.1%)。
五、支持模型 资料称支持 35+ 架构,包括 Llama 2/3、Code Llama、Mistral、Mixtral、Qwen、Qwen2、Qwen2.5-VL、Falcon、MPT、Phi、Yi、DeepSeek、Gemma,以及多模态模型 LLaVA、LLaVA-Next、Qwen2-VL。
六、常见问题 量化时 CUDA 显存不足:可减小 max_calib_samples(如 64)。推理慢:启用 fuse_layers=True。AMD GPU:使用 ExLlama 后端。
七、弃用说明 资料明确提示 AutoAWQ 已正式弃用。新项目可考虑 vLLM llm-compressor(https://github.com/vllm-project/llm-compressor)或面向 Apple Silicon Mac 的 MLX-LM。已有的量化模型仍可继续使用。
八、参考资料 论文:AWQ: Activation-aware Weight Quantization(arXiv:2306.00978),MLSys 2024 最佳论文;GitHub:https://github.com/casper-hansen/AutoAWQ;MIT Han Lab:https://github.com/mit-han-lab/llm-awq;模型:https://huggingface.co/models?library=awq。
九、操作流程与限制 资料附带智能体操作流程:检查环境(GPU 类型、显存、驱动/CUDA 版本、框架版本、数据集位置与大小);确认输入格式、标识符与参数;先做小规模冒烟测试;执行完整任务;在留出数据上验证指标并与基线对比,记录随机种子、配置与硬件;报告运行内容与不确定项。同时强调完整性规则:不得编造结果、参数、标识符、引用或统计;无日志不得声称训练结果;版本相关细节可能过时,应以所安装版本的官方文档为准;涉及费用、共享 GPU、云配额、个人或患者数据以及不可撤销操作前应先询问。