量化的本质:用低比特整数(如 2/4/8bit)替代浮点(FP16/FP32)存储和计算,在保证精度损失可控的前提下,降低模型内存占用、提升推理速度. 总结起来就是六字真言:"降内存,提速度”!!!

大模型量化的难点:

1. 低比特下的精度严重损失

  • 层数增加,权重量化误差叠加
  • 激活值动态范围宽,分布不稳定;激活比权重更难量化
  • 异常值敏感
  • 异常值让激活量化更困难(激活异常值比大多数激活值大约 100 倍。 如果我们使用 INT8 量化,大 多数值将被清零。)

2. 大模型不同层、不同模态的参数 / 数据分布差异极大。动态范围适配难度大

  • 跨层分布不一致:Transformer 的嵌入层(Embedding)参数分布集中(均值近 0、方差小),而中间层权重 / 激活分布分散(如 FFN 层权重方差是嵌入层的 10 倍以上),若用同一量化参数(如全局 min/max),要么嵌入层量化过粗,要么中间层截断严重;
  • 跨模态分布差异:多模态大模型(如 GPT-4V、Gemini)中,文本、图像、语音的特征分布完全不同(文本特征稀疏、图像特征密集),统一量化策略会导致某一模态精度骤降(如图像模态因量化丢失细节,无法正确理解图片内容);
  • 动态 batch 适配难:大模型推理时常支持动态 batch(如 batch size=1~32),不同 batch 的激活值分布可能差异显著(小 batch 易出现极端值),静态量化(如离线计算量化参数)无法适配动态场景,动态量化又会增加推理开销。

3. 硬件兼容性与推理效率的平衡

大模型量化的核心目标是 “降内存 + 提速度”,但硬件对量化格式的支持存在强约束,容易出现 “量化后精度降了,效率没提” 的情况:

  • 硬件量化格式碎片化:不同硬件支持的量化格式不统一 ——GPU(如 NVIDIA A100)支持 FP8、INT8(Tensor Core),CPU(如 Intel Xeon)支持 INT8(AVX-512)、INT4(AMX 指令),边缘设备(如 ARM 芯片)仅支持 INT8(NEON);大模型若要跨硬件部署,需针对每种格式单独优化量化策略,开发成本极高;
  • 复杂量化策略的效率损耗:为保精度,常采用 “per-channel 量化”“混合比特量化”(如权重 4bit + 激活 8bit)等复杂策略,但这些策略会增加推理时的 “格式转换”“参数查表” 开销 —— 例如 per-channel 量化需为每个输出通道存储单独的 scale/zero-point,推理时需逐通道计算,反而比简单的 per-tensor 量化更慢;
  • 权重布局与硬件指令不匹配:大模型权重通常按 “线性存储”,但硬件加速指令(如 NVIDIA 的 Tensor Core)要求权重按 “4×4 矩阵”“16×16 矩阵” 等特定布局排列,量化后需重新调整权重布局(如 padding、重排),不仅增加预处理成本,还可能浪费内存(如 padding 导致权重体积反而增大)。

4. 训练与量化的协同成本极高

大模型量化分为 “训练后量化(PTQ)” 和 “量化感知训练(QAT)”,两者均存在明显瓶颈:

  • PTQ 的校准集依赖与分布偏移:PTQ 无需微调,但需用 “校准集” 统计量化参数(如 scale/zero-point),而大模型的校准集需满足两个条件:① 规模足够大(通常需 10 万 + 样本),② 分布与真实场景一致;若校准集规模不足或分布偏移(如用文本校准集量化多模态模型),量化后精度会暴跌,且千亿级模型的校准过程需加载大量数据,内存开销极大;
  • QAT 的训练成本失控:QAT 通过在训练中模拟量化误差,能显著提升低比特精度,但大模型 QAT 的成本是普通模型的 3~5 倍 —— 例如千亿参数模型的全量 QAT 需 8×A100(80GB)GPU 集群,训练 1 轮需数天,且需修改训练框架(如 PyTorch、Megatron-LM)的反向传播逻辑(如量化误差的梯度计算),工程实现难度高;
  • 增量量化的兼容性差:大模型常需 “增量训练”(如在原有模型基础上新增任务微调),但量化后的模型参数(如 INT4 权重)反向传播时精度不足,需先将量化权重反量化为 FP32 再训练,导致增量训练的内存 / 计算成本与原模型训练几乎无异,失去量化意义。

5. 多模态与动态任务的量化适配

当前大模型多为 “通用型”(支持文本生成、对话、代码、推理等多任务),量化需适配不同任务的特性,难度远超单一任务模型:

  • 任务敏感的量化需求差异:例如 “文本生成” 对权重量化精度敏感(权重误差会导致生成话术不连贯),而 “简单分类” 对激活量化更敏感(激活误差会影响分类阈值判断);若用同一量化策略覆盖所有任务,必然导致部分任务精度不达标;
  • 动态推理场景的量化适配:大模型常支持 “动态长度输入”(如文本长度从 10token 到 1024token),输入长度变化会导致激活值分布变化(长文本的注意力权重分布更分散),静态量化参数无法适配,动态量化又会增加推理延迟(如实时统计激活的 min/max);
  • 模态间交互的量化误差:多模态模型中,不同模态的特征需通过 “跨模态注意力”“模态融合层” 交互,量化会破坏模态间的特征对齐 —— 例如文本特征(4bit 量化)与图像特征(8bit 量化)融合时,因精度差异导致对齐偏差,无法正确关联 “文本描述” 与 “图像内容”。

五种常用量化策略的优劣比较

更多推荐