大模型量化精度全景图:从 FP32 到 1-bit,精度损失到底有多大?
区分 FP8、INT8、INT4、NF4 的权重、激活与 KV 量化,解释显存预算、加速条件和校准差异,并给出准确率、PPL 与业务验收的可复现评估方法。
NOTE
核心速览 (TL;DR)
- 精度与显存数学:从纯权重(Weight-Only)量化(AWQ, GPTQ)到全量矩阵与激活值量化(FP8, SmoothQuant),精确推导每种量化模式下的显存占用与访存带宽节省。
- 显卡档位实测红线:70B 模型 4-bit 纯权重已占用 35GB,必须预留 KV Cache 与上下文空间,单卡无法在 24GB~32GB 上裸跑;RTX 3090/4090 真实物理显存为 24GB。
- 实战指南:配合 量化实战动手实验 与 DeepSeek MLA 权重体积核算,实现精度无损的低成本落地。
先区分权重、激活与缓存
量化把部分数值映射到更少的表示位数,目标是降低显存、访存或计算开销;它不是一个能承诺固定“智力损失百分比”的压缩开关。实际执行步骤见 量化实战指南。
| 标记 | 含义 | 主要收益与条件 |
|---|---|---|
| W4A16/W8A16 | 低位权重,较高精度激活 | 省权重访存;速度取决于反量化融合和计算负载 |
| W8A8 | 权重与激活均采用 8-bit 路径 | 对应硬件和算子可能提高矩阵乘吞吐 |
| FP8 KV | 历史键值使用低精度表示 | 省缓存;独立于权重量化,需要验证 scale 和任务质量 |
| NF4+LoRA | 量化冻结基座,训练较高精度适配器 | 降低微调资源,但不等于全模型采用 NF4 运算 |
即使称为 W8A8,也通常有归一化、路由、累加或输出等保留较高精度的部分;应查具体 checkpoint 和 kernel,不能把全部计算描述成同一位宽。
一、INT8、FP8 和 BitsAndBytes 的区别
INT8 通常依赖缩放系数把数值映射到有限整数范围;FP8 带指数,但仍需合适的缩放和数值范围处理。动态缩放可以不使用离线校准集,静态量化则可能需要代表性样本;“FP8 全部零校准、任何任务损失小于 1%”不是通用保证。
BitsAndBytes 的 LLM.int8() 对主要矩阵采用 INT8 路径,对离群值采用较高精度计算;离群维度由阈值与输入决定,不是固定 0.1%。其机制见 官方说明。不要与仅压缩权重的 W8A16 混用。
二、GPTQ、AWQ 与 GGUF
GPTQ 和 AWQ 是量化方法;GGUF 是模型文件格式,能承载多种量化类型。比较时应写完整方法、group size、混合精度布局和运行后端,而不是给三者一个不受硬件约束的“最快/最准”排名。
仅权重量化在小 Batch、访存受限的 Decode 中可能明显加速,因为权重读取更少;在大 Batch 下收益可能被反量化和计算开销抵消。实际结论要在相同模型、长度和并发下测量。AWQ 论文同时讨论量化与配套推理实现,不能把算法压缩率直接当成所有引擎的加速比。
三、按显存估算,而不是按参数名猜
原始权重下界 = 参数量 × 位数 / 8
所需显存 = 权重 + scales/元数据 + KV/循环状态
+ 激活/通信/图捕获/运行时开销 70B 的纯 4-bit 权重约 35GB,通常无法完整放进 24~32GB 单卡并留出工作区;双卡切分或 CPU Offload 是不同方案。24GB 单卡运行约 32B 的 4-bit 模型也要检查实际文件大小、上下文与可用显存,不能只看“16GB 权重下界”。RTX 3090 为 24GB,4080 常见配置为 16GB,3060/4060 不同型号容量需要分别查询。
| 资源条件 | 合理的起点 |
|---|---|
| 约 8~12GB 可用显存 | 从较小模型与短上下文开始,按实际占用提高规模 |
| 约 16~32GB | 核对 4-bit 7B/14B/32B 的文件与缓存预算,逐项验证 |
| 多 GPU | 计入 TP 通信、切分不均与重复缓存,不能简单相加显存 |
| CPU/统一内存 | 同时检查内存容量、带宽、模型支持与可接受延迟 |
不同硬件对 FP8、FP4、整数指令的支持不同,框架是否调用高效 kernel 也不同。部署前应核对引擎版本与支持矩阵,见 vLLM 服务指南。
四、精度损失应如何报告
保持同一模型 revision、tokenizer、数据集与推理设置,对照未量化基线。PPL 是 exp(平均负对数似然),依赖语料、切词和评测窗口,不能把 PPL 的相对变化称作“智商下降”。
例如准确率从 70.24% 变为 69.64%,差值是 0.60 个百分点,相对下降约 0.85%;两种口径不能混写。上线阈值应由业务定义,没有统一的 PPL 增量 0.1~0.2 或准确率掉点 1% 工业标准。
| 记录字段 | 示例内容 |
|---|---|
| 版本与方法 | revision、W/A/KV 精度、group size、校准数据 |
| 质量 | 任务通过率、引用/数值错误、格式失败与重复运行区间 |
| 速度 | TTFT、TPOT、目标 SLA 下吞吐;固定并发及输入/输出长度 |
| 容量 | 每 Rank 权重、缓存与峰值,而非仅统计模型文件 |
方法见 业务评估指南。表格应附原始结果,不能使用“某达标线”“完美通过”替代数值。
五、NF4、低位训练与新硬件格式
NF4 根据近似正态分布设计量化级别,但真实权重并非完美高斯;QLoRA 仍需量化尺度与较高精度适配器,详见 QLoRA 论文。
BitNet 类三值模型依赖相应训练或适配方法,不能把任意现有 FP16 checkpoint 直接压成三值并承诺无损。MXFP4 与 NVFP4 的块缩放和硬件路径也不同;不能只凭“4-bit”名称互换模型文件。选择格式要同时验证质量、容量和算子支持。
常见问题 (FAQ)
Q1: 8-bit 是否一定无损,4-bit 是否一定损失 1%~5%?
不是。模型、方法、数据和任务都会改变结果,尤其要单独评估代码、数学及长上下文。
Q2: 仅权重量化为什么可能变快?
访存受限时,少读权重可降低耗时;反量化融合、batch 和硬件决定收益,不保证固定倍数。
Q3: FP8 权重与 FP8 KV 是否应该一起打开?
分别验证再组合。KV 量化有独立的尺度和后端条件,不能从权重量化表现推导缓存质量。
Q4: 如何选择微调精度?
先根据基座、显存与训练栈选择 BF16/FP16 或 QLoRA,再验证稳定性。BF16 的范围较大不等于永远不会溢出,见 微调指南。