Quantização
Inteligência Artificial
Inferência Local
Navegador
Performance

量化模型:在浏览器中运行人工智能的关键

量化以一点精度换取大量尺寸和速度,这就是使小型变压器在用户设备上运行可行的原因。

量化模型:在浏览器中运行人工智能的关键

围绕前端人工智能有一个古老的承诺:直接在用户设备上运行模型,无需服务器,无网络延迟,无需按请求付费。很长一段时间,这个承诺与一个乏味的细节发生了冲突。对于人们手中的硬件来说,这些模型太大而且太慢。

改变游戏规则的部分不是新架构或神奇芯片。这是一种称为量化的压缩技术。它的讨论较少,但对于任何评估浏览器内人工智能的技术领导者来说,它可能是最重要的概念。值得了解它的作用、成本以及何时不再值得。

说白了,什么是量化

人工智能模型的核心是一堆数字。这些数字(权重)在训练期间进行调整,并定义模型如何响应。问题是你用多少位来存储这些数字。

历史训练标准是32位浮点。每个权重占用四个字节并具有较高的数值精度。量化意味着用更少的位来表示相同的重量:16、8,有时是 4。您可以将带有毫米的尺子替换为带有更厚标记的尺子。

直接的结果就是算术。从 32 位变为 8 位,模型的大小减少了四倍。 400 兆字节的模型变成了 100 兆字节。而且由于内存和处理器之间移动的数据更少,推理速度也会加快。加载的位数更少,乘法的位数更少,响应速度更快。

为什么这在浏览器中如此重要

浏览器是一个狭窄的环境。您无法控制用户的设备,可用内存是有限的,下载的每兆字节都是在用户可以随时关闭的选项卡中等待的时间。半千兆字节模型在实践中是不可行的,即使它在技术上可以运行。

量化正是针对这两个瓶颈:下载大小和执行期间的内存消耗。一个小型变压器,在完全精确的情况下,太重而无法在页面上打开,当减少到 8 或 4 位时,它就变得经济实惠。这是实验室实验与实际产品中进行的实验之间的区别。

对硬件也有影响。许多现代处理器(包括手机中的处理器)都具有针对 8 位整数运算进行优化的指令。量化模型不仅占用更少的空间,而且可以更好地与大多数人口袋里携带的芯片进行交互。这与[在设备上本地运行人工智能0]的论点直接相关:隐私是因为数据不会离开设备;零服务器成本是因为帐户在客户端上运行。

任何人都不能忽视的权衡

天下没有免费的午餐。当您使用较少的位数来存储数字时,您就会失去分辨率。在 32 位中略有不同的两个权重在 8 位中可以变成相同的值。这种舍入会在模型的各个层中累积,并表现为响应质量的下降。

好消息是,损失通常很小,这也是该技术流行的原因。对于许多任务,最终用户几乎感觉不到全精度模型和 8 位模型之间的差异。这些模型在权重上有大量的冗余,并且丢弃一些精度很少会破坏整体行为。

当您按下时,计数会发生变化。从 32 位到 16 位,损失通常可以忽略不计。 16 点到 8 点,对于大多数情况来说仍然是安全的。在 4 位时,您将进入根据任务开始出现退化的情况,并且更智能的量化技术开始产生真正的影响。压缩越激进,结果就越取决于仔细的量化,而不是底鼓。

并非所有量化都是平等的

区分两条路径是值得的,因为它们对决策者有不同的影响。一是训练后量化,采用现成的模型并降低权重的精度。它便宜、快速,并且在大多数情况下效果出奇的好。

另一种是在训练过程中准备量化模型,教导网络从小就以降低的精度生活。它需要更多的工作和更多的成本,但在激进的机制(例如 4 位)中提供更好的质量。对于大多数浏览器场景,第一种方法可以解决问题。当你需要在不牺牲结果的情况下最大限度地利用它时,第二个就会出现。

实际教训是,“量化模型”一词并不能说明一切。两个 8 位模型可以具有非常不同的质量,具体取决于它们的量化方式、以更高的精度保留哪些层以及如何校准值。在评估一个选项时,询问它是如何量化的,而不仅仅是多少位。

什么时候值得,什么时候不值得

当任务可以容忍一定的误差并且可行性增益很大时,量化就会得到回报。文本分类、语义搜索、意图检测、建议、轻量级转录、初始审核。在这些情况下,准确性的微小下降不会改变体验,但在客户端上运行会改变成本、延迟和隐私方面的一切。

当产品精度很高时,这是不值得的。微小偏差会传播并污染结果的计算、具有直接监管或财务后果的决策、确定和几乎确定之间的差异代价高昂的任务。在这些情况下,在浏览器中运行所节省的费用并不能弥补降级的风险,并且具有全精度模型的服务器仍然是清醒的选择。

常见的错误是将量化视为打开或关闭的二进制开关。这是一个音量按钮。您可以在尺寸、速度和质量之间的曲线上选择适合您任务的点。正确的决定很少是极端的,它是用户没有注意到损失而你获得收益的点。这种推理符合具有本地推理功能的浏览器内人工智能的更大愿景,其中压缩是使帐户可关闭的原因。

要点

量化不是幕后技巧,它是使浏览器内人工智能变得实用而不是理论的条件。它降低了权重的数值精度,以缩小模型并加快推理速度,但如果做得好,质量损失也很小,不会造成麻烦。

对于那些决定架构的人来说,他们的工作不是装饰。它认识到存在一条权衡曲线,了解您的任务所处的位置并在开始之前衡量真正的质量。问题从来不在于量化是否会降低模型的性能。问题在于这种退化对你正在构建的东西是否重要。

如果您正在评估产品中的本地人工智能,那么值得从小处开始:承担一项宽松的任务,在您打算支持的最低端设备上测试量化模型,并在提交之前进行测量。惊喜通常是令人愉快的。

另请阅读

  • [浏览器中的人工智能:为什么要在用户设备上运行推理2?
  • [WebNN:为浏览器带来硬件加速的 API3
  • [WebNN 和 ONNX Runtime Web:浏览器中的加速推理堆栈4
  • [端侧AI:服务器与端侧的战略决策5
  • [软件开发中的人工智能代理:采用治理6
  • [反人工智能失利:为什么人类内容的需求不断增长77