什么是机器学习中的量化?

量化让机器学习模型能够使用更少的内存和算力,来加快响应速度并降低成本。不过,它可能会降低 AI 推理的精度。

学习目标

阅读本文后,您将能够:

  • 阐述量化的定义
  • 描述量化如何提高效率但降低精度
  • 了解 AI 中使用量化的原因和场景

复制文章链接

什么是机器学习中的量化?

量化是一种用于减轻运行机器学习人工智能 (AI) 模型的负担的方法,旨在减少 AI 推理所需的内存。量化特别适用于大型语言模型 (LLM)

一般来说,量化是指将数字信号从高精度格式转换为占用空间更少但精度因此有所下降的格式的过程。其目标是缩小信号,以便提高处理速度。在机器学习和 AI 中,量化的目的是加快模型运行速度,使用更少的算力,或两者兼具。最终,这让用户能够在更实惠的硬件上运行 AI 模型,同时在理想情况下,最大限度减少对准确度的影响。

为了直观地展现量化如何减少 AI 推理所占用的内存空间,试想一下,一个特定宽度(可能只有几英寸)的管子,有人需要将许多弹珠滚入管中。如果滚动大弹珠,一次只能有两三个弹珠通过管中的一个点。如果滚动小弹珠,一次可以通过更多个弹珠。因此,使用小弹珠意味着更多个弹珠可以更快速地通过管子。

量化就相当于将大弹珠转换为小弹珠,减少了用于推理的信息所占用的内存空间,因此,可以更快速地输入更多信息并提高 AI 计算的效率。

为什么使用量化方法?

机器学习(一种人工智能)所使用的模型极其复杂。它们使用大量的内存和算力。事实上,人工智能的日益普及导致了电力短缺问题:运行高级机器学习模型的服务器需要消耗大量电力。某些情况下,公共电网无法满足所有这些需求。由此催生了许多富有创意的解决方案,包括增加使用太阳能、重新启动已停用的核电站

量化旨在从另一方面减轻计算负担,以减少 AI 模型本身的消耗能源。对于运行 AI 模型的开发人员和组织来说,这有助于提升 AI 成本效益,因为并不是每个人都负担得起重新启动旧核电站的费用。

量化会对精度产生怎样的影响?

要了解量化对精度的影响,试想一下向人问路的场景。对方可能会提供逐个转弯的街道列表、每条街道的名称,以及每条街道前后的街道名称。这样的一组路线说明非常精确,但你可能难以记住。相反,如果对方说“第二个路口左转,第四个路口右转,第一个路口左转。”虽然这不是那么精确,但更容易记住。

在 AI 中,量化的工作原理是减少数据点使用的位数。位数的损失意味着可能会降低些许精度。结果可能是输出中出现更多错误(就像在上面没有指明街道名称的情况下,司机可能会认错“第四个路口右转”)。但是,量化有多种类型,其中一些类型比其他类型更精确。

在实践中,公司或用户都拥有量化后的 AI 模型“足够好”的用例。这些用例通常不需要非常精确的结果。示例之一是跟踪社交媒体趋势和提及 (@) 情况,无需精确的数据点,而是关注总体情绪和参与度。

什么是训练后量化 (PTQ)?

训练后量化 (PTQ) 是指将量化应用于已经训练过的、早已存在的模型。PTQ 可以相对快速地应用于已经训练过的模型。它与量化感知训练 (QAT) 形成对比,后者在模型训练之前进行,并且需要相当大的算力。PTQ 的工作原理是将浮点数转换为定点数。

什么是浮点表示法?

浮点表示法是一种高精度的数字表示方法,常用于机器学习和深度学习。通过浮点表示法存储的数字会占用一定的位数,要么是 16 位,要么是 32 位(具体取决于所用浮点表示法的类型)。

许多类型的量化可以将位数降至 8 位。结果是,量化后的数字占用一半或四分之一的内存空间。当然了,由于位数减少,量化后的值不如浮点数精确,就像小数位数较少的数字(例如 3.14)不如小数位数较多的数字(例如 3.141592654)精确一样。

什么是激活感知权重量化 (AWQ)?

激活感知权重量化 (AWQ) 是一种旨在兼顾效率提升与精度平衡的方法。AWQ 会保护模型中最重要的权重不被篡改。(权重是指衡量数据集内各项之间关系的值。)回想一下上文提及的路线示例。试想一下,指路人说“第二个路口左转,在第 12 街右转,然后第一个路口左转”,而不是说“第二个路口左转,第四个路口右转,第一个路口左转。”虽然提供了一些更精确的信息,但仍然是一个相对简短且易于记忆的的方向说明。AWQ 的工作原理与此类似,也就是:保持模型的某些整数值不变,同时改变其他整数值。

Cloudflare Workers AI 支持融入了浮点量化和 AWQ 的一些大型语言模型 (LLM),因此,减少内存占用空间,消耗更少算力,并维持适当的精度。如需了解更多信息,请参阅 Cloudflare Workers AI 文档