稀疏技术助力大型语言模型推理提速 100 倍。探索背后的秘密 LLM-修剪器技术,使推理速度加倍,从而更快地获得结果。
介绍
众所周知,影响大型语言模型的核心因素有三个(LLM) 表现 GPUs: (1) GPU 计算能力,(2) GPU 输入/输出 (I/O),以及 (3) GPU 内存大小。值得注意的是,对于今天的 LLMs,因素(2)是推理阶段的主要瓶颈。
本博客重点讨论加速 LLM 基于最新的研究论文和工程实践,通过修剪或稀疏性在消费级显卡上进行推理。
首先,参考 LLM 根据[1]中的推理延迟指标,得出以下三个结论:
- 在提示和令牌生成阶段 LLM由于加载模型参数产生的 I/O 延迟,token 生成阶段需要更长的时间。
- In LLM 推理中,Attention 模块和 MLP 模块都是瓶颈,其中 MLP 模块约占 I/O 延迟的三分之二。
- All Reduce 的比例( GPUs)相对较低,表明主要的优化方向在于Transformer架构本身。
详细数据请参考下图:
为了提高推理效率,人们探索了各种技术,包括量化、推理解码、提炼和稀疏性。本篇博客重点介绍稀疏性并进行深入介绍。
稀疏性简介。
模型剪枝,又称模型稀疏性,与模型量化不同,稀疏性方法不是压缩每个权重参数,而是尝试直接“删除”某些权重参数。模型剪枝的原理是通过消除“不重要”的权重来减少模型中的参数数量和计算负荷,同时尝试保持模型的准确性。
论文 [17] 首先介绍了权重剪枝的方法:所有低于某个阈值的权重都会被剪枝,然后进行微调,直到准确率达到想要的水平。该论文作者在 LeNet、AlexNet 和 VGGNet 上进行了实验,验证了剪枝的有效性。
关于 L1 和 L2 正则化的另一个结论表明,L1 正则化在不进行微调的情况下表现更好,而 L2 正则化在进行微调的情况下表现更好。此外,网络中较早的层对修剪更敏感,因此迭代修剪方法更可取。此外,基于实验,作者提出了彩票假设。
彩票假说认为,对于一个预训练的网络,存在一个子网络,可以在不超出原始网络训练轮数的情况下,达到与原始网络类似的准确率。这个子网络类似于中彩票。
为了恢复模型准确性,通常需要在修剪后重新训练模型。模型修剪的典型三阶段流程包括训练、修剪和微调步骤,修剪前后网络连接会发生变化,如下图所示。
同时,根据深度学习模型中可稀疏化的对象,深度神经网络中的稀疏性主要包括权重稀疏性、激活稀疏性和梯度稀疏性。
以上是对稀疏性的简单介绍。接下来,我们将分三部分分享关键命题“如何 LLM 通过稀疏性加速推理。” 第一部分将讨论“大型模型如何修剪”。第二部分将讨论“如何使用激活稀疏性加速推理”,第三部分将深入探讨“稀疏性编译器对 LLM 推理。”
在本综合指南中,我们将探索第一部分“揭开 LLM-Pruner 技术:加倍推理速度”,作者是来自 novita.ai 球队。
创新中心 LLM 重新修剪
LLM神经网络通常具有数千亿个参数的规模,常规的重新训练或迭代剪枝方法并不实用。因此,诸如迭代剪枝和彩票假设 [2,3] 等方法只能应用于较小规模的模型。
剪枝可以有效地应用于视觉和较小规模的语言模型和任务。然而,最佳剪枝方法需要对模型进行大量重新训练,以恢复因删除剪枝元素而导致的准确率损失。因此,在处理 GPT 规模的模型时,成本也会变得高得令人望而却步。虽然有一些一次性剪枝方法可以压缩模型而无需重新训练,但它们的计算成本太高,无法应用于具有数十亿个参数的模型。
最近,修剪技术取得了突破 LLMs,我们将在本博客中依次讨论。
SparseGPT
SparseGPT[12] 是 GPT 领域中第一个一次性精确剪枝技术。 LLM 能够有效运行规模达千亿至万亿级参数的模型。SparseGPT 的工作原理是将剪枝问题简化为大规模稀疏回归实例。它基于用于解决分层压缩问题的新型近似稀疏回归求解器,其效率足以在单个 GPU 只需几个小时即可完成。此外,SparseGPT 无需任何微调即可实现高精度,剪枝后的精度损失几乎可以忽略不计。例如,在目前规模最大的公开生成语言模型(OPT-175B 和 BLOOM-176B)上执行时,SparseGPT 在单样本测试中实现了 50% 到 60% 的稀疏度,并且以困惑度或零样本测试精度衡量的精度损失极小。
工程代码请参考项目: https://github.com/IST-DASLab/sparsegpt
图 1 展示了实验结果,重点突出了两个要点:首先,如图 1(左)所示,SparseGPT 能够在 OPT 系列的 60B 参数变体中修剪高达 175% 的均匀分层稀疏度,同时准确度损失最小。相比之下,唯一已知的在此规模下工作的一次性基线——幅度修剪——只能将准确度保持在 10% 的稀疏度以下,而超过 30% 的稀疏度则完全崩溃。
其次,如图 2(右)所示,SparseGPT 还可以在更严格但对硬件友好的 2:4 和 4:8 半结构化稀疏模式中精确地强制稀疏性。虽然与密集基线相比,这些模式通常会导致额外的准确性损失,尤其是对于较小的模型,但可以从这些稀疏模式中直接推断出计算速度的提升。此外,该技术引起的稀疏性可以与通过量化获得的额外压缩很好地融合在一起。
LLM-修枝剪
LLM-Pruner[13] 是一种结构化剪枝方法,它基于梯度信息选择性地去除非必要的耦合结构,在最大化稀疏性的同时保留网络的大部分功能。 LLM. LLM-Pruner通过LoRA,仅用3个小时和50K数据即可高效恢复剪枝模型的性能。
LLM-Pruner 是第一个专门为结构化剪枝而设计的框架 LLMs,其优点概括如下:(i)与任务无关的压缩,压缩语言模型保留了其作为多任务求解器的能力。(ii)减少对原始训练语料库的需求,压缩只需要 50,000 个公开可用的样本,大大减少了获取训练数据的预算。(iii)快速压缩,压缩过程在三个小时内完成。(iv)自动结构修剪框架,其中所有结构依赖关系都被分组,而无需任何手动设计。
评估有效性 LLM-Pruner,在三个大规模语言模型(LLaMA-7B、Vicuna-7B 和 ChatGLM-6B)上进行了广泛的实验。并使用九个数据集对压缩模型进行了评估,以评估剪枝模型的生成质量和零样本分类性能。
参考下表,使用以下方法将 LLaMA-7B 修剪 20% LLM-使用 2.59 万个样本的 Pruner,模型性能下降幅度不大,但推理速度显著提高 18%。

万达
Wanda[14] 是一种基于权重和激活的剪枝方法,它是一种新颖、简单、有效的方法,旨在在预训练的 LLMs. 受到最近对重要价值特征的观察的启发 LLMs,Wanda 通过将每个输出与相应的输入激活乘以最小量化值来修剪权重。值得注意的是,Wanda 不需要重新训练或更新权重,并且修剪后的 LLMs 可以按原样使用。在 LLaMA 和 LLaMA-2 上对 Wanda 的评估验证了其优于已建立的幅度剪枝基线,并展示了与近期涉及密集权重更新的方法相比的竞争力。
工程代码请参考项目: https://github.com/locuslab/wanda
修剪后的 LLaMA 和 LLaMA-2 模型的 WikiText 困惑度。Wanda 的表现与之前的最佳方法 SparseGPT 相当,且无需引入任何权重更新。
参照上图,Wanda 和 SparseGPT 在模型修剪方面表现出相当的性能。
传统修剪方法的缺点:
- 硬件支持:通过非结构化稀疏性实现时钟时间加速是一项挑战,因为现代硬件存在已知困难。例如,SparseGPT 等最新发展已通过零样本剪枝实现了 60% 的非结构化稀疏性,但并未产生任何显著的时钟时间加速效果。
- 部署挑战:在上下文学习等场景中,通过模型稀疏性来满足特定需求是一项挑战。虽然许多研究已经证明了针对特定任务进行剪枝的有效性,但为每个任务维护不同的模型与 LLM 本身就带来了部署障碍。
总结
总而言之,诸如 SparseGPT 之类的创新剪枝方法, LLMPruner 和 Wanda 为在保持高性能的同时对大型模型进行剪枝提供了新的视角和技术手段。然而,仍需进一步研究和探索,以应对硬件支持和实际应用方面的挑战。在下一篇博文中,我们将探讨第二部分:“如何利用激活稀疏性加速推理”。
参考论文
[1]似曾相识:上下文稀疏性对高效 LLM推理时
[4]硬件彩票
[6]重新思考规模在情境学习中的作用:基于 66 亿规模的可解释性案例研究
[12]SparseGPT:一次性精准修剪海量语言模型
[13]LLM-Pruner:关于大型语言模型的结构修剪
[14]一种简单有效的大型语言模型剪枝方法
[17]学习权重和连接以实现高效的神经网络
novita.ai 提供稳定的 Diffusion API 和数百个快速且最便宜的 AI 图像生成 API,适用于 10,000 个模型。🎯 最快生成仅需 2 秒,按需付费,每张标准图像最低 0.0015 美元,您可以添加自己的模型并避免 GPU 维护。免费共享开源扩展。
推荐阅读
探索 Novita 的更多内容
订阅即可将最新帖子发送到您的电子邮箱。





