Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

将GPT家族模型极限压缩,1700+亿参数稀疏性达50%性能不减,单GPU即可

我们可以压缩大型语言模型以获得更好的性能吗?本文中,研究者提出了剪枝技术 SparseGPT,可以一次性修剪至少 50% 的稀疏性,而无需任何重新训练,并且准确率损失最小。

GPT 家族的大型语言模型(LLMs)在诸多任务中取得了出色的表现,但模型庞大的规模和高昂的计算成本也增加了部署难度。例如,性能最好的 GPT-175B 模型约有 1750 亿参数,以半精度(FP16)格式计算,总计至少占 320GB(计算 1024 的倍数)的存储空间,所以需要至少 5 个 A100 GPU,且在推理时,每个 GPU 都起码需要有 80GB 的内存。因此,自然就需要通过模型压缩来降低成本。迄今为止,几乎所有现有的 GPT 压缩方法都侧重于量化,即降低单个权重数值表示的精确度。

剪枝是一种较为普遍的模型压缩方法,它将网络元素从单个权重(非结构化剪枝)删除到更高粒度的组件,例如权重矩阵的整行 / 列(结构化剪枝)。该方法已经投入使用一段时间了,能够有效地应用于视觉和较小规模的语言模型和任务。然而,最优的剪枝方法需要对模型进行大量的再训练,以恢复删除的元素所造成的准确率损失,所以遇到向 GPT 这样规模的模型时,成本也会极为高昂。虽然也存在一些 one-shot 剪枝方法,无需重新训练即可压缩模型,但弊端在于,它们的计算成本太高,无法应用于具有数十亿个参数的模型。因此,到目前为止,几乎没有能对 GPT-3 比例模型进行精确剪枝的方法。

本文中,来自奥地利科技学院等机构的研究者提出 SparseGPT,其是目前首个 one-shot 精确剪枝技术,可以在 100 - 1000 亿参数的模型规模上有效地运作。SparseGPT 的工作原理是将剪枝问题简化为大规模的稀疏回归实例。它基于新的近似稀疏回归求解器,用于解决分层压缩问题,其效率足以在几个小时内使用单个 GPU 在最大的 GPT 模型(175B 参数)上执行。同时,SparseGPT 准确率足够高,不需要任何微调,剪枝后所损耗的准确率也可以忽略不计。例如,当在最大的公开可用的生成语言模型(OPT-175B 和 BLOOM-176B)上执行时,SparseGPT 在 one-shot 测试中剪枝到 50-60% 的稀疏性,无论是以困惑度还是 zero-shot 测试准确率来衡量,损失准确率都极小。

图片

论文地址:https://arxiv.org/pdf/2301.00774v1.pdf

图 1 为实验结果,有以下两个关键点需要说明:首先,如图 1(左)所示,SparseGPT 可以在 OPT 家族的 1750 亿参数变量中剪枝到高达 60% 的均匀分层稀疏性,而几乎不会损失精度。相比之下,唯一已知的在此规模下工作的 one-shot 基线 —— 幅度剪枝(Magnitude Pruning)的准确率仅保持到 10% 的稀疏度,并在超过 30% 的稀疏度时完全崩掉。

图片

其次,如图 1(右)所示,SparseGPT 还可以在更严格但对硬件友好的 2:4 和 4:8 半结构化稀疏模式中准确地施加稀疏性。尽管相对于密集基线,这些模式往往会失去额外的准确性,特别是对于较小的模型而言,但计算速度可以直接通过这些稀疏模式得出。此外,由技术引起的稀疏性与通过量化获得的额外压缩可以很好地混合在一起。

值得注意的是,该方法仅针对局部,从某种意义上说,它依赖于权重更新,旨在保留每一层的输入输出关系,计算是在没有任何全局梯度信息的梯度下进行的。因此,用户可以直接识别密集预训练模型近邻中的稀疏精确模型。另一处发现如图 1(右)所示:较大的模型更容易稀疏化。具体来说,对于一个固定的稀疏水平,随着模型大小的增加,稠密和稀疏模型变体之间的相对准确率差距会随之缩小,如此一来,如果将最大的模型剪枝到 50% 的稀疏性,实际上不会降低准确率。实验部分会详细说明这一观察结果,对于未来压缩巨型模型的研究而言,这具有极大的鼓舞性。

SparseGPT 算法概览

SparseGPT 重建算法的可视化。给定一个固定的修剪掩码 M,使用 Hessian 逆序列图片,增量地修剪权重矩阵 W 的每一列的权重,并更新这些行中的其余权重(位于正在处理的列的右侧)。具体来说,修剪权重的右边(深蓝色部分)将被更新以补偿修剪错误,而未修剪的权重不生成更新(浅蓝色部分)。

图片

下图是完整算法伪代码

图片

实验结果
该研究进行了多项实验。第一组实验研究了 LLM 稀疏化的难度如何随着大小而变化。为此,研究考虑到了整个 OPT 模型家族,并统一剪枝所有线性层(不包括标准的嵌入和头部),分别达到 50% 的非结构化稀疏度,4:8 或 2:4 的半结构化稀疏度。(这三种模式都对应 50% 的整体稀疏度,但 2:4 模式最为严格的,其次是 4:8 和非结构化稀疏度。)表 1 中给出了原始 WikiText2 性能数据,具体可视化结果参见图 1(右)。

图片

接下来,是对目前公开可用最大规模的密集模型 OPT-175B 和 BLOOM-176B 的研究结果,以及对它们的性能如何随着 SparseGPT 或幅度剪枝的稀疏程度而缩放的结果。结果见图 1(左)和图 5(左)。

图片

下面提供了几个 ZeroShot 任务中 OPT-175B 的各种稀疏变体的结果来补充该研究对困惑度的评估。众所周知,ZeroShot 的评估相对嘈杂,但同时更容易阐释。表 2 汇总了所有的数据。

图片

最后,另一个研究方向是将稀疏性和量化结合,即将稀疏性可以加速计算和量化可以节省内存两点相结合。具体来说,如果将一个模型压缩到 50% 稀疏 + 4 位权重,只存储非零权重并使用位掩码来指示它们的位置,那么这与 3 位量化消耗的总体内存是相同的。图 5(右)将 SparseGPT 50% + 4 位数字与最先进的 GPTQ 3 位数字进行比较。虽然似乎有一些异常值,但对于一些模型来说,50% + 4 位模型比各自的 3 位版本更准确,包括 175B 的 8.55 vs. 8.68 3 位。2:4 和 4:8 与 4 位的组合也在 OPT-175B 上进行了测试,产生的测试结果显示:困惑度为 9.20 和 8.86,使用额外的量化技巧(如 blocking)也许能实现进一步的改进。
理论大模型
相关数据
权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

剪枝技术

剪枝顾名思义,就是删去一些不重要的节点,来减小计算或搜索的复杂度。剪枝在很多算法中都有很好的应用,如:决策树,神经网络,搜索算法,数据库的设计等。在决策树和神经网络中,剪枝可以有效缓解过拟合问题并减小计算复杂度;在搜索算法中,可以减小搜索范围,提高搜索效率。

伪代码技术

伪代码,又称为虚拟代码,是高层次描述算法的一种方法。它不是一种现实存在的编程语言;它可能综合使用多种编程语言的语法、保留字,甚至会用到自然语言。 它以编程语言的书写形式指明算法的职能。相比于程序语言它更类似自然语言。它是半形式化、不标准的语言。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

语言模型技术

语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。

量化技术

深度学习中的量化是指,用低位宽数字的神经网络近似使用了浮点数的神经网络的过程。

推荐文章
暂无评论
暂无评论~