一、为什么量化很重要

量化的本质是把模型从更高精度的数据格式压缩到更低精度,例如:

  • 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 量化流程

量化脚本的核心思路包括:

  1. 加载原始模型;
  2. 加载 tokenizer;
  3. 准备校准数据;
  4. 执行 model.quantize(...)
  5. 保存量化结果。

其中最关键的一步,是准备校准数据。校准数据不需要特别大,但一定要和实际业务分布足够接近。

6.1 核心配置

AWQ 里常见的重要配置包括:

  • w_bit=4
  • q_group_size=128
  • zero_point=True
  • version="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=4
  • group_size=128
  • sym=True

然后通过校准样本执行量化并保存结果。

九、怎么验证 GPTQ 结果

可以加载量化后的模型,然后通过 TextGenerationPipeline 做一轮文本生成测试,例如:

人工智能的未来发展方向是

只要:

  • 模型能正常加载;
  • 能稳定生成;
  • 速度和显存明显改善;

这次量化就算真正成功。

十、一个实用建议

量化不是“越狠越好”,而是要在速度、显存和精度之间找平衡。刚开始最稳妥的方式是:

  1. 先用典型业务数据做小样本量化;
  2. 跑几轮推理对比;
  3. 再决定是上 AWQ 还是 GPTQ;
  4. 最后再把结果接回你的推理服务。