一、为什么量化很重要¶
量化的本质是把模型从更高精度的数据格式压缩到更低精度,例如:
- FP16 -> INT8
- FP16 -> INT4
这样做带来的主要收益有:
- 模型体积更小;
- 显存占用更低;
- 内存和带宽压力更小;
- 推理速度通常更快。
二、两种常见量化方法¶
2.1 GPTQ¶
GPTQ 是一种常见的后训练量化方法。
优点¶
- 量化速度快;
- 推理性能通常不错;
- 和 Hugging Face 生态结合较好。
缺点¶
- 需要校准数据集;
- 某些任务下精度损失可能略明显。
2.2 AWQ¶
AWQ 更关注激活分布,因此在一些场景里精度表现会更好。
优点¶
- 精度通常比 GPTQ 更稳;
- 对生成模型比较友好。
缺点¶
- 量化过程更慢;
- 往往需要更多显存。
2.3 怎么选¶
- 如果你更看重速度和易用性:
- 先试 GPTQ。
- 如果你更看重精度:
- 优先 AWQ。
三、Qwen3-1.7B 的量化目标¶
这份实操的目标是:
- 基于
Qwen3-1.7B; - 做
INT4量化。
硬件建议:
- GPU:至少 16GB 显存;
- 内存:32GB 以上;
- 磁盘:至少 20GB 可用空间。
四、先下载原始模型¶
可以通过 ModelScope 下载:
pip install modelscope
mkdir -p /models/
modelscope download --model Qwen/Qwen3-1.7B --local_dir /models/Qwen3-1.7B
五、AWQ 量化环境准备¶
示例环境基于 Ubuntu 22.04 和 AutoDL。
conda create -n qwen_quant python=3.12
conda activate qwen_quant
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128
pip install transformers==4.51.3 accelerate datasets
pip install autoawq autoawq-kernels
这里的 cu128 要和你的 CUDA 版本对应。
六、AWQ 量化流程¶
量化脚本的核心思路包括:
- 加载原始模型;
- 加载 tokenizer;
- 准备校准数据;
- 执行
model.quantize(...); - 保存量化结果。
其中最关键的一步,是准备校准数据。校准数据不需要特别大,但一定要和实际业务分布足够接近。
6.1 核心配置¶
AWQ 里常见的重要配置包括:
w_bit=4q_group_size=128zero_point=Trueversion="GEMM"
6.2 保存量化模型¶
量化完成后:
model.save_quantized(quant_path)
tokenizer.save_pretrained(quant_path)
七、测试 AWQ 量化后的模型¶
量化不是做完就结束,必须验证推理是否正常。
典型流程是:
- 加载量化后的模型;
- 给一个简单 Prompt;
- 检查是否能正常输出结果。
测试提示词示例:
你好,请介绍一下你自己。
八、GPTQ 量化流程¶
GPTQ 的环境准备也很类似:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128
pip install accelerate datasets transformers==4.51.3
git clone https://github.com/ModelCloud/GPTQModel.git && cd GPTQModel
pip install -v . --no-build-isolation
量化时最关键的参数通常有:
bits=4group_size=128sym=True
然后通过校准样本执行量化并保存结果。
九、怎么验证 GPTQ 结果¶
可以加载量化后的模型,然后通过 TextGenerationPipeline 做一轮文本生成测试,例如:
人工智能的未来发展方向是
只要:
- 模型能正常加载;
- 能稳定生成;
- 速度和显存明显改善;
这次量化就算真正成功。
十、一个实用建议¶
量化不是“越狠越好”,而是要在速度、显存和精度之间找平衡。刚开始最稳妥的方式是:
- 先用典型业务数据做小样本量化;
- 跑几轮推理对比;
- 再决定是上 AWQ 还是 GPTQ;
- 最后再把结果接回你的推理服务。