在大模型落地部署过程中,显存占用过高、推理速度慢是最核心的两大痛点。而量化技术是解决这些问题的关键手段,它能在几乎不损失模型效果的前提下,大幅压缩模型体积、降低显存开销、提升推理效率。

很多开发者对量化存在核心误区:不清楚权重与激活量化的差异、不理解"推理需要反量化却依然能省显存"的底层逻辑。本文将从零梳理LLM量化的完整原理、分类、落地流程,精准解答行业高频疑问。

一、量化核心定义与本质

1.1 基本概念

LLM量化是主流的模型后压缩技术,核心逻辑是将模型原生的高精度浮点数值(FP32/FP16/BF16),通过线性映射规则转换为低位宽整数(INT8/INT4/INT2)。

该过程为可逆压缩,包含两个核心操作:

  • 量化:浮点数值转为低位整数,用于压缩存储与高效计算

  • 反量化:低位整数临时还原为浮点数值,仅用于模型矩阵运算

量化的核心收益:用可控的微小精度损耗,换取更低的显存占用、更快的推理速度,让超大模型可以在消费级硬件上部署运行。

1.2 核心数学原理

LLM量化以线性映射为基础,工业界主要分为对称量化与非对称量化两种方案,适配不同量化对象。

1.2.1 对称量化(主流权重量化)

无零点偏移,数值分布以0为中心,完美适配模型权重分布,是GPTQ、AWQ等主流权重量化方案的默认规则。

缩放系数:$scale = \frac{\max(|x_{float}|)}{2^{b-1}-1}$

量化公式:$x_{int} = Round(Clip(\frac{x_{float}}{scale}))$

反量化公式:$\hat{x}_{float} = x_{int} \times scale$

其中:$b$ 代表量化位宽,Clip为截断操作,用于限制数值范围、避免溢出。

1.2.2 非对称量化(激活量化专用)

引入零点偏移(zero_point),适配正负分布不均、动态范围大的激活值,是W8A8全量化方案的核心原理。

量化公式:$x_{int} = Round(\frac{x_{float}}{scale}) + zero\\_point$

反量化公式:$\hat{x}_{float} = (x_{int} - zero\\_point) \times scale$

1.3 量化误差核心来源

量化的精度损耗主要来自三类误差,也是各大量化算法优化的核心方向:

  • 舍入误差:浮点数值缩放后四舍五入为整数,产生细微精度丢失

  • 截断误差:超出统计极值的极端数值被强制截断,丢失细节信息

  • 分布适配误差:全局缩放系数无法精准适配单层、单通道的数值分布差异

二、量化两大核心分类(核心差异详解)

根据量化对象的不同,LLM量化分为仅权重量化权重+激活全量化两类,二者的设计目标、适用场景完全不同,是理解量化的关键。

2.1 仅权重量化(W4/W8,工业界主流)

量化对象:仅压缩模型静态权重(Attention、FFN等网络层参数)

运行状态:模型权重永久以INT4/INT8压缩格式驻留显存,推理过程中的中间激活全程保持FP16/BF16高精度

核心目标:降低模型常驻显存占用,解决大模型加载OOM问题

模型权重是推理全程占用显存的最大模块,INT4量化可将显存占用压缩至原生FP16模型的1/4,同时减小模型文件体积、降低显存带宽读取压力,是目前通用场景的首选方案。

代表方案:GPTQ、AWQ、GGUF Q4_K/Q5_K

2.2 权重+激活全量化(W8A8)

量化对象:同时量化模型静态权重与推理过程中的动态中间激活值

运行状态:权重固定以INT8格式存储,每一层的输入激活在推理时实时量化为INT8参与计算

核心目标:解决长文本推理显存爆炸问题、释放硬件整型算力

  1. 激活值随序列长度、批次大小线性增长,长上下文场景下,激活显存占用会远超权重显存,INT8量化可直接将中间张量显存减半;

  2. GPU INT8整型计算单元的算力远高于浮点单元,通过激活量化匹配整型计算通路,可显著提升推理速度。

代表方案:LLM.int8、SmoothQuant

三、LLM量化完整落地流程

量化落地分为离线量化压缩在线推理执行两个阶段,离线仅需执行一次,在线推理为每次生成Token的常规流程。

3.1 离线量化阶段(模型压缩)

  1. 模型加载:加载原生FP16/FP32高精度预训练大模型;

  2. 数据校准:采用少量代表性文本作为校准集,无梯度前向推理,逐层统计权重、激活的最大/最小值,计算最优scale和zero_point,最大限度降低量化误差;

  3. 权重编码压缩:基于校准参数,对浮点权重进行缩放、截断、取整,转换为低位整数,同时保存量化所需的scale、zero_point、分组信息等元数据;

  4. 分层精度保留:Embedding、LM Head、LayerNorm等敏感网络层,低位量化易造成精度崩盘,默认保留FP16高精度不量化;

  5. 模型保存:打包压缩后的整数权重与量化元数据,生成轻量化量化模型文件。

3.2 在线推理阶段(Token生成)

  1. 加载量化模型:显存常驻低比特压缩权重与量化元数据,显存占用大幅降低;

  2. 按需反量化:矩阵乘法计算前,将INT权重临时反量化为FP16浮点权重;

  3. 前向运算:W4/W8模式下采用浮点计算,W8A8模式下激活实时量化为INT8,通过整型算力完成矩阵乘;

  4. 临时数据释放:反量化生成的浮点权重、量化后的激活张量均为算子临时缓存,计算完成立即销毁,不占用常驻显存;

  5. 迭代生成:通过高精度浮点输出概率分布,解码得到最终Token。

四、高频核心误区答疑

4.1 推理必须反量化吗?能否直接用整数计算?

逻辑层面必须反量化。主流消费级GPU没有完整的低位整数Transformer矩阵乘原生通路,模型核心的矩阵运算仍依赖浮点乘累加。部分硬件会将量化、反量化算子融合进计算流程,隐藏显式操作,但本质上依然存在数值还原的过程,无法完全跳过反量化。

4.2 既然需要反量化,权重量化的意义是什么?

核心在于常驻显存与临时缓存的本质差异,这是最容易混淆的知识点:

  • 量化后的INT权重:长期驻留显存,永久节省50%~75%显存占用,从根源解决大模型加载难题;

  • 反量化的浮点权重:仅算子运行时临时生成、瞬时使用,计算结束立即释放,不占用常驻显存。

反量化操作完全不会抵消权重量化的显存压缩收益。

4.3 为什么需要量化激活值?

权重量化的核心是压缩静态模型参数,而激活量化的核心是优化动态推理过程,二者定位完全不同:

  • 解决长文本显存瓶颈:激活张量随序列长度、批次大小指数增长,是长文本推理OOM的首要原因,INT8激活可直接减半中间显存占用;

  • 释放硬件算力:匹配GPU高速INT8整型计算单元,算力远超浮点计算,抵消量化开销后实现整体推理加速;

  • 无额外存储开销:激活是动态临时数据,无需永久存储,量化仅作用于计算传输阶段。

4.4 不同量化方案的反量化对象差异

  • 仅权重量化(W4/W8):只反量化权重,激活全程为浮点格式,无激活量化/反量化操作;

  • 全量化(W8A8):权重、激活均需要完成量化与反量化流程。

五、主流量化方案对比

量化方案量化类型核心优势适用场景
GPTQW4/W8 权重量化逐分组最小化重构误差,精度与性能均衡通用对话、常规推理场景
AWQW4/W8 权重量化精准保护核心权重通道,量化精度优于GPTQ高精度生成、专业任务场景
GGUF Q系列混合低位权重量化兼容性极强,适配CPU/GPU轻量化推理本地部署、边缘设备、低资源场景
LLM.int8W8A8 全量化分离异常激活值,有效降低量化损失大批次、常规长文本推理
SmoothQuantW8A8 全量化平滑激活动态范围,大幅提升全量化精度超长上下文推理场景

六、量化的收益与精度取舍

6.1 核心收益

  • 显存极致优化:INT4权重显存占用仅为FP16的1/4,支持小显存设备部署百亿级大模型;

  • 推理效率提升:降低显存带宽读写压力,整型算力加速矩阵运算,提升生成速度;

  • 硬件适配广泛:完美兼容GPU、CPU、边缘终端等多类部署硬件。

6.2 精度取舍原则

  • 量化位宽越低,压缩率越高,量化误差越大,模型幻觉、生成质量损耗越明显;

  • 数学推理、代码生成、精密逻辑任务对量化敏感,优先选择W8量化或精细分组W4量化;

  • 通用对话、内容创作场景中,INT4量化可实现精度与性能的最优平衡。

七、全文总结

  1. 量化本质是浮点数值线性映射低位整数,通过可逆压缩降低模型存储与计算开销,推理时临时反量化完成运算;

  2. 权重量化主打降低常驻显存,是大模型落地的基础方案,不影响推理稳定性;

  3. 激活量化主打优化动态显存、释放硬件算力,是长文本、大批次推理的核心优化手段;

  4. 反量化仅生成临时浮点数据,运算后立即释放,完全不会抵消量化的显存压缩核心收益。