什么是量化?

美国,亚利桑那州,羚羊峡谷

作者

Bryan Clark

Senior Technology Advocate

量化是降低数字信号精度的过程,通常从较高精度格式降低到较低精度格式。量化技术广泛应用于各个领域,包括信号处理、数据压缩和机器学习。

量化是大语言模型 (LLM) 中使用的一种技术,用于将高精度数据(通常为 32 位浮点数 (FP32) 或 16 位浮点数 (FP16))的权重和激活值转换为低精度数据(如 8 位整数 (INT8))。高精度数据(指 FP32 和 FP16)因使用这些数据类型的模型通常具有较高准确性而得名。这是因为当数据被压缩为类似 INT8 之类的类型时,它们会被压缩到更小。这实际上会降低准确性,也称为量化误差。激活值是分配给神经网络的人工神经元的数字(介于 0 和 1 之间)。这一分配的数字被称为激活值。一般以 8 位量化为目标,但已成功实现 4 位整数 (INT4) 及更低的量化数据。本质上,量化过程会使用神经网络上的压缩技术将较多位数转换为较少位数。1

使用 FP32 运算 LLM 的计算要求可能非常巨大。随着计算要求的增加,推理(LLM 对用户查询生成响应的过程)也会变慢。量化可以是一个很好的优化工具,既可以减轻计算负担,又可以提高 LLM 的推理速度。量化过程围绕着将权重转换为较低精度数据类型的前提,而模型的性能几乎保持不变。将权重转换为较低精度的数据类型将降低计算成本,因为每次运行模型时需要处理的位数较少。处理的位数较少也会加快 LLM 中的每个查询的处理速度。

小球在轨道上滚动的三维设计

最新的 AI 新闻 + 洞察分析

在每周的 Think 时事通讯中,发现专家精选的有关 AI、云等的洞察分析和新闻。 

为什么要实施量化?

推理速度更快

通过利用量化将浮点数据类型转换为整数,可以更快地完成计算。这就减少了模型的整体延迟,在保持准确性的同时提高了推理速度。这种权衡对于任何实时应用程序都至关重要,尤其是在移动 CPU 上运行时。2

高效率

尝试在无法处理更高计算要求的设备上运行机器学习模型时,量化至关重要。当量化将浮点表示形式转换为整数表示形式时,它减少了机器学习模型的计算需求。这样,就能够在笔记本电脑、平板电脑和智能手机上的实际应用程序中使用这些量化模型。2

降低功耗

通常,量化模型的计算要求较低。因此,量化可以提高能效,这对于在笔记本电脑、平板电脑和手机上运行这些模型至关重要。3

兼容性

利用量化技术,当前的机器学习模型可以使用整数运算运行。这样,量化模型将与不支持浮点运算的旧平台兼容。而且,这些模型更易于访问,从而可以在消费级 GPU 上运行它们。4

量化的工作原理

FP32 的可能值范围为 -3.4 1038 到 3.4 1038,值集中约有 40 亿个值。而对于 INT8,我们只能看到可能值集内的 256 个值,值范围为 -128 到 128。由于后者是一组明显较小的值,因此矩阵乘法的发生速度要快得多。由于基于深度学习的模型的计算成本巨大,因此准确和高效的算法至关重要。

量化过程首先要确定将 32 位浮点数值投射到 INT8 字段的最佳路径。为此,可通过多种算法对模型进行量化。我们将了解两种量化方法:最大绝对值量化和仿射量化。

最大绝对值量化

要计算最大绝对值量化中浮点数与其对应的 INT8 数之间的映射,必须首先除以张量的最大绝对值,然后乘以数据类型的最大可表示值。

例如,我们将对向量 [1.6, -0.7, -3.4, 1.7, -2.9, 0.5, 2.3, 6.2] 应用最大绝对值量化算法。可以提取该向量的最大绝对值,在本例中为 6.2。INT8 的范围是 [-127, 127],因此,我们将 127 除以 6.2,得到缩放因子 20.5。因此,将原始向量乘以它可得出量化数据向量 [33, -14, -70, 35, -59, 10, 47, 127]。由于这些数字是四舍五入的,因此会有一些精度损失。5

仿射量化

为了实现仿射量化算法,我们将 32 位浮点值的范围定义为 [a, b]。仿射量化算法如下:

𝑥𝑞 = round ((1/𝑆)𝑥+𝑍)

- 𝑥𝑞 是与 32 位浮点数值 x 对应的量化 INT8 值。

- S 是 FP32 缩放因子,为正的 32 位浮点数。

- Z 是 0 点。它将是与 32 位浮点字段中的 0 相对应的 INT8 值。

- round 是指将结果值四舍五入到最接近的整数。

为了确定 32 位浮点值的 [min, max] 值,我们需要考虑任何异常值。忽视这些异常值可能会导致它们被映射为最小值或最大值,从而可能影响量化模型的准确性。为了解决这个问题,可以对模型进行分块量化。权重可以进一步细分为 64 或 128 的倍数。然后,对它们进行量化,以考虑异常值,并最大限度地降低精度降低的风险。6

AI 学院

为什么说基础模型是 AI 的范式转变

了解灵活、可重复使用的一类全新 AI 模型,这些模型可以带来新收入、降低成本并提高工作效率。还可以参阅我们的指南手册,深入了解这些模型。

量化类型

训练后量化 (PTQ)

对现有模型应用量化时,会发生训练后量化。这会将模型从浮点表示形式转换为较低精度的定点整数表示形式,而无需任何重新训练。该方法不需要像量化感知训练那样多的数据,而且速度更快。然而,由于现有模型本质上被转换为更小的模型,训练后量化可能会导致性能下降。使用 PTQ 的一个例子是,已经有一个工作模型并希望提高速度和效率时。这是因为 PTQ 发生在模型训练完成(即已经存在的模型)之后,因此这一过程不需要大量训练数据。7

量化感知训练 (QAT)

量化感知训练包括在 LLM 的预训练或微调过程中转换权重。这样可以提高性能,但它需要大量的计算能力,并且需要具有代表性的训练数据。总体而言,量化感知训练通常会产生性能更高的模型,但成本更高,并且需要更多的计算能力。使用 QAT 的一个例子是,拥有足够的训练数据和较高预算时。另外,请记住,这个过程是在模型的训练阶段进行的,因此在已经训练好的模型上使用这种方法是没有意义的。7

动态量化与静态量化技术的对比

这两种技术的目的是如何选择裁剪范围,或通常所说的校准。在动态量化过程中,每次激活都会动态计算裁剪范围。通常,这种量化技术可实现较高的准确性。顾名思义,静态量化对所有输入使用固定的裁剪范围。这种量化形式更常用作动态量化,并且可能非常昂贵。

量化风险和局限性

较低精度

在量化过程中转换权重时,量化机器学习模型的量化值有时会出现准确性损失。应考虑模型大小,因为对具有大量参数和层的特大型 LLM 时,存在显著量化误差累积的风险。8

成本

机器学习模型规模训练的成本可能极高,尤其是量化感知训练 (QAT)。从成本效益的角度来看,训练后量化 (PTQ) 将是最佳选择。然而,这确实在某些方面限制了模型,因为 QAT 通常会生成更准确的模型。9

采取后续步骤

深入了解 IBM watsonx 产品组合中的 IBM 基础模型库,满怀信心地为您的业务扩展生成式 AI。

深入了解 watsonx.ai 深入了解人工智能解决方案
脚注

¹ Dong Liu、Meng Jiang、Kaiser Pister,“LLMEasyQuant - 一个易于使用的 LLM 量化工具包”,https://arxiv.org/pdf/2406.19657v2

² Benoit Jacob、Skirmantas Kligys、Bo Chen、Menglong Zhu、Matthew Tang、Andrew Howard、Hartwig Adam、Dmitry Kalenichenko,“高效纯整数算数推理神经网络的量化和训练”,https://arxiv.org/pdf/1712.05877v1

³ Ravi Kishore Kodali、Yatendra Prasad Upreti、Lakshmi Boppana,“一种减小大语言模型规模的量化方法”。

⁴ Xiao Sun、Naigang Wang、Chia-yu Chen、Jia-min Ni、Ankur Agrawal、Xiaodong Cui、Swagath Venkataramani、Kaoutar El Maghraoui、Vijayalakshmi Srinivasan,“深度神经网络的超低精度 4 位训练”,https://research.ibm.com/publications/ultra-low-precision-4-bit-training-of-deep-neural-networks

⁵ Tim Dettmers、Mike Lewis、Younes Belkada、Luke Zettlemoyer,“LLM.int8():用于大型转换器的 8 位矩阵乘法”,https://arxiv.org/pdf/2208.07339

⁶ Amir Gholami、Sehoon Kim、Zhen Dong、Zhewei Yang、Michael W. Mahoney、Kurt Keutzer,“高效神经网络推理的量化方法调研”,https://arxiv.org/pdf/2103.13630

⁷ Hao Wu、Patrick Judd、Xiaojie Zhang、Mikhail Isaev、Paulius Micikevicius,“高效神经网络推理的量化方法调研”,https://arxiv.org/pdf/2004.09602

⁸ Zhuocheng Gong、Jiahao Liu、Jingang Wang、Xunliang Cai、Dongyan Zhao、Rui Yan,“是什么让大语言模型的量化变得困难?从扰动的角度进行实证研究”,https://arxiv.org/pdf/2403.06408v1

⁹ Sehoon Kim、Coleman Hooper、Amir Gholami、Zhen Dong、Xiuyu Li、Sheng Shen、Michael W. Mahoney、Kurt Keutzer,“SqueezeLLM:密集和稀疏量化”,https://arxiv.org/pdf/2306.07629v4