趋近智
模型量化中常用具体的整数数据类型。这样做的主要目的是用低精度整数来替代原始大型语言模型中用于权重(有时也用于激活值)的高精度浮点数(如32位浮点数,或FP32)。这种方法通过整数表示的独特特性,能大幅减少模型的内存占用,并显著加快计算,尤其是在针对整数运算优化的硬件上。
量化中最常见的整数类型是8位整数(INT8)和4位整数(INT4)。
8位整数使用8位来表示一个数字。这允许有28=256个不同的值。根据是否需要表示负数,INT8可以是:
与FP32相比(因为FP32使用32位),使用INT8能将数据大小减少4倍。如果只对权重进行量化,这意味着模型大小直接减小4倍,并可能为推理过程中的激活值节省大量内存。许多现代CPU和GPU都有专用指令,能快速执行INT8计算,从而大大提升速度。INT8量化通常能在计算效率和保持模型精度之间取得不错的平衡,使其成为许多应用中的常用选项。
为了获得更大的压缩比和潜在的速度提升,可以使用4位整数(INT4)。4位整数只允许有24=16个不同的值。
从FP32到INT4表示数据大小减少了8倍。这对于在资源受限设备上部署大型模型或将更大模型放入可用GPU内存中非常有用。然而,用仅16个离散级别来表示浮点值的原始范围,比用256个级别(INT8)要困难得多。因此,INT4量化通常会引入更多量化误差,如果应用不当,可能会导致模型精度明显下降。通常需要应用稍后讨论的先进方法(比如第3章的GPTQ和AWQ),才能使INT4达到好的表现。
虽然INT8和INT4是最常见,研究和具体应用有时也会考虑其他位宽:
下方图表展示了量化中常用数据类型相对于标准FP32的位宽减少情况。
模型量化中不同数值数据类型所用位数对比。更低的位宽可带来更小的模型尺寸和潜在的更快推理速度。
整数数据类型的选择涉及一种权衡。更低的位宽(如INT4)能节省更多内存并潜在地提升速度,但由于表示方式更粗糙,会增加精度损失的风险。更高的位宽(如INT8)能保持更多精度,但压缩较少。选择哪种取决于特定的LLM、目标硬件以及对性能下降的接受程度。
认识这些整数类型很重要。在接下来的部分,我们将讨论如何使用不同的方案和粒度,将原始浮点值映射到这些整数提供的有限范围上。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造