基于重排序的新量化方法RPTQ:实现大型语言模型的 3 比特量化
大型语言模型(LLMs)在各种任务上表现出色,但由于其庞大的模型规模,部署方面存在挑战。
在这篇论文中,来自后摩智能、腾讯 AI Lab、华中科技大学、北京大学、伊利诺伊理工学院的研究人员发现量化大型语言模型的主要挑战来自于通道之间不同的激活范围,而不仅仅是离群值问题。
作者提出了一种新颖的基于重排序的量化方法 RPTQ,解决了量化大型语言模型激活的问题。RPTQ 通过重新排列激活中的通道,然后将它们分簇进行量化,从而降低通道范围差异的影响。
此外,作者通过避免显式重新排序来减少存储和计算开销。该工作首次将 LLM 模型的激活量化推向 3 比特。激活值的 3 比特量化同时也能与权重的 3 比特量化共同使用,大幅度降低了大型欲言模型的开销。
论文地址:https://arxiv.org/abs/2304.01089
开源地址:https://github.com/hahnyuan/RPTQ4LLM
大规模语言模型(LLMs)在各种任务中展现出了卓越的性能,但由于它们的巨大模型大小,它们的部署面临着挑战。例如一个 66B 模型包含 660 亿个参数,需要大量内存进行存储。另外随着序列长度和批处理大小的增加,内存消耗问题变得更加严重,因为激活也需要消耗大量的内存,例如 Self-attention 中的键和值缓存(Key/Value Cache)。然而,单个 GPU 或服务器并没有足够的内存容量来存储如此庞大的模型权重和中间激活。因此,LLM 需要被分割成多个块并存储在不同的设备中。由于权重和激活存储在不同的设备上,在计算过程中需要在这些设备之间传输数据,导致显著的带宽和能量消耗。
为了克服 LLMs 在模型规模上的挑战,模型量化已成为一种有前途的方法。该技术涉及使用低位整数对 LLMs 的权重和激活进行量化,从而显著降低存储和运行这些模型的成本。具体而言,量化有助于减少保存张量的内存要求,并加速计算密集型操作,例如矩阵乘法和线性层。通过量化权重和激活,减少了存储和通信开销,提高了效率和推理速度。
图 1 不同通道的数值分布情况。每个点都代表一个激活通道中的 (最大值,最小值)。
最近,GPTQ 使用 PTQ 成功地将 LLMs 的权重量化为 4 bit 或 3 bit。然而,对 LLMs 中的激活进行量化仍然是一项具有挑战性的任务。
从图 1 中可以得出两个观察结果:
1)一些通道具有显著的异常值,其最大或最小值比其他通道大几百倍。以前的研究也已经发现了这个问题并针对异常值提出了特殊处理。
2)不同的通道在数值范围上有显著差异。使用相同的量化参数来量化不同的通道可能会导致显著的量化误差。即使两个通道具有相同的异常值绝对值,它们在数值范围上也可能存在很大的变化。
将整个张量使用相同的量化参数进行量化的每张量量化技术可能不太有效。原因是将量化范围设置为覆盖大范围的数值范围可能导致数值较小的通道产生较大的量化误差,而将其设置为覆盖小范围的数值范围可能导致对异常值的显著截断,并导致显著的量化误差。例如,一个通道可能具有 - 100 到 - 50 的值范围,而另一个通道可能具有 80 到 100 的值范围。试图通过将范围从 - 100 到 100 量化来覆盖它们的范围将导致两个通道产生显著的量化误差。这是以前的研究中尚未有效解决的一个挑战。
图 2 解决激活量化问题的不同方法对比。
为了解决激活中通道差异的问题,作者提出了一种新颖的基于重新排序的训练后量化方法 RPTQ。
如图 2 所示,该方法将数值范围相似的通道聚类在一起,然后对每个聚类中的值使用相同的量化参数进行量化。为了实施基于重排序的量化方法,作者首先使用校准数据集作为推理输入,从中导出每个激活通道的最大值和最小值。
接下来,他们采用 KMeans 算法将不同通道划分为 g 个簇,基于每个通道的最大值和最小值形成的点。一旦建立了簇,他们就进行通道重排序,将来自同一簇的通道放置在相近的位置。这样,具有类似最大值和最小值的通道被组合在一起,并共享一组通用的量化参数。在重排序过程之后,作者对每个簇内的激活进行量化。这种方法为每个簇单独计算量化参数(缩放因子 s 和零点 z),确保这些参数专门针对相应的通道。
最终,该方法确保了每个簇的量化都得到优化,减少了量化误差。
图 3:一重排权重和激活的量化 Transformer 层的推断过程失意图。重排索引用符号 R1 到 R5 表示。
显式重排是一种运行时重新排列激活中通道的操作,需要将不同通道的数据从一个内存位置物理移动到另一个位置,因此对于具有大量通道的大型模型,重排过程可能非常耗时。此外,存储源和目标激活张量会增加内存开销。因此,作者提出了避免显式重新排序的策略,从而降低了计算开销,提高了推理效率。
如图 3 所示,作者重新排序线性层的权重,使它们能够直接按照排序顺序产生激活。此外,作者修改了 LayerNorm 的方法,使其能够直接产生重新排序的激活,从而省去了在推理过程中进行显式通道调整。
作者在三种不同的位宽配置下评估了 OPT 的性能:W4A16、W4A8 和 W4A4。此外,作者还开发了一种新的量化方案,W4A4KV、W4A3KV 和 W3A3KV,只对主要内存的消耗 —— 键缓存和值缓存(Key/Value Cache)进行量化。根据表格,可以得出以下观察结果:一般而言,随着激活量化位宽的减少,模型的性能会下降。但在大多数情况下,这种退化并不显著。对于某些任务,性能下降不到 1%,甚至有所提高。
LLM 的内存开销来自三个方面:首先,设备内存中权重的存储,可以通过量化来显著减少。其次,在网络执行期间生成的临时激活需要分配设备内存。这些临时激活可以在使用后释放,因此不会对整体内存使用造成显著影响。最后,键和值缓存(Key/Value Cache)对预测后续单词是必要的。当批次大小和序列长度很大时,键和值缓存占用了大部分内存。
表中展示了不同设置下的内存使用情况,可以发现较低比特的激活可以显著减少内存使用,特别是在批次大小和序列长度较大的情况下。具体而言,当批次大小为 64,序列长度为 8192 时,OPT-66b 下的 W4A4 配置相比 W4A16 配置节省了超过 900GB 的内存。因此,采用 RPTQ 对激活量化可以极大地减少在长文本任务或大批量场景中的内存压力。
以上是基于重排序的新量化方法RPTQ:实现大型语言模型的 3 比特量化的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

想象一下,一个人工智能模型,不仅拥有超越传统计算的能力,还能以更低的成本实现更高效的性能。这不是科幻,DeepSeek-V2[1],全球最强开源MoE模型来了。DeepSeek-V2是一个强大的专家混合(MoE)语言模型,具有训练经济、推理高效的特点。它由236B个参数组成,其中21B个参数用于激活每个标记。与DeepSeek67B相比,DeepSeek-V2性能更强,同时节省了42.5%的训练成本,减少了93.3%的KV缓存,最大生成吞吐量提高到5.76倍。DeepSeek是一家探索通用人工智

AI,的确正在改变数学。最近,一直十分关注这个议题的陶哲轩,转发了最近一期的《美国数学学会通报》(BulletinoftheAmericanMathematicalSociety)。围绕「机器会改变数学吗?」这个话题,众多数学家发表了自己的观点,全程火花四射,内容硬核,精彩纷呈。作者阵容强大,包括菲尔兹奖得主AkshayVenkatesh、华裔数学家郑乐隽、纽大计算机科学家ErnestDavis等多位业界知名学者。AI的世界已经发生了天翻地覆的变化,要知道,其中很多文章是在一年前提交的,而在这一

波士顿动力Atlas,正式进入电动机器人时代!昨天,液压Atlas刚刚「含泪」退出历史舞台,今天波士顿动力就宣布:电动Atlas上岗。看来,在商用人形机器人领域,波士顿动力是下定决心要和特斯拉硬刚一把了。新视频放出后,短短十几小时内,就已经有一百多万观看。旧人离去,新角色登场,这是历史的必然。毫无疑问,今年是人形机器人的爆发年。网友锐评:机器人的进步,让今年看起来像人类的开幕式动作、自由度远超人类,但这真不是恐怖片?视频一开始,Atlas平静地躺在地上,看起来应该是仰面朝天。接下来,让人惊掉下巴

本月初,来自MIT等机构的研究者提出了一种非常有潜力的MLP替代方法——KAN。KAN在准确性和可解释性方面表现优于MLP。而且它能以非常少的参数量胜过以更大参数量运行的MLP。比如,作者表示,他们用KAN以更小的网络和更高的自动化程度重现了DeepMind的结果。具体来说,DeepMind的MLP有大约300,000个参数,而KAN只有约200个参数。KAN与MLP一样具有强大的数学基础,MLP基于通用逼近定理,而KAN基于Kolmogorov-Arnold表示定理。如下图所示,KAN在边上具

谷歌力推的JAX在最近的基准测试中性能已经超过Pytorch和TensorFlow,7项指标排名第一。而且测试并不是在JAX性能表现最好的TPU上完成的。虽然现在在开发者中,Pytorch依然比Tensorflow更受欢迎。但未来,也许有更多的大模型会基于JAX平台进行训练和运行。模型最近,Keras团队为三个后端(TensorFlow、JAX、PyTorch)与原生PyTorch实现以及搭配TensorFlow的Keras2进行了基准测试。首先,他们为生成式和非生成式人工智能任务选择了一组主流

特斯拉机器人Optimus最新视频出炉,已经可以在厂子里打工了。正常速度下,它分拣电池(特斯拉的4680电池)是这样的:官方还放出了20倍速下的样子——在小小的“工位”上,拣啊拣啊拣:这次放出的视频亮点之一在于Optimus在厂子里完成这项工作,是完全自主的,全程没有人为的干预。并且在Optimus的视角之下,它还可以把放歪了的电池重新捡起来放置,主打一个自动纠错:对于Optimus的手,英伟达科学家JimFan给出了高度的评价:Optimus的手是全球五指机器人里最灵巧的之一。它的手不仅有触觉

目标检测在自动驾驶系统当中是一个比较成熟的问题,其中行人检测是最早得以部署算法之一。在多数论文当中已经进行了非常全面的研究。然而,利用鱼眼相机进行环视的距离感知相对来说研究较少。由于径向畸变大,标准的边界框表示在鱼眼相机当中很难实施。为了缓解上述描述,我们探索了扩展边界框、椭圆、通用多边形设计为极坐标/角度表示,并定义一个实例分割mIOU度量来分析这些表示。所提出的具有多边形形状的模型fisheyeDetNet优于其他模型,并同时在用于自动驾驶的Valeo鱼眼相机数据集上实现了49.5%的mAP

FP8和更低的浮点数量化精度,不再是H100的“专利”了!老黄想让大家用INT8/INT4,微软DeepSpeed团队在没有英伟达官方支持的条件下,硬生生在A100上跑起FP6。测试结果表明,新方法TC-FPx在A100上的FP6量化,速度接近甚至偶尔超过INT4,而且拥有比后者更高的精度。在此基础之上,还有端到端的大模型支持,目前已经开源并集成到了DeepSpeed等深度学习推理框架中。这一成果对大模型的加速效果也是立竿见影——在这种框架下用单卡跑Llama,吞吐量比双卡还要高2.65倍。一名
