首个千亿模型压缩算法 SparseGPT 来了,降低算力成本的同时保持高精度
自 2020 年 GPT-3 横空出世以来,ChatGPT 的爆火再一次将 GPT 家族的生成式大型语言模型带到聚光灯下,它们在各种任务中都已显示出了强大的性能。
但模型的庞大规模也带来了计算成本的上升和部署难度的增加。
比如,GPT‑175B 模型总计至少占 320GB 半精度 (FP16) 格式的存储空间,在推理时,起码需要五个 80 GB 存储空间的 A100 GPU。
模型压缩(model compression)是当前使用较多的一种降低大模型计算成本的方法,但迄今为止,几乎所有现有的 GPT 压缩方法都专注于量化(quantization),即降低单个权重的数值表示的精度。
另一种模型压缩方法是剪枝(pruning),即删除网络元素,包括从单个权重(非结构化剪枝)到更高粒度的组件如权重矩阵的整行/列(结构化剪枝)。这种方法在视觉和较小规模的语言模型中很有效,但会导致精度损失,从而需要对模型进行大量再训练来恢复精度,所以遇到 GPT 这样大规模的模型时,成本就又变得过于昂贵了。虽然也有一些单次剪枝方法,无需重新训练即可压缩模型,但它们计算量太大,难以应用于具有数十亿参数的模型。
那么针对 GPT-3 这种规模的大模型,有没有一种方法能够对其作精确的剪枝、同时保持最小的精度损失且降低计算成本?
近日,来自奥地利科学技术研究所 (ISTA) 的两名研究人员 Elias Frantar 和 Dan Alistarh 合作了一项研究,首次针对 100 至 1000 亿参数的模型规模,提出了精确的单次剪枝方法 SparseGPT。
论文地址:https://arxiv.org/pdf/2301.00774.pdf
SparseGPT 可以将 GPT 系列模型单次剪枝到 50% 的稀疏性,而无需任何重新训练。目前最大的公开可用的 GPT-175B 模型,只需要使用单个 GPU 在几个小时内就能实现这种剪枝。
而且,SparseGPT 还很准确,能将精度损失降到最小。比如在目前最大的开源模型 OPT‑175B 和 BLOOM‑176B 上执行SparseGPT 时,可以达到 60% 的稀疏度,同时将精度损失降到最小。
电驱SparseGPT算法
超大模型的研究近几年非常活跃,但到目前为止,还没有一个百亿参数以上的模型能够实现非常准确的高度稀疏化。
现有方法对计算成本的要求都过高,以目前最准确的训练后方法 OBC 为例,对于十亿参数模型,它需要 1 个小时以上的时间来进行压缩。已知最快的训练后方法 AdaPrune 也需要几分钟来对十亿参数模型进行剪枝,按此速度,GPT-3 规模的模型估计需要数百小时(几周)的计算。
大多数现有的剪枝方法如渐进幅度剪枝(gradual magnitude pruning),需要在剪枝步骤后进行大量的再训练以恢复准确性,而 GPT 规模的模型通常需要大量的用于训练或微调的计算量和参数调整量,这使得基于再训练的方法难以应用。因此,在 GPT 规模上应用这种渐进的剪枝方法是行不通的。
ISTA 团队的这项工作提出了 SparseGPT 方法,可以实现几个小时内在单个 GPU 上运行千亿以上参数的模型,并且足够准确,可将模型修剪到 50%-60% 的稀疏度水平,而不会大幅度降低性能。
SparseGPT 的核心是一种新的大规模近似稀疏回归算法,它可以推广到半结构化(2:4 和 4:8)模式,并且与现有的权重量化方法兼容。
大多数现有的剪枝方法如渐进幅度剪枝(gradual magnitude pruning),需要在剪枝步骤后进行大量的再训练以恢复准确性,而 GPT 规模的模型通常需要大量的用于训练或微调的计算量和参数调整量,这使得基于再训练的方法难以应用。因此,在 GPT 规模上应用这种渐进的剪枝方法是行不通的。
SparseGPT 是针对 GPT 规模模型的后训练(post-training)方法,因为它不执行任何微调。
目前有许多量化 GPT 规模模型的后训练的方法,如 ZeroQuant、LLM.int8() 和 nuQmm 等,但由于异常特征的存在,激活量化可能会很困难。GPTQ 利用近似二阶信息将权重精确量化到 2‑4 位,适用于最大的模型,而且当它与高效的 GPU 内核相结合时,可以带来2‑5 倍的推理加速。
但由于 GPTQ 侧重于稀疏化而不是量化,因此 SparseGPT是对量化方法的补充,二者可以结合应用。
另外,除了非结构化修剪,SparseGPT 也适用于半结构化的模式,比如流行的 n:m 稀疏格式,在 Ampere NVIDIA GPU 上可以 2:4 的比例实现加速。
SparseGPT :高稀疏化水平,低精度损失
对 SparseGPT 压缩模型的效果进行评估后,研究人员发现,大型语言模型进行稀疏化的难度与模型大小成比例,与已有的幅度剪枝(Magnitude Pruning)方法相比,使用 SparseGPT 能够实现更高的模型稀疏化程度,同时保持最低限度的精度损失。
研究人员在 PyTorch 上中实现了 SparseGPT,并使用 HuggingFace 的 Transformers 库来处理模型和数据集,并且都在具有 80GB 内存的单个 NVIDIA A100 GPU 上进行。在这样的实验条件下,SparseGPT 可以在大约 4 小时内对 1750 亿参数的模型实现完全稀疏化。
研究人员按顺序依次稀疏 Transformer 层,这显著降低了内存需求,并且还大大提高了并行处理所有层的准确性。所有的压缩实验都是一次性进行,没有任何微调。
评估对象主要是 OPT 系列模型,包含从 1.25 亿到 1750 亿参数的一套模型,方便观察剪枝相对于模型大小的缩放表现。此外还分析了 BLOOM 的 1760 亿参数变体。
在数据集和评估指标方面,实验采用了原始 WikiText2 测试集的困惑度来评估 SparseGPT 压缩方法的准确性,同时为了增加可解释性,还使用了一些 ZeroShot 精度指标。另外,评估的重点在于稀疏模型相对于密集模型基线的准确性,而非绝对数字。
研究人员对 OPT 整个模型系列的所有线性层进行剪枝(不包括标准的嵌入和头部),分别达到 50% 的非结构化稀疏度、全 4:8 或全 2:4 的半结构化稀疏度,结果如下图。
可见,使用幅度剪枝来压缩的模型准确性在所有尺寸上都很糟糕,而且模型越大,准确度下降得越厉害。
而使用 SparseGPT 来压缩的模型趋势不同,在 27 亿参数下,困惑度损失
较大的模型更容易稀疏化
一个总的趋势是,较大的模型更容易稀疏化,在固定的稀疏度水平下,稀疏模型相对于密集模型的相对精度下降会随着模型大小的增加而缩小。作者推测这可能是由于它们的参数化程度更高,总体上抗噪能力也更强。
相比于密集模型基线,在最大规模下,使用 SparseGPT 将模型压缩至 4:8 和 2:4 稀疏度时,困惑度增长分别仅为 0.11 和 0.39。这样的结果意味着,我们可以在实践中实现 2 倍的加速,商用的 NVIDIA Ampere GPU 对 2:4 的稀疏度已经有了支持。
作者研究了 OPT-175B 和 BLOOM-176B 两个千亿模型的性能与使用 SparseGPT 带来的稀疏程度之间的关系,结果下图所示。
可以看到,对于 OPT-175B 模型,幅度剪枝最多可以实现 10% 的稀疏度,紧接着就会有较大的精度损失。而 SparseGPT 在困惑度增加的下还能实现 60% 的稀疏度。
对于 BLOOM-176B 模型,尽管幅度剪枝可以达到 30% 的稀疏度而没有显著的精度损失,但相比之下,SparseGPT 可以实现 50% 的稀疏度,即 1.66 倍的提升。而且,在 80% 的稀疏度下,使用 SparseGPT 压缩的模型的困惑度仍然保持在合理水平,但幅度剪枝在达到 OPT 的 40% 稀疏度和 BLOOM 的 60% 稀疏度时,困惑度就已经 > 100。
另外,SparseGPT 能够从这些模型中移除大约 1000 亿个权重,对模型准确性的影响有限。
最后总结一下,该研究首次表明,基于 Transformer 的大规模预训练模型可以通过一次性权重修剪压缩到高稀疏性,无需任何再训练,精度损失也很低。
值得注意的是,SparseGPT 的方法是局部的:在每个修剪步骤之后,它都会执行权重更新,旨在保留每一层的输入输出关系,这些更新是在没有任何全局梯度信息的情况下计算的。因此,大规模 GPT 模型的高度参数化似乎使这种方法能够直接识别密集预训练模型“近邻”中的稀疏精确模型。
另外,由于实验所采用的的准确度指标(困惑度)非常敏感,因此生成的稀疏模型输出似乎与密集模型的输出密切相关。
这项研究在缓解大模型的算力限制方面具有很大的积极意义,将来的一个工作方向是研究大模型的微调机制来进一步恢复精度,同时,扩大 SparseGPT 的方法在模型训练期间的适用性,将会减少训练大模型的计算成本。
以上是首个千亿模型压缩算法 SparseGPT 来了,降低算力成本的同时保持高精度的详细内容。更多信息请关注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)

热门话题

我昨天看到了一张有趣的图片,上面是一个“AI取代人类路径的级别图”。图片根据图中的显示,游戏分为六个不同的等级,从E1到E8+。从图中我们可以观察到,人工智能(AI)正在取代人类在不同领域的应用。而人工智能的应用领域路径则是由其容错率来决定的。简而言之,这里的容错率就是指试错所带来的成本。AI将逐渐取代从容错率较高到较低的行业,逐渐“取代”人类职业。以往,我们常认为创意型的工作需要依赖人类的思维,是不容易被取代的。然而,随着人工智能的发展,这种看法似乎并不完全正确。像创意类的工作往往没有固定答案

自 2020 年 GPT-3 横空出世以来,ChatGPT 的爆火再一次将 GPT 家族的生成式大型语言模型带到聚光灯下,它们在各种任务中都已显示出了强大的性能。但模型的庞大规模也带来了计算成本的上升和部署难度的增加。比如,GPT‑175B 模型总计至少占 320GB 半精度 (FP16) 格式的存储空间,在推理时,起码需要五个 80 GB 存储空间的 A100 GPU。模型压缩(model compression)是当前使用较多的一种降低大模型计算成本的方法,但迄今为止,几乎所有现有的

大卫·林思高编译|言征51CTO技术栈(微信号:blog51cto)的出品在技术领域有一个不成文的规则:大家都喜欢采用别人的技术。但对于许多企业来说,生成式人工智能似乎并不符合这一模式生成式AI正在迅速推动一些关键决策。每个组织都面临着一个重要的选择:是内部构建定制的生成式AI平台,还是从AI供应商那里购买预打包的解决方案(通常作为云服务提供)DIY有利于数量和机会。这很奇怪,但原因可能会让你感到惊讶。它们甚至可能会引导您重新思考您的企业genAI战略1、完整的定制和控制重新写内容如下:建立一个

假设我们有一个尺寸为hxw的网格。网格中的每个单元格包含一个正整数。现在有一个路径查找机器人放置在特定的单元格(p,q)上(其中p是行号,q是列号),它可以移动到单元格(i,j)。移动操作有一个特定的成本,等于|p-i|+|q-j|。现在有q个旅行,具有以下属性。每个旅行有两个值(x,y),并且有一个共同的值d。机器人放置在一个值为x的单元格上,然后移动到另一个值为x+d的单元格。然后它移动到另一个值为x+d+d的单元格。这个过程将继续,直到机器人到达一个值大于或等于y的单元格。y-x是d的倍数

我们可以使用以下技术来找到乘以X或将其数字从1右旋转到N的最便宜方法。要监控初始最低成本,请创建一个成本变量。当从N到1时,检查每个阶段N是否被X整除。如果是,则将N除以X来更新它并继续该过程。如果N不能被X整除,则将N的数字向右循环以增加其值。在这种情况下增加成本变量。最终的成本变量值将是将1变为N所需的最少数量。该算法有效地确定使用数字旋转或乘法进行所需转换所需的最少操作。使用的方法NaiveApproach:数字的右旋转高效方法:乘以X简单的方法:数字右旋天真的方法是从数字1开始,反复将其

随着全球范围内对环保意识的不断增强,各国纷纷倡导新能源汽车的发展,使得电动汽车成为汽车市场的一大亮点。然而,尽管电动汽车在减少碳排放和降低用车成本方面有着显着优势,却面临一个问题,即电动汽车的轮胎不仅价格更高,还更容易磨损。这个问题引发了广泛关注,专家对其原因进行了解释电动汽车的轮胎与传统轮胎不同,需要满足更高的性能标准。由于电动汽车较重,轮胎需要具备更高的承载能力和结构强度,这增加了设计和制造的成本。此外,电动汽车通常具有更强的加速和制动性能,因此轮胎需要更好的抓地力和耐热性能,这也增加了制造

成本与定价因素:实例定价:按使用时间和函数配置计费。内存和CPU使用:使用量越大,成本越高。网络流量:与其他服务的通信产生费用。存储:持久性存储需要单独计费。实战案例:调用10,000次、持续100毫秒的函数,成本约为0.000067美元(实例定价0.000055美元,网络流量0.000012美元)。

据外媒报道,Meta的首席技术官几乎确认了公司放弃开发能够与苹果VisionPro相媲美的设备。MetaLaJolla在VisionPro发布之前,Meta公布了其虚拟现实和混合现实耳机的四年发展规划。其中一个重要部分是开发一款内部代号为LaJolla的产品,它本有可能成为VisionPro的主要竞争对手。据了解,Meta于2023年11月开始了LaJolla的开发工作,但在2024年8月中旬左右叫停了该项目,原因可能是成本问题。据说这一决定是MetaCEO扎克伯格和CTO安德鲁·博斯沃思等人做
