量化

Quantization

量化(Quantization)是将模型权重和激活值从高精度浮点(如 FP16)转换为低精度整数(如 INT8/INT4)的技术,可显著降低显存占用和推理延迟。

详细解释

量化(Quantization)是大模型「用更少资源跑更大模型」的关键技术。深度学习参数默认用 FP32(32 位浮点)或 FP16(16 位浮点)存储,量化的核心思想是把它们压成 INT8(8 位整数)甚至 INT4(4 位整数)。

精度对比

精度单参数字节7B 模型体积相对 FP16 的体积
FP324 字节28 GB2.0x
FP162 字节14 GB1.0x(基准)
BF162 字节14 GB1.0x
INT81 字节7 GB0.5x
INT40.5 字节3.5 GB0.25x
INT20.25 字节1.75 GB0.125x(实验性)

主流量化方法

方法精度速度质量损失代表实现
PTQ(训练后量化)INT8/INT4极快< 1%GPTQ, AWQ
QAT(量化感知训练)INT4< 0.3%BitsAndBytes
GGUFINT4/INT5/INT8< 1.5%llama.cpp
AWQINT4< 1%MIT-Han-Lab
SmoothQuantINT8极小智谱 GLM

实战:4-bit 量化加载模型

from transformers import AutoModelForCausalLM, BitsAndBytesConfig

bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype="float16",
    bnb_4bit_use_double_quant=True
)

model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen3-7B",
    quantization_config=bnb_config,
    device_map="auto"
)
# 7B 模型只需 6GB 显存,RTX 3060 也能跑

唯元智创的量化推理

唯元智创生产环境统一采用 AWQ-INT4 量化方案,兼顾:

  • 显存占用降低 75%
  • 推理速度提升 1.3-1.8 倍
  • 质量损失 < 1%(基于内部 5000 题评测集)

常见问题

INT4 量化对模型效果有影响吗?
通常在通用任务上 < 1%,但在数学/代码等高敏感任务可能下降 2-5%。建议先在小流量灰度,对比 INT4 vs FP16 的实际效果。
为什么不用 INT2?
INT2 量化损失通常 > 5%,已超出可接受范围。INT4 是当前「甜点精度」。