一、算法总览1. AWQActivation-aware Weight Quantization激活感知权重量化定位仅权重量化Weight-only的后训练量化PTQ算法专为大语言模型LLM设计核心是激活引导权重保护。核心思想权重重要性由激活分布而非权重本身决定对与大激活值关联的 “显著权重通道” 做缩放保护再统一量化最小化关键信息损失。量化方案主流W4A16权重 4bit激活 FP16硬件友好适配边缘 / 端侧部署。2. GPTQGPT QuantizationGPT 专用权重量化定位基于二阶信息Hessian 矩阵的后训练量化算法专门针对 GPT 类 Transformer 模型优化核心是逐层最小化输出误差。核心思想将量化视为优化问题通过Hessian 矩阵建模权重对输出的影响分块量化 误差补偿让量化误差尽可能不扩散。量化方案主流W4A16是当前工业界最成熟的 4bit 量化方案之一。二、AWQ 算法详解1. 核心原理1关键洞察LLM 中仅0.1%~1%的权重对性能至关重要这些权重对应输入激活值幅度大的通道直接量化会导致严重精度损失需优先保护。2权重重要性计算通过激活分布评估权重通道重要性公式Iij​∣Wij​∣⋅E[∣Xj​∣]Wij​权重矩阵元素Xj​第 j 个输入激活通道E[∣Xj​∣]激活通道 j 的平均绝对值校准数据统计3通道缩放保护核心创新对高重要性通道乘以缩放因子 s放大降低量化相对误差推理时激活反向缩放保证数学等价。优化目标最小化量化前后输出误差mins​∥WX−(s⋅clip(W/s,−Qmax​,Qmax​))X∥22​对低重要性通道直接做低比特4bit量化。2. 实现步骤伪代码def awq_quantize(weight, activation, w_bit4, protect_ratio0.01): # 1. 统计激活分布计算权重重要性 act_scale torch.mean(torch.abs(activation), dim0) # 按通道平均激活 weight_importance torch.abs(weight) * act_scale # 重要性分数 # 2. 筛选需保护的显著通道前 protect_ratio 比例 threshold torch.kthvalue( weight_importance.flatten(), int((1 - protect_ratio) * weight.numel()) )[0] protect_mask weight_importance threshold # 3. 按通道计算缩放因子保护通道用高精度缩放 scale torch.where( protect_mask, torch.max(torch.abs(weight), dim1)[0] / (2 ** (w_bit 2) - 1), # 高精度 torch.max(torch.abs(weight), dim1)[0] / (2 ** w_bit - 1) # 标准4bit ) # 4. 缩放量化反量化模拟推理 scaled_weight weight / scale quant_weight torch.round(torch.clamp(scaled_weight, -1, 1)) dequant_weight quant_weight * scale return dequant_weight, scale3. 核心特点无需反向传播仅前向统计激活量化速度快、泛化性强。通道级保护仅保护少量关键通道不影响硬件并行效率。边缘友好量化后模型显存占用降 75%推理加速 3 倍 适配 Jetson、手机等端侧设备。三、GPTQ 算法详解1. 核心原理1优化目标最小化量化前后模型输出的均方误差而非权重误差公式minW^​∥WX−W^X∥F2​s.t. W^∈Zq​W原始权重FP16W^量化后权重INT4X校准数据激活∥⋅∥F​Frobenius 范数2二阶信息Hessian 矩阵用Hessian 矩阵 HXTX建模权重对输出的影响量化时优先处理对输出影响大的权重减少误差扩散。3分块量化 误差补偿核心权重矩阵按列块如 128 列迭代量化。每块量化后计算量化误差并通过Hessian 逆矩阵将误差补偿到未量化权重保证整体输出误差最小。优化Cholesky 分解加速 Hessian 逆计算延迟批量更新提升 GPU 效率。2. 实现步骤伪代码def gptq_quantize(weight, activation, w_bit4, block_size128): # 1. 计算 Hessian 矩阵并做 Cholesky 分解 H activation.T activation H_inv torch.cholesky_inverse(torch.cholesky(H 1e-6 * torch.eye(H.shape[0]))) # 2. 按列块迭代量化 quant_weight weight.clone() for i in range(0, weight.shape[1], block_size): # 取当前块 block quant_weight[:, i:iblock_size] # 标准 4bit 量化 scale torch.max(torch.abs(block), dim1)[0] / (2 ** w_bit - 1) quant_block torch.round(torch.clamp(block / scale, -1, 1)) * scale # 计算量化误差 error quant_block - block # 误差补偿传播到未量化列 quant_weight[:, iblock_size:] - error H_inv[i:iblock_size, iblock_size:] # 更新当前块为量化结果 quant_weight[:, i:iblock_size] quant_block return quant_weight3. 核心特点精度极高4bit 量化下几乎无损LLaMA-7B 量化后 PPL 仅上升 0.1~0.3。逐层优化误差局部补偿不影响其他层稳定性强。生态成熟支持 AutoGPTQ、ExLlama 等工具适配主流 LLMLLaMA、Qwen、Llama 2。四、AWQ vs GPTQ 核心对比对比维度AWQ激活感知GPTQ二阶优化核心理念激活引导保护关键权重通道二阶误差建模最小化输出损失信息来源激活分布一阶统计Hessian 矩阵二阶信息量化粒度通道级保护 分组量化列块迭代 误差补偿校准数据少100~512 样本中等需代表性数据计算开销低仅前向高Hessian 计算 补偿量化速度快7B 模型约 30min慢7B 模型约 1~2h4bit 精度极高极低比特更优极高成熟稳定推理速度快vLLM 原生支持快CUDA 内核优化适用场景边缘 / 端侧、多模态、动态输入云端部署、追求极致精度生态支持快速成长vLLM、SGLang成熟AutoGPTQ、ExLlama五、实战要点与避坑指南1. AWQ 实战要点校准数据用 100~500 条通用文本如 Wiki、书籍覆盖模型常见输入场景。保护比例默认0.1%~1%过大影响压缩率过小精度下降。推理优化用vLLM原生支持 AWQ推理速度比 GPTQ 快 10%~20%。硬件适配优先 NVIDIA GPU、Apple Silicon、昇腾 NPU端侧部署首选。2. GPTQ 实战要点校准数据需高质量、代表性数据如模型训练数据子集否则精度下降明显。块大小默认128平衡精度与速度小模型可用 64大模型可用 256。工具选择用AutoGPTQ一键量化支持加载预量化模型推理用ExLlama内核加速。显存优化量化时需足够显存7B 模型需 16GB可分块量化减少内存占用。3. 避坑指南AWQ 坑激活统计错误校准数据过少 / 分布偏差导致重要性计算不准。缩放因子溢出保护通道缩放过大导致量化后数值溢出需加 clip 约束。GPTQ 坑Hessian 数值不稳定加1e-6 正则项避免矩阵奇异。误差补偿过度未量化权重被过度修正导致模型发散需控制补偿幅度。六、总结与选型建议1. 算法总结AWQ轻量、激活感知、端侧友好低比特3/4bit精度更优量化快、适配边缘设备。GPTQ精准、二阶优化、生态成熟云端部署首选4bit 量化几乎无损稳定性极强。2. 选型建议选AWQ部署在边缘 / 端侧Jetson、手机、Mac。做3bit/4bit 极低比特量化。追求量化速度快速迭代模型。选GPTQ云端 GPU 部署追求极致精度。用成熟工具链AutoGPTQ、ExLlama。量化经典 LLMLLaMA、Llama 2、Qwen。