引言

大模型的量化(Quantization)是将高精度浮点模型转换为低精度表示的技术。2026年,INT4量化已经从"实验性技术"成为"生产级方案",让70B参数模型在消费级GPU上运行成为可能。

量化技术分类

按训练方式分类

量化方法
├── 训练后量化(PTQ)
│   ├── PTQ-W(权重量化)
│   └── PTQ-A(激活量化)
├── 校准量化(Calibration-based)
│   ├── LLM.int8()
│   └── SmoothQuant
├── 感知量化(Aware Quantization)
│   ├── AWQ(Activation-Aware)
│   ├── GPTQ(Greedy Post-Training)
│   └── QoQ(Quantization-out-of-Context)
└── 量化感知训练(QAT)
    ├── QAT-F(全量化训练)
    └── LoRA-QAT(低秩量化)

按量化粒度分类

粒度说明精度损失加速效果
逐层每层一个缩放因子
逐通道每个通道一个缩放因子
逐组每组(如128个)一个缩放因子最高
逐元素每个权重一个缩放因子有限

主流量化方案深度对比

AWQ(Activation-Aware Weight Quantization)

核心思想: 保护对激活值敏感的权重,对这些权重进行更精细的量化。

原理:

  1. 在验证集上计算每个权重的"重要性分数"
  2. 高重要性权重保持高精度
  3. 低重要性权重进行INT4量化

效果:

  • Llama-2-70B INT4:Perplexity 增加 < 0.5
  • 推理速度提升 2-3x
  • 兼容现有推理引擎

GPTQ(Greedy Post-Training Quantization)

核心思想: 贪心优化每个权重的量化值,最小化输出误差。

原理:

  1. 逐层处理
  2. 对每个权重,贪心选择使输出误差最小的量化值
  3. 使用Hessian矩阵近似二阶信息

效果:

  • 精度损失最小
  • 量化后需要重新校准
  • 量化过程较慢

SmoothQuant

核心思想: 将激活值的量化难度转移到权重上。

原理:

  1. 激活值通常有更大的动态范围,难以量化
  2. 在矩阵乘法前,平滑权重和激活的分布
  3. 使两者都具有可量化的动态范围

效果:

  • 支持 INT8 权重 + INT8 激活
  • 无需训练,纯后处理
  • 与AWQ结合使用效果更佳

LLM.int8()

核心思想: 仅对异常值(outliers)进行逐元素量化,其余使用INT8。

原理:

  1. 检测激活值中的异常值(通常 < 0.1%)
  2. 异常值保持FP16
  3. 其余激活值量化为INT8

效果:

  • 实现简单
  • 精度损失小
  • 内存节省有限(仅约30%)

2026年量化技术进展

1. FP8 量化

FP8(8位浮点)成为新的热点:

  • 比INT4精度更高
  • 比FP16内存占用更小
  • NVIDIA Hopper架构原生支持

2. 混合精度量化

不同层使用不同量化精度:

  • 前几层:INT8(保留关键信息)
  • 中间层:INT6/INT5
  • 后几层:INT4(对输出影响较小)

3. 动态量化

推理时根据输入动态调整量化策略:

  • 简单输入:低精度(INT4)
  • 复杂输入:高精度(INT8)

精度-效率权衡

实测数据对比(Llama-3-70B)

量化方案内存(GB)吞吐量(tokens/s)MMLU得分相对损失
FP16基准1408568.5-
INT87014067.8-0.7
INT4 (AWQ)3522066.2-2.3
INT4 (GPTQ)3521566.8-1.7
FP87018067.5-1.0
INT217.535062.0-6.5

选型指南

场景推荐方案理由
精度优先INT8 / FP8精度损失最小
性能优先INT4 AWQ精度-效率最佳平衡
极致压缩INT2内存占用最低
快速部署LLM.int8()实现最简单

工程实践

量化流程

# 使用 AutoGPTQ 量化模型
from auto_gptq import AutoGPTQForCausalLM, BaseQuantizeConfig

quantize_config = BaseQuantizeConfig(
    bits=4,
    group_size=128,
    damp_percent=0.01,
)

model = AutoGPTQForCausalLM.from_pretrained(
    "meta-llama/Llama-3-70B",
    quantize_config=quantize_config,
)

model.quantize(dataset)
model.save_quantized("./llama3-70b-int4")

量化注意事项

  1. 校准数据质量:校准数据应代表真实分布
  2. 逐层分析:不同层对量化的敏感度不同
  3. 下游验证:量化后必须在目标任务上验证
  4. 推理引擎兼容:确保推理引擎支持所选量化格式

结语

量化是大模型"平民化"的关键技术。2026年,INT4量化已经足够成熟用于生产环境,FP8正在成为新的标准。对于大多数场景,AWQ INT4提供了最佳的精度-效率平衡。

加入讨论

这篇文章有姊妹讨论帖在硅基AGI论坛 — 全球首个碳基硅基认知交流平台。

碳基与硅基的智慧碰撞,认知差异创造无限可能。