跳转至

二十:模型压缩:GPTQ、AWQ、剪枝与蒸馏自测题答案

来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247484176&idx=1&sn=7e2022eff56754ed6587723505728415&chksm=f01eb069c769397fc6249aa108e5d655f69cd38d59cdd5011ab23d8afa8db5ecd5725a423d6a#rd

参考资料

  • GPTQ 原论文:https://arxiv.org/abs/2210.17323

  • AWQ 原论文:https://arxiv.org/abs/2306.00978

  • 量化、剪枝和蒸馏,有代码:https://blog.csdn.net/m0_59257547/article/details/140613606

  • AutoGPTQ:https://github.com/AutoGPTQ/AutoGPTQ

  • llm-awq:https://github.com/mit-han-lab/llm-awq

  • Hugging Face 量化文档:https://huggingface.co/docs/transformers/quantization

评分标准

  • 合格:能说明 GPTQ、AWQ 的核心思想,知道 4-bit weight-only、group size、剪枝和蒸馏基本概念。

  • 良好:能解释 GPTQ 的 Hessian/误差补偿、AWQ 的 activation-aware scaling、方法对比和部署依赖。

  • 优秀:能按目标显存、速度、精度、硬件和任务指标设计组合压缩方案。

一、Weight-only 4-bit PTQ

1. 什么是 weight-only quantization?

只量化模型权重,activation 通常保持 FP16/BF16。它主要降低权重存储和内存带宽。

2. 4-bit weight-only PTQ 相比 INT8 量化主要优势是什么?

权重存储进一步降低,理论上 INT4 权重比 INT8 再省一半显存,更适合单卡部署大模型。

3. weight-only 量化中 activation 通常是什么精度?

通常是 FP16 或 BF16。

4. weight-only 量化为什么能降低内存带宽压力?

权重以低 bit 读取,单位时间从显存搬运的数据更少,decode 阶段常受权重带宽限制,因此收益明显。

5. 4-bit 量化为什么比 8-bit 更容易损失精度?

4-bit 只有 16 个离散级别,表示能力远低于 INT8,rounding 和 clipping 误差更大。

6. 什么是 packed int4 weight?

把多个 4-bit 权重打包进一个字节或机器字中存储,例如一个 byte 存两个 int4。

7. group-wise quantization 在 4-bit 中为什么常见?

每组权重共享 scale,在精度和元数据开销之间折中,比 per-tensor 更准,比 per-channel/per-weight 更省。

8. group size 变小和变大分别有什么影响?

group size 小,scale 更细,精度好但元数据多。group size 大,压缩更高但误差更大。

9. 为什么 weight-only 量化不一定带来完整 INT4 计算加速?

activation 仍是 FP16/BF16,很多 kernel 会反量化权重后做混合精度 GEMM,速度取决于 fused dequant-GEMM 实现。

10. GPTQ 和 AWQ 为什么都属于 PTQ?

它们都在已有训练完成的模型上,用少量校准数据进行量化,不需要从头训练模型。

二、GPTQ 基础

11. GPTQ 的全称是什么?它主要解决什么问题?

Generative Pre-trained Transformer Quantization。它解决 GPT 类大模型低 bit 训练后权重量化时的精度保持问题。

12. GPTQ 和 naive round-to-nearest 量化有什么区别?

naive 方法独立 round 每个权重。GPTQ 使用二阶信息和误差补偿,量化一个权重后调整剩余权重。

13. GPTQ 与 OBQ 有什么关系?

GPTQ 继承 Optimal Brain Quantization 的二阶误差补偿思想,并把它扩展到大规模 GPT 模型的高效量化。

14. GPTQ 的优化目标可以如何写成输出误差最小化?

对线性层:

min ||XW - XW_q||^2
其中 X 是校准 activation。

15. 为什么 GPTQ 需要校准数据?

需要收集各层输入 activation X,估计量化误差对真实输入分布下输出的影响。

16. GPTQ 中 Hessian 近似通常来自什么?

来自校准输入的二阶统计:

H ≈ X^T X

17. H ≈ X^T X 的直觉含义是什么?

它表示输入通道的相关性和敏感性。权重误差经过真实 activation 放大后产生输出误差。

18. 为什么二阶信息能帮助判断权重量化敏感性?

二阶信息近似 loss 或输出误差对权重扰动的曲率,曲率大说明该方向误差影响更大。

19. GPTQ 中 damping 的作用是什么?

damping 给 Hessian 对角线加稳定项,避免矩阵病态或求逆不稳定。

20. GPTQ 为什么通常逐层量化?

逐层处理能降低内存和计算复杂度,也能用每层 activation 统计独立补偿误差。

三、GPTQ 误差补偿与实现

21. GPTQ 中量化一个权重后为什么要补偿剩余权重?

量化误差会影响层输出。通过调整未量化权重,可以抵消一部分输出误差。

22. 什么是 quantization error compensation?

在量化某些权重后,根据误差和 Hessian 信息更新其他权重,使整体输出误差最小化。

23. GPTQ 的基本量化流程是什么?

收集校准 activation;计算 Hessian 近似;逐层分块量化权重;按二阶信息补偿误差;保存 int4 权重和 scale。

24. GPTQ 中 act-order 或 desc_act 的作用是什么?

按 activation 重要性排序优先量化更重要通道,通常能提升低 bit 量化精度,但可能增加复杂度。

25. GPTQ 中对称/非对称量化如何影响精度和实现?

非对称量化更灵活,可能精度更好;对称量化实现简单,kernel 更友好。

26. GPTQ 中 group size 对 scale 元数据有什么影响?

group size 越小,scale 数量越多,元数据越多;group size 越大,scale 更少但误差更大。

27. GPTQ 量化过程为什么比 AWQ 更重?

GPTQ 需要估计 Hessian、做分块求逆或近似、执行误差补偿;AWQ 主要做 activation 统计和 scaling 搜索。

28. GPTQ 对校准集大小和序列长度为什么敏感?

校准集决定 X^T X 和敏感性估计。样本太少或长度不代表真实场景会导致补偿方向不准确。

29. GPTQ 的主要优点是什么?

低 bit 精度强、无需重训、校准数据少、生态成熟,适合 4-bit LLM 推理。

30. GPTQ 的主要局限是什么?

量化过程较重、参数敏感、依赖 kernel、对校准分布敏感,某些模型和任务仍会退化。

四、AWQ 基础

31. AWQ 的全称是什么?

Activation-aware Weight Quantization。

32. AWQ 的核心观察是什么?

少量 salient weights 对模型输出非常重要,而这些重要性可由 activation 分布识别。

33. 什么是 salient weights?

对真实输入 activation 下输出影响很大的关键权重或通道。

34. AWQ 为什么说“不是所有权重同等重要”?

大多数权重可低 bit 量化,少数关键权重需要更好保护,否则会显著影响输出。

35. AWQ 为什么使用 activation 统计来判断权重重要性?

权重是否重要取决于它和真实输入 activation 的乘积贡献,而不只是权重绝对值。

36. AWQ 是否需要 Hessian?这带来什么优势?

不需要 Hessian,因此量化流程更轻、更快,内存和计算成本更低。

37. AWQ 的 scaling 思想是什么?

通过等价缩放放大重要通道权重,使其量化后保留更多信息,同时对 activation 做反向缩放保持输出等价。

38. 请写出 AWQ 等价缩放的直觉公式。

Y = XW = (X / s)(sW)

39. AWQ 和 SmoothQuant 的 scaling 思路有什么相似点?

都利用线性层中 activation 和 weight 的等价缩放,在不改变数学输出的前提下改变量化难度分布。

40. AWQ 和 SmoothQuant 的目标有什么不同?

SmoothQuant 主要平滑 activation outlier 做 W8A8;AWQ 主要保护 salient weights 做 weight-only INT4。

五、AWQ 流程与优缺点

41. AWQ 的基本量化流程是什么?

收集 activation 统计;搜索 scaling;应用 scaling;做 group-wise INT4 量化;保存量化权重;用 AWQ kernel 推理。

42. AWQ 中 calibration data 起什么作用?

用于识别真实输入下的重要 activation 通道和搜索 scaling 参数。

43. AWQ 为什么通常比 GPTQ 量化速度更快?

AWQ 不需要 Hessian 求逆和二阶误差补偿,计算流程更轻。

44. AWQ 对 instruction-tuned 或 multimodal 模型为什么可能更友好?

activation-aware 机制关注真实输入分布和关键通道,对不同任务/模态的输入统计更适配。

45. AWQ 的主要优点是什么?

速度快、不需要 Hessian、精度好、部署友好,适合 4-bit weight-only 推理。

46. AWQ 的主要局限是什么?

依赖校准数据和 scaling 搜索,极低 bit 或特殊任务可能退化,kernel 支持仍关键。

47. AWQ 中 scaling 搜索如果不合适会发生什么?

重要权重保护不足或其他权重误差增加,导致模型精度下降。

48. AWQ 和 GPTQ 在部署 kernel 上有什么共同依赖?

都需要高效 int4 weight packing、dequantization 和 fused matmul kernel,才能获得真实速度收益。

49. AWQ 和 GPTQ 在 4-bit 推理中的显存收益主要来自哪里?

权重以 4-bit 打包存储,显著减少参数显存和内存带宽。

50. AWQ 和 GPTQ 谁一定更好?为什么不能绝对判断?

没有绝对结论。效果取决于模型、任务、校准集、group size、kernel、硬件和评估指标。

六、方法对比与选型

51. GPTQ 和 AWQ 在核心思想上有什么区别?

GPTQ 用二阶信息做误差补偿。AWQ 用 activation 统计识别并保护重要权重。

52. GPTQ 和 AWQ 在校准信息使用上有什么区别?

GPTQ 用 activation 构造 Hessian 近似。AWQ 用 activation 统计做重要性和 scaling 搜索。

53. GPTQ 和 AWQ 在量化成本上有什么区别?

GPTQ 更重,AWQ 更轻。GPTQ 需要 Hessian 相关计算,AWQ 主要是统计和搜索。

54. GPTQ/AWQ 与 LLM.int8() 有什么区别?

GPTQ/AWQ 是 4-bit weight-only PTQ;LLM.int8() 是 8-bit mixed precision,专门处理 activation outlier。

55. GPTQ/AWQ 与 SmoothQuant 有什么区别?

SmoothQuant 面向 W8A8,把 activation 难点迁移到 weight。GPTQ/AWQ 主要压缩权重,activation 保持高精度。

56. GPTQ/AWQ 与 NF4/QLoRA 有什么区别?

GPTQ/AWQ 主要用于推理部署量化。NF4/QLoRA 主要用于低显存微调,冻结 4-bit base 并训练 LoRA。

57. 如果目标是最低显存推理,你会优先考虑哪些方法?

优先考虑 INT4 weight-only,如 GPTQ、AWQ,也可考虑更低 bit 或 KV cache 量化,但要评估精度。

58. 如果目标是 INT8 GEMM 加速,你会优先考虑哪些方法?

SmoothQuant/W8A8,或硬件支持良好的 INT8 推理路线。

59. 如果目标是低显存微调,你会优先考虑哪些方法?

QLoRA/NF4 加 LoRA adapter。

60. 选择 GPTQ/AWQ 时应该评估哪些任务指标?

困惑度、MMLU/数学/代码/对话、安全、长上下文、速度、显存、吞吐、延迟和真实业务指标。

七、剪枝与蒸馏

61. 什么是模型剪枝?

删除模型中不重要的权重、通道、head、neuron 或 layer,以减少参数和计算。

62. unstructured pruning 和 structured pruning 有什么区别?

unstructured 删除单个权重,稀疏不规则。structured 删除规则结构,如通道或层,更硬件友好。

63. semi-structured pruning 是什么?举例说明。

在固定局部模式中稀疏,例如 2:4 sparsity,每 4 个权重保留 2 个,便于硬件加速。

64. 为什么 structured pruning 更容易获得真实推理加速?

它减少矩阵维度或层数,能直接用标准 dense kernel 加速;不规则稀疏需要专门硬件和 kernel。

65. 剪枝重要性指标有哪些?

权重 magnitude、activation magnitude、gradient/Taylor、Hessian、attention head 贡献、通道输出范数。

66. 剪枝后为什么常需要 fine-tuning 或 distillation?

剪枝破坏模型表示和能力,需要训练恢复精度,蒸馏可让压缩模型学习 teacher 行为。

67. 什么是知识蒸馏?

用大模型 teacher 指导小模型 student,匹配 logits、hidden states、attention 或生成行为。

68. logits distillation 和 hidden states distillation 有什么区别?

logits distillation 匹配输出概率分布。hidden states distillation 匹配中间层表示。

69. sequence-level distillation 在 LLM 中如何使用?

用 teacher 生成高质量回答或推理轨迹,再用这些数据训练 student。

70. 请完整设计一个“量化 + 剪枝 + 蒸馏”的模型压缩方案,并说明评估指标。

先选择 teacher 和目标 student;做结构化剪枝减少层/head/MLP;用 teacher logits/序列数据蒸馏恢复能力;再用 AWQ/GPTQ 做 INT4 量化;最后在真实硬件上评估显存、延迟、吞吐、困惑度、任务准确率、长上下文、代码/数学和安全指标。若精度下降,回退剪枝率、调整量化 group size 或增加蒸馏数据。

            预览时标签不可点




































<div class="