What are the types of Quantization
1️⃣ 考察意图
面试官想考察你对模型量化体系的系统性理解,而非零散记忆。这题看似分类,实则暗藏三个刁钻点:一是能否从精度、方法、粒度、对称性四个维度交叉分类;二是能否指出不同量化类型在大模型推理场景下的工程取舍(如INT4 vs FP8的吞吐/精度权衡);三是能否点出混合精度量化的实战价值。答好了能展示你对LLM部署整条链路的掌控力,包括对bitsandbytes、GPTQ、AWQ等工具的熟悉度,以及从论文到落地的工程直觉。
2️⃣ 标准答
量化分类可以从四个维度展开,每个维度对应不同的工程决策。
一、按精度分:INT8、INT4、FP8、NF4
- INT8:最成熟,压缩比4x,精度损失极小(<1%)。常用对称量化(如LLaMA-7B INT8推理,MMLU下降<0.5%)。但INT8在边缘设备上内存带宽仍是瓶颈。
- INT4:压缩比8x,但精度损失明显(MMLU下降2-5%)。需配合GPTQ或AWQ做权重补偿。工程坑:INT4推理时需反量化回FP16计算,导致计算延迟反而可能高于INT8(因为反量化开销)。
- FP8:NVIDIA H100原生支持,无需反量化,吞吐比INT8高30%。但FP8动态范围窄(最大约448),对激活值敏感,需做per-tensor校准。适合大模型推理,不适合训练(梯度下溢)。
- NF4:QLoRA提出的4-bit正态分布量化,专门适配权重分布(近似N(0,1))。精度接近INT8,但需双重量化(先量化权重,再量化量化参数),实现复杂。
二、按方法分:PTQ vs QAT
- PTQ(训练后量化):主流方案,如GPTQ、AWQ、SmoothQuant。无需重训,只需少量校准数据(128-512条)。GPTQ用Hessian矩阵做权重补偿,对4-bit量化效果最好;AWQ按激活值重要性保护1%关键通道,精度比GPTQ高0.5-1%。工程取舍:PTQ对异常值敏感,若校准集分布偏移,量化后精度可能崩。
- QAT(量化感知训练):在训练中模拟量化误差,如LLM-QAT。精度更高(INT4可接近FP16),但需要全量训练数据+数天GPU时间。实战坑:QAT中直通估计器(STE)的梯度近似会导致训练不稳定,需配合学习率衰减和梯度裁剪。
三、按粒度分:per-tensor、per-channel、per-group
- per-tensor:整个张量共享一个scale/zero-point,计算最快(一次乘法),但精度最差(对异常值敏感)。适合激活值分布均匀的层(如embedding)。
- per-channel:每个输出通道独立scale,精度提升明显(如LLaMA-7B INT8,per-channel比per-tensor MMLU高1.2%),但计算复杂度增加(需多次乘法)。适合权重矩阵。
- per-group:将通道分组(如group size=128),每组独立量化。GPTQ默认使用group=128,在精度和计算间取得平衡。工程坑:group size越小精度越高,但推理时需额外存储scale参数(每个group多4字节),对内存带宽有影响。
四、按对称性分:对称 vs 非对称
- 对称量化:零点为零,计算简单(只需scale),适合权重(分布对称)。但若激活值分布偏斜(如ReLU后全正),会浪费一半量化范围。
- 非对称量化:引入零点,可适配任意分布,但计算多一次减法。实战中,激活值通常用非对称,权重用对称(因为权重分布近似对称)。
五、混合精度量化
- 关键层(如注意力QKV投影、FFN第一层)保持INT8或FP16,其他层用INT4。例如LLaMA-65B混合精度后,MMLU仅降0.3%,但推理速度提升1.8x。工程坑:混合精度需要手动指定每层精度,或通过AutoAWQ自动搜索最优配置(基于校准集损失)。
3️⃣ 答题模板(30 秒电梯版)
“这个问题我从精度、方法、粒度、对称性四个层面回答。精度层面,INT8成熟但压缩比有限,INT4需GPTQ/AWQ补偿,FP8适合H100原生推理;方法层面,PTQ(如GPTQ)是主流,QAT精度更高但成本大;粒度层面,per-group(group=128)是工程最优解;对称性层面,权重用对称、激活用非对称。总结一句:量化类型的选择本质是精度、吞吐、部署成本的三角权衡,混合精度量化是当前大模型部署的最佳实践。”
4️⃣ 高频追问 & 应对
追问 1:你说INT4需要反量化回FP16计算,那为什么还要用INT4?直接FP16不行吗?
核心原因是内存带宽瓶颈。大模型推理时,计算时间远小于权重加载时间(如LLaMA-7B,FP16权重约14GB,INT4仅3.5GB)。INT4虽然多了反量化开销(约10%计算时间),但内存带宽节省了4x,整体延迟反而降低。实测:A100上LLaMA-7B INT4推理比FP16快1.5-2x。但如果计算密集(如batch size很大),反量化开销会抵消带宽收益,此时FP8更优。
追问 2:GPTQ和AWQ哪个更好?怎么选?
没有绝对优劣。GPTQ基于Hessian矩阵做全局最优补偿,对4-bit量化精度更高(MMLU高0.3-0.5%),但校准时间长(LLaMA-7B约1小时)。AWQ只保护1%关键通道,校准时间仅10分钟,且对校准集分布不敏感(更鲁棒)。工程建议:如果追求极致精度且校准集质量高,选GPTQ;如果需要快速部署或校准集可能偏移,选AWQ。另外,AWQ对group size不敏感,可以设更大group(如256)减少存储。
追问 3:混合精度量化中,哪些层应该保持高精度?为什么?
经验法则:注意力层的QKV投影和FFN的第一层(gate_proj/up_proj)最敏感。原因是这些层对激活值的异常值敏感(如attention score的softmax后分布),低精度会放大误差。具体做法:用AutoAWQ的搜索算法,在校准集上逐层测试INT4 vs INT8的损失变化,保留损失上升>0.5%的层为INT8。实测LLaMA-13B中,约30%的层需要INT8,70%可用INT4。
5️⃣ 避坑 · 常见错误答法
- ❌ 只按精度分类,说“量化就是INT8和INT4两种” → ✅ 必须从精度、方法、粒度、对称性四个维度交叉分类,展示系统性理解。
- ❌ 说“QAT比PTQ好,所以应该都用QAT” → ✅ 指出QAT成本高(数天GPU+全量数据),PTQ是工业界主流,QAT只用于对精度极度敏感的场景(如医疗模型)。
- ❌ 说“per-tensor量化最差,永远不要用” → ✅ 指出per-tensor在激活值分布均匀的层(如embedding)或对延迟极度敏感的场景(如实时语音)仍有价值,trade-off是工程常态。
6️⃣ 简历呼应
- 如果你有LLM部署项目:从“我在部署LLaMA-7B时,对比了GPTQ和AWQ的INT4量化,发现AWQ对校准集分布更鲁棒,最终选择AWQ+混合精度(保留注意力层为INT8),推理速度提升1.8x,MMLU仅降0.3%”切入。
- 如果你只做过传统CV量化:用“传统CV量化常用per-tensor INT8,但LLM的权重分布更宽(有异常值),需要per-group或per-channel粒度。我迁移了SmoothQuant方法,对激活值做平滑处理后再量化,效果类似”类比。
- 如果你是校招无项目:聚焦“我复现了GPTQ论文,在OPT-125M上实现INT4量化,发现group size=128时精度最优。同时对比了对称/非对称量化,验证了权重用对称、激活用非对称的结论”展示动手能力。
- GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers
- AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration
- QLoRA: Efficient Finetuning of Quantized Language Models
- SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models
- bitsandbytes: 8-bit and 4-bit quantization library for PyTorch