Appearance
量化系统 — 练习
练习 1:量化方法选择
为以下场景选择最合适的量化方法:
- H100 集群,需要最小精度损失
- 消费级 GPU(RTX 3090),需要运行 70B 模型
- CPU-only 推理,需要最大化压缩
- 在线服务,需要兼顾精度和速度
参考答案
FP8:H100 原生支持,几乎无精度损失,2× 加速。
GPTQ 或 AWQ(4-bit):70B 模型 FP16 需要 ~140GB,RTX 3090 只有 24GB。4-bit 量化后约 35GB,配合 offload 到 CPU 内存可以运行。AWQ 通常精度更好。
GGUF:llama.cpp 格式,专为 CPU 推理优化,支持多种量化级别(Q2_K 到 Q8_0)。
AWQ(4-bit):在保持较高精度的同时提供良好的推理速度。如果硬件支持 FP8,FP8 是更好的选择。
练习 2:量化精度分析
分析量化对模型输出的影响:
- 为什么 FP8 的精度损失比 INT4 小得多?
- GPTQ 和 AWQ 在量化策略上的根本区别是什么?
- 为什么量化对 MoE 模型更有挑战性?
参考答案
FP8(E4M3)仍然有 3 bit 的尾数和 4 bit 的指数,可以表示的动态范围远大于 INT4(只能表示 16 个离散值)。
GPTQ 基于权重的重要性(通过 Hessian 衡量)来决定量化策略,量化一个权重后补偿其余权重。AWQ 基于激活值来识别重要权重通道,通过缩放因子保护重要通道。
MoE 模型有多个专家,每个专家的权重分布可能不同。量化需要分别处理每个专家,且 Router 的决策可能因量化误差而改变。专家的权重矩阵通常较小,量化效果不如大矩阵显著。
拓展挑战
- 阅读
vllm/model_executor/layers/quantization/目录结构,理解量化方法的组织方式 - 分析 GPTQ 的 Marlin kernel 实现
- 研究 compressed-tensors 量化格式的统一接口