Skip to content

量化系统 — 练习

练习 1:量化方法选择

为以下场景选择最合适的量化方法:

  1. H100 集群,需要最小精度损失
  2. 消费级 GPU(RTX 3090),需要运行 70B 模型
  3. CPU-only 推理,需要最大化压缩
  4. 在线服务,需要兼顾精度和速度
参考答案
  1. FP8:H100 原生支持,几乎无精度损失,2× 加速。

  2. GPTQ 或 AWQ(4-bit):70B 模型 FP16 需要 ~140GB,RTX 3090 只有 24GB。4-bit 量化后约 35GB,配合 offload 到 CPU 内存可以运行。AWQ 通常精度更好。

  3. GGUF:llama.cpp 格式,专为 CPU 推理优化,支持多种量化级别(Q2_K 到 Q8_0)。

  4. AWQ(4-bit):在保持较高精度的同时提供良好的推理速度。如果硬件支持 FP8,FP8 是更好的选择。

练习 2:量化精度分析

分析量化对模型输出的影响:

  1. 为什么 FP8 的精度损失比 INT4 小得多?
  2. GPTQ 和 AWQ 在量化策略上的根本区别是什么?
  3. 为什么量化对 MoE 模型更有挑战性?
参考答案
  1. FP8(E4M3)仍然有 3 bit 的尾数和 4 bit 的指数,可以表示的动态范围远大于 INT4(只能表示 16 个离散值)。

  2. GPTQ 基于权重的重要性(通过 Hessian 衡量)来决定量化策略,量化一个权重后补偿其余权重。AWQ 基于激活值来识别重要权重通道,通过缩放因子保护重要通道。

  3. MoE 模型有多个专家,每个专家的权重分布可能不同。量化需要分别处理每个专家,且 Router 的决策可能因量化误差而改变。专家的权重矩阵通常较小,量化效果不如大矩阵显著。

拓展挑战

  • 阅读 vllm/model_executor/layers/quantization/ 目录结构,理解量化方法的组织方式
  • 分析 GPTQ 的 Marlin kernel 实现
  • 研究 compressed-tensors 量化格式的统一接口