AI概念与词典

模型量化是什么?INT4、FP8、GPTQ、AWQ、GGUF 与显存质量验收指南

模型量化不等于把FP16文件改成INT4。本文区分权重、激活和KVcache,讲清PTQ、QAT、GPTQ、AWQ、GGUF、FP8、显存估算、硬件兼容与同任务质量验收。

模型量化从目标硬件和任务出发选择权重量化激活量化KV缓存量化以及PTQ或QAT的决策图
本页目录
  1. 先分清:你要量化的是权重、激活还是 KV cache
  2. 量化值是怎么从浮点数得到的
  3. PTQ、动态量化、静态量化和 QAT 有什么区别
  4. 校准集怎么选:代表运行分布,而不是随便抓几段文本
  5. GPTQ、AWQ、bitsandbytes、GGUF 和 FP8 不是同一层概念
  6. 显存怎么估:先算权重,再加运行时预算
  7. 为什么量化后不一定更快
  8. 如何选择起点:按硬件和任务,不按排行榜
  9. 两条常见实践路线
  10. 路线一:Transformers 中用 bitsandbytes 做可行性试验
  11. 路线二:llama.cpp 中从高精度 GGUF 生成量化文件
  12. 质量验收:不要只看困惑度或一段聊天
  13. 推荐的九步量化发布流程
  14. 上线后监控什么:量化版本也会随运行栈变化而漂移
  15. 常见误区
  16. 常见问题
  17. INT4 模型一定比 FP16 快吗?
  18. 选 GPTQ 还是 AWQ?
  19. 量化会不会让模型更容易幻觉?
  20. 什么时候应该放弃 4 bit?
  21. 结论:量化是一个测量问题,不是文件后缀选择题

一句话回答:模型量化是把权重、激活或 KV cache 从较高精度表示转换为更低位宽或更紧凑格式,以降低存储和运行内存,并在有合适硬件内核时改善吞吐或延迟。它不是“把 FP16 改成 INT4 就自动快四倍”:真实结果取决于量化对象、分组与标度、模型架构、运行时、硬件、上下文、批量和任务质量门槛。

本文面向准备在本地工作站、边缘设备或推理服务器部署语言、视觉语言与生成模型的中文用户。重点不是列举所有算法,而是回答:显存怎么估、格式怎么匹配、质量怎么测、速度为什么可能不升反降,以及什么证据足以支持上线。资料复核日期为 2026 年 7 月 18 日

先分清:你要量化的是权重、激活还是 KV cache

量化对象 主要目的 典型写法 容易忽略
权重 缩小模型文件和常驻权重内存 W8、W4、INT4 weight-only 标度、零点、分组和打包仍占空间
激活 降低矩阵运算和中间张量开销 W8A8、FP8 W8A8 输入分布、异常值和硬件内核
KV cache 降低长上下文和并发解码内存 FP8 KV、INT8 KV 上下文长度、层数、头维度和质量变化
训练状态 降低训练或微调的参数、梯度、优化器开销 低比特优化器、量化训练 这与仅推理加载 4 bit 权重不是同一问题

torchao 量化概览把体系分为量化流程、量化张量与派生数据类型、底层原语和高效内核,并区分 weight-only、动态激活、静态量化、QAT 与量化训练。这个分层很重要:文件写着 INT4,只说明表示的一部分;如果运行时需要不断解量化到高精度,或硬件没有匹配内核,速度不一定更好。

量化值是怎么从浮点数得到的

常见仿射量化使用 scale 和可选 zero point,把一段浮点值映射到有限整数格点。概念上可写为:q = clamp(round(x / scale) + zero_point);恢复时近似为 x ≈ scale × (q - zero_point)。舍入和截断会引入误差,scale 的计算范围决定误差如何分布。

粒度 含义 优势 代价
per-tensor 整个张量共享一组参数 元数据少、实现简单 容易被异常值拉大范围
per-channel 按输出或输入通道独立缩放 通常更能适应通道差异 参数和内核更复杂
per-group 若干连续权重共享参数 在质量、空间和速度间折中 group size 影响质量与兼容
per-token / per-row 运行时按 token 或行计算参数 适应动态激活分布 增加量化计算与内核要求
非均匀或码本 使用离散码本而非等距格点 可能更贴合权重分布 查表、格式和内核兼容更严格

因此“同为 4 bit”也可能完全不同。位宽、对称或非对称、group size、哪些层保留高精度、打包布局和计算精度都应记录。只保存文件名里的 Q4、INT4 或 W4A16,无法复现实验。

PTQ、动态量化、静态量化和 QAT 有什么区别

流程 何时量化 是否需要代表性数据 适合场景
权重直接加载量化 加载或转换时 部分方法不需要校准集 快速降低权重占用、先做可行性试验
PTQ 训练完成后 静态或数据感知方法通常需要 不能重训、希望控制成本
动态激活量化 推理时按输入计算量化参数 通常不固定校准范围 输入分布变化较大但接受运行开销
静态量化 用校准阶段确定固定范围 需要贴近生产的校准样本 内核支持好且输入分布稳定
QAT 训练或微调中模拟量化误差 需要训练数据与算力 PTQ 质量不足且有训练条件

torchao 静态量化说明指出,静态流程在校准期观察输入分布以确定范围;torchao QAT 文档则使用 fake quantization 在训练中模拟量化与反量化的数值影响。QAT 可能改善量化后质量,但不是无需成本的“高级开关”。

校准集怎么选:代表运行分布,而不是随便抓几段文本

需要校准或激活统计的方法会把样本分布写进量化参数。样本过短、语言单一、没有代码或多模态输入,可能让转换在演示问题上正常、在真实请求上失真。校准集应来自允许使用的数据,并覆盖生产输入的长度、语言、格式、领域、难例与关键安全场景;不能把测试集答案泄漏进调参过程。

校准维度 应覆盖 失败信号 修正方式
长度 短问答、长文、接近目标上下文的样本 长输入质量明显下降 按生产长度分层抽样
语言与符号 中文、英文、代码、数字、表格或专业符号 某语言或数字任务退化 按真实占比与高风险任务补样
任务 生成、抽取、分类、工具参数和拒答 只对聊天问题有效 以任务合同建立分层样本
领域 目标行业术语、文档与数据形态 通用基准正常但业务失败 加入合规的领域代表样本
异常值 高幅激活、稀有 token、边界格式 少数输入引发严重错误 分析层与通道,调整粒度或保留精度
多模态 图像尺寸、数量、OCR、音频长度或帧数 只量化语言部分却宣称整模有效 分别校准并验证各组件

校准集不应与最终验收集完全相同。建议保留一套从未参与方法选择、group size 调整或层级例外设置的冻结测试集,用它比较高精度与各量化候选。如果多次试验后只报告最好结果,也要记录尝试过的配置,避免把对测试集的反复适配误当作稳定泛化。

GPTQ、AWQ、bitsandbytes、GGUF 和 FP8 不是同一层概念

名称 更接近什么 主要特点 上线前核对
GPTQ 训练后权重量化算法与相应格式生态 利用近似二阶信息补偿量化误差 模型、group size、kernel 与运行时兼容
AWQ 激活感知的低比特 weight-only PTQ 用激活统计识别重要权重通道并缩放 校准样本、具体实现和硬件支持
bitsandbytes 加载与计算后端 常用于 8 bit、4 bit 加载和 QLoRA 路线 平台支持、计算 dtype、推理速度
GGUF 模型容器与 llama.cpp 生态格式 携带张量、量化类型和元数据 架构、量化类型、版本、分片和多模态投影
FP8 低精度浮点表示与硬件计算路线 常用于支持 FP8 的新硬件训练或推理 E4M3/E5M2、缩放方案和设备内核
W4A16 / W8A8 权重与激活位宽记法 描述计算路径的一部分 没有说明算法、粒度、格式和 kernel

GPTQ 原论文把方法定义为使用近似二阶信息的一次性权重量化;AWQ 原论文则是激活感知的低比特 weight-only 方法。论文中的模型、GPU、任务与速度结果不能直接移植到你的设备。方法子页应分别解释算法,而本页负责选型和验收边界。

显存怎么估:先算权重,再加运行时预算

最粗略的权重下限是 参数量 × 位宽 ÷ 8。例如 8B 参数按理想 4 bit 裸权重约 4GB;实际文件和内存还包含 scale、zero point、未量化层、词表、张量元数据、对齐与打包。运行时还要加 KV cache、激活、临时 workspace、CUDA context、图缓存、碎片和框架开销。

量化模型运行内存由权重元数据KV缓存激活工作区运行时和安全余量共同组成
兰塞 AI 原创:量化只直接压缩部分预算。长上下文与并发下,KV cache 和运行时空间可能成为新瓶颈。
内存项 主要变量 量化是否直接降低 测量方式
模型权重 参数量、位宽、分组、保留高精度层 是,通常最明显 加载后静态占用与文件大小
KV cache 层数、KV 头、头维度、上下文、批量、dtype 仅在单独启用 KV 量化时 逐步增加上下文和并发测峰值
激活 批量、序列、层、算子和计算 dtype 取决于是否量化激活 prefill 与 decode 分开测
工作区与图缓存 kernel、编译、CUDA Graph、注意力实现 不一定 冷启动和稳定运行分别测
运行时与碎片 框架、驱动、多模型、加载卸载 通常不会按权重位宽同比下降 进程与设备监控交叉核对
安全余量 流量波动、最长请求、失败重试 不应省略 压力测试后保留明确余量

MoE 模型还要区分总参数、每 token 激活参数和实际加载权重。即使每次只激活部分专家,所有或大部分专家权重仍可能需要驻留。多模态模型也可能单独加载视觉编码器、投影器或音频组件,不能只按语言模型参数估算。下载模型时应同时保存仓库 ID、revision 或 commit hash、许可证、权重文件哈希、tokenizer 与 config,并记录转换器版本,避免后续把“同名但不同版本”当作同一基线。

为什么量化后不一定更快

现象 可能原因 验证动作
显存下降但延迟变高 解量化开销、kernel 不匹配、批量太小 检查实际 kernel 与 profiler
单用户快但吞吐不升 调度、KV、带宽或 CPU 成为瓶颈 分并发测 tokens/s 与请求完成率
prefill 改善、decode 不明显 两个阶段受不同算子与带宽约束 分别报告 TTFT 和 ITL
文件小但加载仍慢 格式转换、分片、磁盘或网络限制 记录冷启动各阶段耗时
同一格式换 GPU 后报错 算力版本、指令、kernel 或后端不支持 先查运行时硬件兼容表

vLLM 量化文档按实现列出不同 GPU、CPU 和加速器支持,并明确兼容表会随项目演进;NVIDIA TensorRT也把量化与内核调优、融合和具体部署栈联系在一起。因此“格式能下载”不等于“目标硬件能高效运行”。

如何选择起点:按硬件和任务,不按排行榜

场景 可先尝试 首要门禁 不要默认
消费级 GPU 快速试用 运行时明确支持的 8 bit 或 4 bit weight-only 能否装下、回答质量与 kernel 4 bit 一定比 8 bit 快
CPU / Apple Silicon 本地 llama.cpp 支持的 GGUF 与设备合适量化 内存带宽、线程、上下文和质量 GPU 格式可直接复用
数据中心 GPU 服务 vLLM/TensorRT-LLM 支持的 GPTQ、AWQ、FP8 或压缩格式 并发吞吐、P95、稳定性、版本支持 单请求速度代表生产吞吐
边缘视觉或语音 设备 SDK 支持的 INT8/FP16/混合精度 端到端预后处理、温度和功耗 只量化主干即可部署
质量敏感任务 先测 8 bit 或保守混合精度 业务切片与严重错误 平均困惑度能代表任务质量

如果尚未决定本地还是云端,先看本地部署、云端 API 与混合路线;需要理解参数、上下文、KV cache 与生产指标,可参考大语言模型生产评测指南。量化是部署决策的一部分,不应先于模型许可、数据边界和任务定义。

两条常见实践路线

路线一:Transformers 中用 bitsandbytes 做可行性试验

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig

model_id = "your-approved-model-revision"
config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_compute_dtype=torch.bfloat16,
)

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    quantization_config=config,
    device_map="auto",
    dtype=torch.bfloat16,
)

这段代码只说明加载路径。正式测试还要固定仓库 revision、Transformers、bitsandbytes、PyTorch、驱动与 GPU,记录实际设备映射和峰值。Transformers 量化概念指南说明其通过统一量化配置集成多个后端;不同后端的导出、微调和推理能力并不相同。

路线二:llama.cpp 中从高精度 GGUF 生成量化文件

./llama-quantize input-bf16.gguf output-q4_k_m.gguf Q4_K_M
./llama-cli -m output-q4_k_m.gguf -p "固定测试提示"

llama.cpp quantize 官方说明建议从较高精度 GGUF 转换,并警告重复量化可能严重降低质量。多模态模型还要处理编码器和 projector。下载别人制作的 GGUF 时,应保存原始模型、转换者、量化类型、imatrix、版本和哈希,不能只凭文件名信任来源。

质量验收:不要只看困惑度或一段聊天

量化模型从基线一致任务质量安全稳定性能资源到上线决策的七道验收门
兰塞 AI 原创:同一模型、提示和任务集对照,质量硬门禁先于速度收益。
测试层 要固定 主要指标 硬失败示例
基线一致 原始模型、revision、提示、采样和上下文 可复现配置 比较了不同模型或不同提示
通用质量 公开基准版本与运行方法 任务指标、困惑度仅作辅助 只挑对量化有利的基准
业务任务 真实分布、难例和切片 正确、完整、引用、格式 关键字段或数字错误增加
安全与拒答 相同攻击、越权和敏感样本 漏放、误拒、严重失败 出现新的越权或秘密泄露
长上下文 长度、位置和检索材料 召回、引用、稳定性 长材料下遗漏关键约束
性能 硬件、批量、并发、输入输出长度 TTFT、ITL、吞吐、P95 只报告峰值 tokens/s
资源 冷启动与稳定运行 文件、RAM/VRAM、功耗、失败率 压力下 OOM 或频繁重启

量化可能对少数任务、语言、长尾 token 或多模态细节影响更大。对于视觉语言模型,应分别测试 OCR、定位、图表、图像数量和视觉幻觉,可参考VLM 任务与视觉幻觉验收;具体旧模型兼容边界见CogVLM 部署核验指南。发现事实错误时,应把回答拆成可核验主张,逐项对照来源与原始高精度模型,再固定检索材料、提示和采样设置复现,以区分原模型、量化、检索或提示造成的变化。

推荐的九步量化发布流程

步骤 动作 交付物
1 定义任务、硬件、运行时、上下文与并发 任务合同和环境清单
2 冻结原始模型 revision、许可和高精度基线 来源、哈希与基线结果
3 测未量化质量、内存、延迟和吞吐 可复现基线报告
4 从保守位宽与官方支持格式开始 候选配置和生成日志
5 用代表性校准集执行 PTQ 或转换 样本来源、参数和版本
6 运行质量、安全、长上下文与切片回归 逐项差异和严重失败
7 在目标硬件测冷启动、P95、吞吐和峰值 性能与资源报告
8 灰度部署,保留高精度或旧版本回滚 放量、监控与停止条件
9 模型、runtime、驱动或硬件变化后复测 版本化回归记录

Hugging Face TGI 量化说明区分预量化权重和加载时量化,并提醒 bitsandbytes 推理可能慢于 GPTQ 或 FP16;这正说明必须在自己的运行栈测量。PyTorch 也已把量化开发重心转向 torchao workflows,旧教程里的 API 不应不加版本说明地复制到新项目。

上线后监控什么:量化版本也会随运行栈变化而漂移

量化文件本身可能不变,但驱动、runtime、kernel、调度器、提示模板、采样参数和上游模型 revision 都会改变结果。生产监控应把“量化配置”作为可追踪版本,而不是只记录一个模型名称。对同一请求同时保存原始模型 ID、量化方法、位宽、group size、计算 dtype、运行时和硬件类别,才能在退化时定位。

监控项 观察信号 触发复测或回滚
质量 关键字段错误、引用、格式、拒答和人工修改 任何硬失败或切片持续恶化
性能 TTFT、ITL、P50/P95、吞吐与队列 升级后延迟或超时超过目标
资源 VRAM/RAM 峰值、OOM、功耗、重启 安全余量不足或压力下不稳定
版本 模型、量化器、runtime、driver、kernel 任一核心组件变更
分布 输入语言、长度、任务和并发结构 明显偏离校准与验收样本
回滚 旧版本可用性、切换时间和数据兼容 演练失败时暂停继续放量

用户体验退化不一定直接表现为基准分数下降。还应记录任务完成率、返工次数、等待时间、错误恢复成功率和人工接管比例,并把无法恢复的失败设为硬门槛。若新 runtime 宣称支持某格式,但实际走 fallback 或改变采样实现,应把它当作新候选重新验收。

常见误区

误区 为什么不成立 正确做法
4 bit 就省 75% 全部显存 只按 FP16 裸权重比较,忽略元数据与运行时 按完整进程峰值测量
量化越低越划算 质量、内核和兼容可能快速恶化 用满足硬门禁的最低总成本方案
同一 GGUF 名称质量相同 原始 revision、转换、imatrix 和工具版本可能不同 保存来源、参数与哈希
困惑度变化小就可上线 无法覆盖业务事实、格式、安全和多语言切片 用真实任务与严重失败门禁
能加载就代表硬件支持 可能走慢速 fallback 或运行中失败 确认实际 kernel 并做压力测试
量化能解决所有部署问题 数据、许可、权限、检索和服务可靠性仍独立存在 把量化放回完整上线流程

常见问题

INT4 模型一定比 FP16 快吗?

不一定。权重更小可能降低内存带宽压力,但解量化、kernel、批量、上下文和硬件支持共同决定速度。应同时测 TTFT、每 token 延迟、吞吐和峰值内存。

选 GPTQ 还是 AWQ?

先看目标运行时和硬件是否原生支持,再用同一原始模型、校准样本与任务集比较质量和性能。算法论文结果不能代替你的模型、语言和任务测试。

量化会不会让模型更容易幻觉?

低精度误差可能改变 token 概率和任务表现,但不能简单写成“必然增加多少”。应对事实、推理、长上下文、引用和拒答分别回归,并与完全相同的高精度基线对照。

什么时候应该放弃 4 bit?

当业务硬门禁失败、目标硬件缺少高效内核、运行不稳定,或节省的资源不足以抵消返工和质量损失时,应回到 8 bit、FP8、混合精度、较小模型或云端方案。

结论:量化是一个测量问题,不是文件后缀选择题

正确路线是先固定任务、模型、硬件和运行时,建立高精度基线,再选择受支持的量化对象、流程和格式;随后用相同样本验证质量、安全、长上下文、延迟、吞吐和完整内存。只有通过硬门禁并在目标负载下产生净收益,量化版本才具备上线价值。交付时应把量化文件与原始模型 revision、转换命令、依赖版本、哈希和验收报告绑定保存,避免留下一个无法追溯、无法重建的孤立文件。

编辑复核与纠错记录:本文由兰塞 AI 编辑流程于 2026 年 7 月 18 日重构。旧稿只有概念定义,未区分权重、激活、KV cache、PTQ、QAT、格式、内核和运行内存,也没有来源与站内任务路径。本次依据 PyTorch/torchao、Hugging Face、vLLM、NVIDIA、llama.cpp、GPTQ 与 AWQ 原始论文重建,并增加三张原创图、显存预算和九步验收流程。本站的来源、更新与纠错原则见关于本站与编辑规范