量化(Quantization)
量化把模型变瘦
亦作、亦称:Quantization
量化(Quantization)是一类将神经网络权重或激活值从高精度数值格式压缩为低精度格式的技术,核心目标是在精度损失可控的前提下大幅降低显存占用与推理延迟。随着大型语言模型(LLM)动辄数百亿参数,量化已成为在消费级 GPU 乃至边缘设备上部署模型的必要手段。
概述
现代深度学习训练通常使用 32 位浮点(FP32)或 16 位浮点(FP16/BF16)精度存储参数。以 FP16 为基准,一个 70B 参数的模型需要约 140 GB 显存,远超单卡乃至多卡消费级配置。量化将权重映射到 INT8(8 位整数)或 INT4(4 位整数)等格式,相同参数量的模型显存占用可降至原来的 1/2 到 1/4,同时整数运算在多数硬件上吞吐更高。代价是引入了量化误差(quantization error),可能导致下游任务的准确率或生成质量出现不同程度的下降。
工作原理
量化的基本操作是将一个浮点值域 [x_min, x_max] 线性映射到整数值域,需要确定缩放因子(scale)和零点(zero point)两个关键参数。对称量化(symmetric)将零点固定为 0,非对称量化(asymmetric)则允许零点偏移,后者对分布不均匀的张量更友好。
量化可以在权重层面(per-tensor 或 per-channel)进行,per-channel 粒度更细,精度通常更高但计算稍复杂。
推理时,矩阵乘法在整数域完成,结果再反量化(dequantize)回浮点参与后续计算;部分框架也会在运算前将权重动态还原为浮点,称为权重量化(weight-only quantization)。
类型与变体
按量化时机可分为训练后量化(Post-Training Quantization,PTQ)和量化感知训练(Quantization-Aware Training,QAT):PTQ 无需重新训练,流程简单,是 LLM 部署中最常用的路线;QAT 在训练循环中模拟量化误差,精度更高但成本相当于重新微调一遍模型。
按精度位宽可分为 INT8、INT4、甚至 2-bit 或混合精度方案。
针对 LLM 的 PTQ 方法中,GPTQ(2022)通过逐层二阶优化将权重量化到 INT4,同时将误差补偿到未量化权重;AWQ(Activation-aware Weight Quantization,2023)则依据激活值的重要性对显著权重通道加以保护;GGUF 格式(llama.cpp 生态)将多种 k-quant 方案打包,方便在 CPU 和移动端部署。
应用场景
量化最直接的用途是在资源受限的环境下运行大模型:一张 24 GB 显存的消费级 GPU 运行 INT4 量化的 70B 模型已成为可能,而 FP16 至少需要 4 张 A100。边缘推理场景(移动端、嵌入式、IoT)对延迟和功耗极为敏感,量化是其核心优化手段之一。在云端批量推理服务中,INT8 量化可显著提升单卡吞吐量(tokens/s),从而降低单位推理成本。此外,量化也是多模态模型、视频生成模型等参数量持续膨胀背景下的主流瘦身策略。
局限与误区
「量化不损精度」是常见误解:虽然 INT8 在通用语言任务上的精度损失往往在可接受范围内,但 INT4 及更低位宽对数学推理、代码生成等需要精确计算的任务影响更为显著。不同模型架构和任务对量化的敏感程度差异很大,必须在目标业务集上做精度回归测试,而不能仅凭 perplexity(困惑度)等通用指标判定。此外,「显存降了」并不等于「速度一定提升」:权重量化(weight-only)减少了显存带宽瓶颈,但若硬件不原生支持 INT4 矩阵运算,实际吞吐改善有限。混合精度方案(如对关键层保留 FP16)是兼顾性能与精度的务实选择,但会使部署管道复杂化。
与相邻概念的区别
量化与剪枝(Pruning)、知识蒸馏(Knowledge Distillation)同属模型压缩(Model Compression)的主要方向,但机制不同:剪枝通过去除冗余权重或神经元减少参数数量,得到稀疏模型;蒸馏则用小模型学习大模型(教师模型)的输出分布,本质上是换了一个轻量学生模型;量化不改变参数数量或模型结构,只改变数值的存储精度。三种技术可以叠加使用,例如先蒸馏再量化,以获得更大的压缩比。量化也常与推理优化(如 Flash Attention、连续批处理)配合,共同构成生产部署的优化栈。
发展脉络
定点量化在传统嵌入式信号处理中早有应用;深度学习领域,Jacob 等人 2018 年发表的论文将量化感知训练系统化,推动了移动端模型(如 MobileNet)的 INT8 部署。
LLM 兴起后,权重体量带来的部署压力催生了一批专门针对 Transformer 的 PTQ 方法:GPTQ(2022)、LLM.int8()(bitsandbytes,2022)、AWQ(2023)在学术界和工程实践中获得广泛采用。
llama.cpp 项目通过 GGUF 格式将多种量化方案标准化,使 LLM 的 CPU 本地运行成为现实,极大降低了普通用户的硬件门槛。目前,4-bit 量化已成为开源 LLM 社区的事实标准之一。
常见误解
日常交流中容易听到的简化说法,未必准确,但能帮助理解误解从何而来。
- 「把模型变瘦」
- 「大模型圈高频词」
- 「跟 量化 是一回事吗」
相关术语
和本术语关联紧密的其他词条,便于串联理解。
🎯 考点练习
含该术语的高频面试题,含标准答案与追问。
- 中级概念高频查看详解 →
大模型量化(INT8/INT4)是如何压缩模型的?有什么代价?
量化把 FP16 权重映射到低比特整数,靠 scale/zero-point 还原,显著降显存与带宽,代价是精度损失,需 GPTQ/AWQ 等算法补偿。
- 高级概念查看详解 →
KV Cache 量化如何进一步降低显存占用?
把缓存的 K/V 从 FP16 降到 INT8/INT4/FP8,显存随上下文线性下降;需 per-channel/group 缩放控误差。
- 高级概念高频查看详解 →
QLoRA 相比 LoRA 有哪些关键改进?
QLoRA = 4-bit NF4 量化基座 + LoRA 适配器 + 双量化 + 分页优化器,单卡即可微调大模型。
- 初级场景查看详解 →
如何把开源大模型在本地 / 内网跑起来?
用 Ollama/llama.cpp/vLLM 加载开源权重,按显存选模型大小与量化,适合隐私离线场景。
延伸阅读
从知识库精选 2 篇文章,帮助深入理解该术语。
外部参考
维基百科:查看「量化」词条本页内容为本站原创撰写;维基百科链接仅作延伸参考。
