模型量化有两个主流方案W4A16权重 4bit激活 fp16和 W8A8权重和激活都 8bit。在昇腾NPU上W4A16 显存省最多W8A8 速度最快。选哪个取决于你的瓶颈在显存还是速度。W4A16GPTQ/AWQ权重压缩到 4bit激活保持 fp16。推理时把权重反量化回 fp16 再算 GEMM。fromatbimportLLM,QuantConfig modelLLM(meta-llama/Llama-2-7b-hf,devicenpu:0,quantizew4a16,# 权重 4bit激活 fp16quant_configQuantConfig(group_size128,# 每 128 个权重共享一个缩放因子desc_actFalse,# 不量化激活保持 fp16))优点显存占用最小Llama2-7B 从 14GB 降到 4GB精度损失小group_size128 时约 0.3-0.8%激活保持 fp16Attention 部分无精度损失缺点GEMM 前需要反量化增加 5-10ms 延迟4bit GEMM 的 Cube 利用率只有 60-70%不齐整W8A8SmoothQuant权重和激活都量化到 int8。GEMM 直接用 int8 计算不需要反量化。fromatbimportLLM,QuantConfig modelLLM(meta-llama/Llama-2-7b-hf,devicenpu:0,quantizew8a8,# 权重和激活都 int8quant_configQuantConfig(calib_dataloadercalib_dataloader,# W8A8 需要校准数据集smooth_quantTrue,# 使用 SmoothQuant 算法))优点推理速度最快GEMM 吞吐是 fp16 的 1.8-2.0×不需要反量化int8 GEMM 直接出结果Cube 利用率高int8 计算齐整缺点显存节省不如 W4A16Llama2-7B 约 7GBvs W4A16 的 4GB精度损失较大约 1.0-2.0%激活量化引入需要校准数据集多一个步骤性能对比Llama2-7BAtlas 800I A2单卡量化方案显存 (GB)Prefill 延迟 (ms)Decode 速度 (tok/s)精度损失fp16基准14353,2000%W4A164422,8000.3-0.8%W8A87225,8001.0-2.0%W4A1670B4 卡361201,8000.5-1.0%W8A870B4 卡52753,2001.5-2.5%选择建议场景推荐方案理由显存受限单卡跑 13B/70BW4A16显存省最多精度损失可接受速度优先在线服务W8A8速度快 80%延迟低 40%精度敏感评测、翻译W4A16精度损失小 50%离线批量推理W8A8吞吐高不关心延迟多模态模型W4A16激活保持 fp16图像 token 无精度损失W4A16 的 Group Size 调优Group size 越小精度越高但显存开销越大Group Size额外显存 (7B)精度损失推荐场景321.5GB0.1-0.3%精度极度敏感640.75GB0.2-0.5%通用推荐1280.4GB0.3-0.8%平衡选择2560.2GB0.5-1.2%显存极度受限通用场景选 group_size128精度损失 1%额外显存只有 400MB。W4A16 和 W8A8 各有优势要显存省选 W4A16要速度快选 W8A8。在昇腾NPU上W8A8 的 int8 GEMM 有硬件加速速度提升明显。仓库在这里https://atomgit.com/cann/ATB