接待来到雲闪天下。大型号CPU 上的 LM?是的,你没听错。从处理对话到创建自己的图像,人工智能自诞生以来已经取得了长足的进步。但它也带来了瓶颈。随着模型的扩展,它们的计算需求也随之增长。人工智能开始严重依靠计算能力。为了满足这些需求,我们转向了 GPU,剩下的就成了历史。
许多设备不具备强大的 GPU,因此无法发挥 AI 功能。为了在计算能力有限的设备(如手机或仅配备 CPU 的计算机)上运行 AI 模型,有必要缩小这些模型的大小和性能。早期的努力包括修剪和蒸馏等技术。然而,这些方法对于通常具有大规模架构的 LLM 来说并不可行。
近来,LLM 的 AI 革命或多或少是基于云服务器举行练习、部署和推理的。然而,重要参与者现在正在将 LLM 功能扩展到边缘设备。微软的 copilot+PC 就是一个很好的例子,值得期待。随着我们走向边缘部署,在不影响性能或质量的情况下优化 LLM 大小变得至关告急。实现这种优化的一种有效方法是通过量化。
在本文中,我们将深入探究量化和一些最先进的量化方法。我们还将相识怎样使用它们。
量化:是什么?为什么?
根据精度要求和可用的计算资源,神经网络的权重可以用各种数据范例表现。量化是一种将高精度权重值(如 FP32)的范围(由数据范例的 [最小值,最大值] 决定)映射到较低精度值(如 FP16 或甚至 INT8(8 位整数)数据范例)的过程。
考虑一下你的 400M 参数 LLM。通常,权重以 FP32(32 位)存储。此模型的内存占用可以计算如下:
4x10⁸ 参数 x 4 字节= 1.6 GB
量化上述模型可以显着减小尺寸。考虑从 FP32 到 INT8 的转换。量化模型的内存占用量可以计算如下:
4x10⁸ 参数 x 1 字节 = 0.4 GB
这是原始大小的1/4 !这有助于模型占用更少的内存,并提高推理速度,只管这大概会轻微影响准确性。别的,其中一些轻量级模型可以轻松由 CPU 处理。
量化过程中权重的范围映射通常使用两种方法完成。
线性/尺度量化
这里的量化雷同于在指定范围内的缩放。Rmin被映射到Qmin,Rmax被映射到Qmax。现实范围内的0被映射到量化范围内的相应zero_point 。
仿射量化
此方法可以表现更多不对称范围。这里的参数是:
对于 INT8 数据范例,公式如下
应用此转换后,某些数据将超出范围。为了将它们纳入范围,必要使用额外的裁剪操作。
在量化大型语言模型 (LLM) 时,重要有两种范例的量化技术:
练习后量化(PTQ)
顾名思义,LLM 在练习阶段后举行量化。权重从较高精度转换为较低精度的数据范例。它可以应用于权重和激活。虽然速度、内存和功耗都得到了高度优化,但仍存在准确性的衡量。
在量化过程中,会发生舍入或截断,从而引入量化误差。此误差会影响模型表现权重之间细粒度差别的能力。
量化感知练习
这项技术是为了减轻 PTQ 情况下模型精度的潜伏损失而开辟的。与 PTQ 相比,量化过程与练习本身融为一体,因此使该过程具有“量化感知”功能。
在 QAT 中,模型架构最初经过修改,以同时保留元素的全精度和量化版本,其中包括权重和激活,从而创建双存储体系。在练习过程的前向传递过程中,将模仿或“假”量化引入模型,使其在计算梯度时体验量化效果,同时仍保留精度,从而增强模型对量化的鲁棒性。
|