模型量化 Model Quantization

量化是一种用于减少神经网络模型的大小和内存占用的技术。模型量化可以减少深度神经网络模型的内存占用和计算要求。权重量化是一种常见的量化技术,它涉及将神经网络的权重和激活从高精度浮点数转换为低精度格式,例如 16 位或 8 位整数。将模型的权重从标准浮点数据类型(例如,32 位浮点数)转换为较低精度的数据类型(例如,8 位整数),从而减少模型大小和内存需求并提高速度推理(通过降低计算复杂性)。模型量化可以使大型模型(例如 LLM)更容易在计算和内存资源有限的边缘设备上部署应用。

浮点表示:

在各种数据类型中,浮点数主要用于深度学习,因为它们能够以高精度表示各种值。通常,浮点数使用 n 位来存储数值。这 n 位进一步分为三个不同的组成部分:

  1. 符号:符号位表示数字的正数或负数。它使用一位,其中 0 表示正数,1 表示负数。
  2. 指数:指数是一段位,表示基数(在二进制表示中通常为 2)的幂。指数也可以是正数或负数,允许数字表示非常大或非常小的值。
  3. 有效数/尾数:剩余位用于存储有效数,也称为尾数。这代表数字的有效数字。数字的精度在很大程度上取决于有效数字的长度。

深度学习中一些最常用的数据类型是 float32 (FP32) 和 float16 (FP16):

FP32 通常被称为「全精度」(4 字节),而 FP16 则被称为「半精度」(2 字节)。 INT8 数据类型可以做得更好并使用单个字节存储权重,它由能够存储 2⁸ = 256 个不同值的 8 位表示组成。

参考来源

【1】https://www.hopsworks.ai/dictionary/model-quantization

【2】https://medium.com/@sachinsoni600517/introduction-to-model-quantization-4effc7a17000