大模型常见的量化方式
前言
截至 2026 年,随着大模型(LLM)和边缘 AI 的快速发展,模型量化已成为部署高效、低功耗 AI 系统的核心技术。目前工业界和学术界广泛采用的量化方式,可从多个维度进行分类。以下是当前最常用、最主流的量化方法及其适用场景:
按量化时机划分(最基础分类)
PTQ训练后量化
Post-Training Quantization
定义:模型训练完成后直接量化,无需重新训练。
优点:简单、快速、无需训练数据或仅需少量校准数据。
缺点:精度损失相对较大,尤其在低位宽(如 INT4)时明显。
子类:
- 静态量化(Static PTQ)
- 使用校准集离线计算权重和激活的 scale/zero-point。
- 推理时参数固定,速度最快,适合移动端、嵌入式设备。
- 常用于 CNN、中小型 Transformer。
- 动态量化(Dynamic PTQ)
- 权重提前量化,激活值在推理时实时计算 scale。
- 精度略高,但推理有额外开销。
- 广泛用于 LLM(如 PyTorch 默认方案)。
- 静态量化(Static PTQ)
✅ 使用场景:快速部署、隐私敏感任务、客户交付模型无法重训。
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 层(通常称为 Block 或 Layer)内部又包含多个可独立量化的子层(sub-layers)。
以 LLaMA 为例,一层的结构如下:
1 | class LlamaDecoderLayer(nn.Module): |
具体可量化的权重模块包括:
| 子模块 | 对应权重名称(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)。