大模型常见的量化方式

前言

截至 2026 年,随着大模型(LLM)和边缘 AI 的快速发展,模型量化已成为部署高效、低功耗 AI 系统的核心技术。目前工业界和学术界广泛采用的量化方式,可从多个维度进行分类。以下是当前最常用、最主流的量化方法及其适用场景:

量化时机划分(最基础分类)

PTQ训练后量化

Post-Training Quantization

  • 定义:模型训练完成后直接量化,无需重新训练。

  • 优点:简单、快速、无需训练数据或仅需少量校准数据。

  • 缺点:精度损失相对较大,尤其在低位宽(如 INT4)时明显。

  • 子类:

    • 静态量化(Static PTQ)
      • 使用校准集离线计算权重和激活的 scale/zero-point。
      • 推理时参数固定,速度最快,适合移动端、嵌入式设备。
      • 常用于 CNN、中小型 Transformer。
    • 动态量化(Dynamic PTQ)
      • 权重提前量化,激活值在推理时实时计算 scale
      • 精度略高,但推理有额外开销。
      • 广泛用于 LLM(如 PyTorch 默认方案)

使用场景:快速部署、隐私敏感任务、客户交付模型无法重训。

QAT量化感知训练

Quantization-Aware Training

  • 定义:在训练/微调阶段插入“伪量化”模块,让模型学习适应量化误差。
  • 优点精度最高,尤其在 INT4 及以下位宽表现优异。
  • 缺点:需完整训练流程,成本高、周期长。
  • 典型框架支持:PyTorch、TensorFlow Lite、MindSpore。

使用场景:医疗、金融等高精度要求领域;低位宽(INT4/INT2)部署。

精度位宽划分

位宽 特点 应用
INT8 最成熟、兼容性最好,精度损失小(<1%) 移动端、服务器推理(TensorRT、OpenVINO)
INT4 模型体积压缩至 1/8,需配合先进 PTQ 或 QAT 手机端 LLM(如 llama.cpp、vLLM)
INT2 / Binary 极致压缩,仅用于研究或特定硬件 学术探索、专用 NPU
FP8 保留浮点动态范围,适合数值敏感任务 NVIDIA H100、AMD MI300 等新 GPU

🔍 当前工业主流是 INT8 + 静态/动态 PTQ;前沿方向是 INT4 + AutoRound/GPTQ


主流具体量化算法/工具

GPTQ(Gradient-based PTQ)

  • 专为 LLM 设计,逐层优化量化误差
  • 支持 INT4,精度优于传统 PTQ。
  • 已集成于 Hugging Face Transformers、AutoGPTQ。
  • 缺点:需要校准数据,量化较慢。

AWQ(Activation-aware Weight Quantization)

  • 核心思想:1% 的关键权重不量化,其余激进压缩。
  • 利用激活值分布指导权重量化,保护重要通道。
  • 在 INT4 下表现优异,被 Meta、阿里等采用。

AutoRound(Intel 提出)

  • 无需校准数据,通过可学习舍入偏移优化量化。
  • 支持 INT2–INT8,4-bit 精度超越 GPTQ/AWQ
  • 量化速度快(72B 模型 37 分钟),输出兼容 GGUF/vLLM。
  • 被视为 下一代 PTQ 标准

SmoothQuant

  • 解决 LLM 中激活值存在异常值的问题。
  • 通过平滑因子将量化难度从激活转移到权重。
  • 被 Intel、NVIDIA 广泛用于 INT8 LLM 部署。

量化粒度划分

粒度 描述 精度 速度
张量级(Per-tensor) 整个权重共用一组参数 最低 最快
层级(Per-layer) 每层独立 scale 中等 快(主流)
通道级(Per-channel) 每输出通道独立量化 中等
分组级(Group-wise) 如 llama.cpp 的 Q4_K(每 128 元素一组) 很高 可接受

📌 大模型普遍采用分组量化(如 Q4_K、Q6_K),平衡精度与效率。

混合策略

混合精度量化(Mixed-Precision Quantization)

  • 不同层使用不同位宽:
    • Attention 层 → INT8(敏感)
    • MLP 层 → INT4(鲁棒)
  • 工具支持:Hugging Face Optimum、TensorRT、vLLM。
  • 是当前生产环境最优实践

总结

当前最常用组合(2026年)

场景 推荐量化方式
通用 LLM 快速部署 GPTQ / AutoRound + INT4 + 分组量化
移动端/边缘设备 Static PTQ + INT8 + Per-layer
高精度服务(如金融) QAT + INT8 或 FP8
极致压缩(手机聊天机器人) AutoRound + INT4/INT3 + GGUF 格式
GPU 加速推理(A100/H100) SmoothQuant / FP8 + TensorRT

当前量化已从“简单四舍五入”演进为融合优化、感知结构、自适应调整的智能压缩技术AutoRound、GPTQ、AWQ 等新一代 PTQ 方法正逐步取代传统 min-max 量化,而 QAT 仍是精度天花板。开发者应根据硬件平台、精度容忍度、部署速度三要素,选择最适合的量化路径。

大模型的分层

GPTQ 是“逐层优化”(layer-wise optimization)时,这里的“层”指的是大语言模型(LLM)内部的神经网络模块层级结构。不同架构的大模型(如 GPT、LLaMA、BLOOM、Mistral 等)虽然细节略有差异,但总体上都基于 Transformer 解码器(Decoder-only) 架构。

一个典型的 LLM(如 LLaMA-7B)由以下部分组成:

1
Input → [Token Embedding] → [N 个 Transformer Decoder 层] → [RMSNorm] → [LM Head] → Output

其中,核心可量化部分是中间的 N 个 Transformer Decoder 层(例如 LLaMA-7B 有 32 层),而 Embedding 和 LM Head 通常也参与量化,但策略可能不同。

每个 Decoder 层(通常称为 BlockLayer)内部又包含多个可独立量化的子层(sub-layers)。

以 LLaMA 为例,一层的结构如下:

1
2
3
4
5
6
7
class LlamaDecoderLayer(nn.Module):
def __init__(self, config):
super().__init__()
self.input_layernorm = RMSNorm(...) # 1. 输入层归一化
self.self_attn = LlamaAttention(...) # 2. 自注意力机制
self.post_attention_layernorm = RMSNorm(...) # 3. 注意力后归一化
self.mlp = LlamaMLP(...) # 4. 前馈神经网络(MLP)

具体可量化的权重模块包括:

子模块 对应权重名称(Hugging Face) 是否通常被 GPTQ 量化
自注意力(Self-Attention) q_proj, k_proj, v_proj, o_proj ✅ 是(核心)
前馈网络(MLP) gate_proj, up_proj, down_proj ✅ 是(核心)
层归一化(LayerNorm / RMSNorm) input_layernorm.weight, post_attention_layernorm.weight ❌ 否(通常保留 FP16)
词嵌入(Embedding) model.embed_tokens.weight ⚠️ 部分方案量化,部分保留
语言模型头(LM Head) lm_head.weight ⚠️ 有时与 embedding tied,策略同上

理解这些层级结构,有助于你更好地配置量化工具(如 AutoGPTQ)、分析量化误差来源,甚至设计混合精度策略(如只对 MLP 用 INT4,Attention 用 INT8)。