news 2026/5/5 12:59:35

精简巨头精简巨头精简巨头精简巨头精简巨头

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
精简巨头精简巨头精简巨头精简巨头精简巨头

原文:towardsdatascience.com/streamlining-giants-8a26aa1e91d3?source=collection_archive---------5-----------------------#2024-02-29

LLM 时代模型压缩的演变

https://natecibik.medium.com/?source=post_page---byline--8a26aa1e91d3--------------------------------https://towardsdatascience.com/?source=post_page---byline--8a26aa1e91d3-------------------------------- Nate Cibik

·发表于Towards Data Science ·阅读时间 20 分钟·2024 年 2 月 29 日

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b460d40c5ff6a9302412017e3f460052.png

图片来源:作者,使用 DALL-E 3 生成。

2017 年,transformers的出现引发了人工智能的里程碑式进展,首先是大型语言模型(LLMs)在自然语言处理(NLP)领域的惊人突破,随后迅速推动了计算机视觉和机器人等领域的进步,参见计算机视觉与机器人。NLP 和计算机视觉问题的统一架构加速了联合视觉-语言表示空间的学习,这为 2021 年围绕对比语言-图像预训练的视觉-语言建模(CLIP)的开创性成果铺平了道路,并催生了大型多模态模型(LMMs)的诞生。

这一大型模型的曙光时代展现了令人敬畏的能力,并在朝着人工通用智能(AGI)迈进的过程中取得了几个重要进展,但这些模型的巨大规模使得它们的部署变得困难。与许多变革性技术一样,LLMs 的迷人能力最初只有那些拥有前沿技术资源的人才能使用。尽管私人研究仍在使用数百亿参数的 LMMs 推动性能的极限,但开源研究已经建立了一个追赶这些水印的模式,使用的是规模更小的模型。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/30002d7396d4738166ced1b8f2d8eb55.png

图片来源:作者。随着时间的推移,开源 LLMs 正在缩小与规模更小模型的性能差距。

然而,尽管其效能不断增强,最小的 LLM 仍然无法在消费级 GPU 上进行推理,更别提进行训练,除非应用了模型压缩技术。幸运的是,这些模型令人垂涎的能力促使研究人员找到了有效的方法,将它们压缩到更小的空间。得益于他们的努力,我们现在可以轻松地在消费级硬件上部署 LLM,并根据我们的需求进行微调,而无需依赖企业巨头的资源。本系列文章全面回顾了四种模型压缩技术,这些技术使得在资源受限的环境中实现 LLM 推理和微调成为可能,下面列出了这些技术:

大型语言模型的模型压缩技术

  1. 剪枝— 根据网络参数在模型中的重要性,单独(无结构)或按组(结构化)移除参数,以降低模型复杂度,同时保持准确性。

  2. 量化— 离散化和/或降低权重数值空间的分辨率,以节省空间并简化计算。

  3. 知识蒸馏— 训练小型模型以模仿大型专家模型学习的功能,这些小型模型可以在没有标注数据的情况下进行训练,并且在与在原任务上训练的小型模型相比时,表现更好。

  4. 参数高效微调— 减少微调模型以实现特定任务行为所需的可训练参数数量。

这些技术中的每一种都已被证明可以显著提高大模型的效率,同时对性能的影响相对无害,将大型预训练语言模型(PLM)的惊人能力带到现实世界中,使得任何人都可以使用它们。在这里,我们详细探讨每一种技术,以便我们能够在自己的工作中加以应用。像大型语言模型一样,这些话题只能在一定程度上进行压缩,否则会导致知识的重大损失。因此,我们将把这个讨论分成一系列文章,以便为每种技术提供足够的空间,充分回顾这些丰富的研究成果,这些成果为我们提供了强大的渠道,将火种带给人类。

在本文中,我们从列表中最古老的技术开始,它几乎与反向传播训练的神经网络一样古老,它就是:剪枝。首先,通过快速回顾剪枝的历史,我们将学习到无结构结构化剪枝技术之间的区别,以及它们的比较优缺点。掌握了这些前置知识后,我们将回顾这些方法在当今大型语言模型(LLMs)中的应用,并给出结语。

《精简巨人》系列的后续章节将深入探讨每种剩余的压缩技术:量化、知识蒸馏和参数高效微调,阐明每种技术的清晰而全面的理解,使我们能够以全副武装的姿态进入 LLM 开发的游戏。

剪枝

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/0b57e051eb629525605208005640a589.png

作者使用 DALL-E 3 创作的图像。

为实际应用而精炼神经网络的探索可以追溯到该领域的基础时期。当Rumelhart, Hinton, 和 Williams在 1986 年首次展示如何使用反向传播算法成功训练能够学习复杂非线性表示的多层神经网络时,这些模型的巨大潜力显现出来。然而,1980 年代的计算能力限制了这些模型的实际应用以及它们能够解决问题的复杂性,这与我们今天在部署 LLM 时面临的挑战相似。尽管模型的规模和所做的考虑因素非常不同,但早期在网络最小化方面的发现为数十年后模型压缩领域的重大突破铺平了道路。在本节中,我们将简要回顾剪枝研究的历史和动机,发现非结构化方法与结构化方法的相对优缺点,并为探索它们在现代 LLM 时代的应用做好准备。

网络剪枝最初的动机是通过将不重要的权重冻结为零,从而追求更好的模型泛化,这在理论上有点类似于线性回归中的 L1/Lasso 和 L2/Ridge 正则化,尽管不同之处在于,剪枝是在训练后根据重要性标准选择并硬性设置为零(修剪),而不是通过训练中的损失函数将权重数学上推向零(有经验的读者会知道,正则化也可以通过权重衰减在神经网络训练中实现)。

正则化和剪枝(可以视为正则化的一种形式)背后的共同动机是理论和经验的证据表明,神经网络在过度参数化的情况下最有效地学习,因为此时损失函数全局最小值的高维流形和更大的探索空间使得有效的子网络更容易被初始化(参见“彩票票据假设”)。然而,这种过度参数化反过来又导致了对训练数据的过拟合,最终使得网络中有许多冗余或不活跃的权重。尽管当时关于过度参数化神经网络“非理性有效性”的理论机制研究较少,但 1980 年代的研究人员正确地假设,在训练后应该可以移除网络中大量的权重,而不会显著影响任务性能,而且通过进行迭代的剪枝和微调剩余模型权重,应该能获得更好的泛化能力,从而增强模型在未见数据上表现良好的能力。

非结构化剪枝

为了选择需要移除的参数,必须衡量它们对成本函数的影响,或者称为“显著性”。尽管最早的网络最小化工作假设参数的大小应作为衡量显著性的合适标准,但 LeCun 等人在 1989 年提出的“最优大脑损伤”(OBD)中,迈出了重要的一步,他们提出使用成本函数对参数的二阶导数信息作为显著性的理论可行度量,从而能够直接识别出那些能够在误差增加最小的情况下被移除的参数。

写于模型仅包含 2,600 个参数的完全连接神经网络时代,《OBD》的作者们当时更关注的是通过减少模型复杂性来提高模型对未见数据的泛化能力,而不是像今天在面对数十亿参数的庞大模型时,主要关注的是去除权重以提高计算效率。即便是对这样一个微小的模型进行操作,计算二阶导数信息(Hessian 矩阵)仍然是非常昂贵的,这要求作者做出三个方便的数学假设:1)假设模型当前已训练至最优,即每个权重的损失梯度目前为零,并且梯度的斜率在两个方向上均为正,这使得泰勒展开中的一阶项为零,并且意味着修剪任何参数引起的损失变化是正的;2)假设 Hessian 矩阵是对角矩阵,即每个参数删除引起的损失变化是独立的,因此损失增量可以在权重子集上求和,从而计算它们共同删除所导致的总损失变化;3)假设损失函数几乎是二次的,即可以忽略泰勒展开中的高阶项。泰勒展开。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/8422e5c3bae38ec0d439b39f58d75a72.png

OBD的结果优于基于幅度的剪枝(左)。OBD 显著性估计的准确性(右)。

尽管有这些天真的假设条件,它们理论上合理的封闭形式显著性度量方法证明在准确识别网络中最不重要的权重方面优于基于幅度的剪枝,能够在更高的压缩率下保持更多的准确性。然而,基于幅度的剪枝方法的有效性和深刻的简洁性使其成为未来模型压缩研究中许多工作的首选,尤其是当网络规模迅速增长,Hessian 矩阵变得指数级增长时。尽管如此,使用理论上合理的显著性度量来更准确地估计显著性,从而实现更激进的剪枝的成功示范,提供了未来模型压缩研究的灵感食谱,尽管这些种子要经过一段时间才能结出果实。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/cade3f82744602e3474c8e935cf3b1de.png

来自OBD的结果表明,反复进行剪枝和微调可以在参数数量减少到原来的一半以下时,仍能保持原有的性能水平。这在当今大模型的背景下意义重大,但他们更关注的是提升模型的泛化能力。

四年后的 1993 年,Hassibi 等人提出的最优脑外科医生(OBS)在 OBD 的基础上扩展了这一概念,并通过摒弃 OBD 中的对角性假设,改为考虑 Hessian 矩阵中的交叉项,提升了在不增加误差的情况下可能的压缩水平。这使得他们能够根据去除给定参数来确定剩余权重的最优更新,从而同时进行剪枝和优化模型,避免了重新训练的需求。然而,这也意味着更复杂的数学,因而 OBS 最初对于 21 世纪研究人员在处理更大规模网络时的实用性有限。尽管如此,像 OBD 一样,OBS 最终也会在未来的里程碑中复兴其遗产,正如我们稍后将看到的那样。

OBD 和 OBS 中的修剪方法是无结构修剪的典型例子,其中根据权重的显著性度量,对每个权重进行单独修剪。无结构修剪技术的现代典范是Han et al. 2015,他们通过一次或多次基于幅度的权重修剪和微调,分别将早期的工作马卷积神经网络(CNN)AlexNet和VGG-16的大小分别减少了 9 倍和 13 倍,且没有损失精度。遗憾的是,他们的方法需要对网络层进行灵敏度分析,以确定每个单独层的最佳修剪率,并且最好在至少重新训练一次后使用,这意味着它不适合用于极大型网络。尽管如此,看到他们使用无结构方法所能实现的修剪程度仍然令人印象深刻,尤其是他们使用的是基于幅度的修剪。与任何无结构方法一样,减少的内存占用只能通过使用稀疏矩阵存储技术来实现,这样就可以避免将零化的参数存储在密集矩阵中。尽管他们在研究中没有使用,但作者在相关工作部分提到,哈希技巧(如 2015 年HashedNets论文中展示的)与无结构修剪是互补的,因为增加稀疏性减少了网络中唯一权重的数量,从而降低了哈希碰撞的概率,进而减少存储需求并提高哈希函数的权重检索效率。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/0418d95168c6cfaede32dfa609d56390.png

Han et al. 2015的结果展示了当时 CNN 中无结构修剪的强大能力。注意到“免费午餐”压缩了 40-50%的参数,而没有损失精度,也不需要重新训练。

尽管无结构剪枝通过减少模型复杂度实现了预期的正则化效果,进而通过使用稀疏矩阵存储方法大幅缩小了内存占用,但这种剪枝方式在计算效率上的提升并不容易直接获得。单纯地将个别权重置零而不考虑网络架构,会导致生成的矩阵稀疏性不规则,在使用标准硬件进行密集矩阵计算时,无法实现计算效率的提升。只有专门设计用于利用矩阵运算稀疏性的硬件,才能解锁无结构剪枝所带来的计算效率提升。幸运的是,具有这些能力的消费级硬件正在变得越来越普及,使得用户能够从无结构剪枝所生成的稀疏矩阵中实现性能提升。然而,即便是这些专用硬件,也必须对每个矩阵行中应被剪枝的权重数量施加稀疏性比例的预期,以便允许算法利用结果中的稀疏性,这被称为半结构化剪枝,而强制这一约束已被证明比纯粹的无结构剪枝更容易导致性能下降。

结构化剪枝

我们已经看到,无结构剪枝是一种已被证明能够改善模型泛化、减少内存需求并在专用硬件上提供效率提升的成熟正则化技术。然而,结构化剪枝提供的计算效率提升更为显著,这种方法通过从网络中移除整个结构组件(如滤波器、层),而非单个权重,从而减少了网络的复杂度,这种复杂度的降低与硬件上计算的执行方式相一致,使得计算效率的提升可以在无需专用硬件的情况下轻松实现。

2016 年,Li 等人发表的论文《高效卷积神经网络的滤波器剪枝》为普及结构化剪枝的概念做出了重要贡献。正如标题所示,作者通过剪枝卷积神经网络(CNN)中的滤波器及其相关特征图来大幅提升计算效率,因为围绕这些滤波器的计算可以通过物理去除选择的内核直接排除,从而减少矩阵的大小及其乘法运算,无需担心利用稀疏性。作者使用滤波器权重的简单和(L1 范数)来进行基于大小的剪枝,展示了他们的方法可以分别将 VGG-16 和ResNet-110的推理成本降低 34%和 38%,且没有显著降低准确率。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e5b14bea61ffe97a84ad1fe9ea848816.png

Li et al. 2016展示了从 CNN 中剪除卷积滤波器的效果。

他们的研究还揭示了一些关于卷积网络工作原理的有趣见解,通过比较各个 CNN 层对剪枝的敏感性,发现网络最初或接近网络深度一半的层可以被大幅度剪枝,几乎不会影响模型性能,而在网络深度约 1/4 处的层则对剪枝非常敏感,剪枝后即使重新训练也难以恢复模型性能。下图显示的结果表明,最对剪枝敏感的层是那些包含大量具有较大绝对和的滤波器的层,支持了“幅度”作为显著性度量的理论,因为这些层显然对网络更为重要,剪去这些层会对模型性能造成明显的负面影响,且难以恢复。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/c1acdb658016554f31de6bb5cd0490c0.png

Li et al. 2016的研究结果揭示了 CNN 层对滤波器剪枝的敏感性存在显著差异。

最重要的是,Li et al.的结果显示,CNN 中的许多层即使剪去高达 90%的滤波器,也不会损害(在某些情况下甚至能改善)模型性能。此外,他们还发现,当剪去那些不敏感的层的滤波器时,不需要逐层进行迭代重训练,单次剪枝和重训练(仅用原训练时间的 1/4)就足以在剪去大量网络部分后恢复模型性能。这对提高效率是个好消息,因为多轮重训练成本高昂,而之前的研究报告称,剪枝后的模型需要最多 3 倍的原始训练时间。下图显示了 Li et al.的总体结果,揭示了在研究的 CNN 中,可以减少 15%到 40%的浮点运算量(FLOPs),而不损害性能,实际上在许多情况下还带来了提升,明确树立了训练后剪枝模型的重要性。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/25f464067d2d49b748bb8f2a47f0a4f2.png

Li et al. 2016将他们的选择性剪枝配置与基准 CNN 进行比较,评估了 CIFAR-10(前三个模型)和 ImageNet(ResNet-34 部分)。

尽管这项研究显然是出于效率考虑,但我们从数十年的证据中知道,简化模型复杂度与提高泛化能力之间的关联性,这些网络在未见过的数据上表现得更好,这也是最初推动剪枝研究的根本原因。然而,这种剪枝方法需要对网络层进行敏感性分析,以便正确执行,这需要额外的努力和计算。此外,正如 LeCun 及其同事在 1989 年正确指出的那样:尽管基于幅度的剪枝是一种经过时间考验的策略,但我们应该期望一个理论上有依据的显著性度量能够产生更优的剪枝策略,但考虑到现代神经网络的规模,计算 Hessian 矩阵以进行 OBD 方法中所需的二阶泰勒展开将变得过于繁重。幸运的是,最终出现了一个折中的方法。

在 2016 年末,仅比 Li 等人晚几个月,Molchanov 及其在 Nvidia 的同事们重新研究了使用泰勒展开来量化卷积神经网络(CNN)中滤波器结构剪枝的显著性。与 OBD 方法不同,他们避免了计算二阶项的复杂过程,而是通过考虑一阶泰勒展开项的方差而非均值来提取有用的显著性度量。这项研究提供了几种显著性度量与通过全面计算去除每个滤波器对精调后的 VGG-16 模型损失变化所得到的“oracle”排名之间的实证对比。从下面的结果可以看出,所提出的泰勒展开显著性度量与 oracle 排名最为一致,其次是计算量更大的 OBD 方法,性能结果也表明这些方法在保持准确性方面表现最佳,当我们根据 GFLOPs 绘制结果时,所提出的泰勒展开方法在优势上更为明显。有趣的是,他们研究中引入的随机滤波器剪枝表现出令人惊讶的效果,相较于最小权重(基于幅度的)剪枝,挑战了权重幅度是显著性可靠度量这一观念,至少对于他们研究的 CNN 架构而言。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/cf21399bc3d12c2a9c942efa73372998.png

Molchanov 等人 2016的结果表明,使用一阶泰勒展开可以有效地衡量滤波器显著性,呈现出与 oracle 排名的最高相关性,并且能够最好地保持准确性。

剪枝 LLM

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/5f7619db0965723a96214dfe3fec7320.png

图片由作者使用 DALL-E 3 生成。

在大规模语言模型(LLMs)被广泛采用之后,研究人员自然开始研究在这些架构上使用剪枝技术。无论是无结构剪枝还是有结构剪枝,都可以成功地应用于 LLMs,显著减少模型大小,同时性能几乎没有下降。然而,正如人们所预料的,这些模型的庞大规模需要特别的考虑,因为计算包含数十亿甚至数百亿权重的模型的显著性度量非常昂贵,而剪枝后重新训练以恢复模型性能的成本则高得令人难以承受。因此,现如今有了新的动机,要求在尽可能少的重新训练下执行剪枝,并在用于剪枝的显著性度量中强制要求简洁性。

与之前的剪枝研究阶段一致,显然 LLMs 可以通过无结构方法比有结构方法更为激进地进行剪枝,但同样,后者的效率提升更加直接易得。对于那些可以更好地访问专业资源的实践者来说,利用无结构剪枝所提供的稀疏矩阵和巨大的压缩率可能是正确的选择,但对于许多人来说,尽管有结构剪枝提供的压缩率较为温和,但它在一般硬件上提供的效率提升会更具吸引力。在本节中,我们将回顾今天 LLMs 领域的这两种方法,以便我们根据个人的具体情况做出最佳选择。

LLMs 的无结构剪枝

在 2023 年初,SparseGPT是首个研究对具有数十亿参数的 GPT 模型进行无结构剪枝的工作,提出了一种高效的方法,利用一种新型的近似稀疏回归求解器来确定这种规模模型中的可剪枝权重,且能够在数小时内完成计算,并且展示了当时最大的开源模型(≤175B)可以在不进行任何重新训练的情况下,单次剪枝至 50%到 60%的稀疏度,且准确度几乎没有损失,这一结果显著超过了基于幅度的剪枝方法在单次操作中的效果。他们的方法采用了迭代式的 OBS 视角,发现同样的数学结果可以分解为一系列更加高效计算的操作。然而,由于他们的方法仍然属于无结构剪枝,因此需要专用硬件来实现该技术的效率提升,而强制要求的 2:4 或 4:8 半结构稀疏模式则会导致与纯无结构剪枝相比的性能下降。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/ee5766a643b4513311f2f9384c9146b0.png

来自SparseGPT的结果显示,相较于基于幅度的剪枝(左图),该方法具有明显优势,并展示了强制稀疏模式以便进行硬件优化(右图)所带来的负面影响。

在 2023 年中期,Wanda的作者提出了一个假设,解释了为什么量化在 LLM 时代比剪枝受到更多的研究关注,而以前这两种压缩技术曾经同样受欢迎。他们将这一现象归因于,在 SparseGPT 出现之前,所有的剪枝方法都需要在某个时刻重新训练 LLM,这使得没有足够资源的人难以负担,成为研究和实际应用的重大障碍。尽管 SparseGPT 表明一次性剪枝是可能的,但他们的迭代 OBS 方法仍然计算密集。因此,Wanda 选择了一种简单的基于大小的无结构剪枝方法,通过将权重大小与其相关输入激活的范数相乘,创建了一个更具描述性和整体性的基于大小的重要性度量。下面的比较图表展示了这些无结构方法的重要性公式和复杂度。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/851115ffa10405e0ffdf05de08c14ddc.png

来自Sun et al. 2023的表格比较了大规模语言模型(LLMs)的无结构剪枝方法及其复杂度。

Wanda 的方法也能生成无需任何重新训练即可使用的剪枝模型,但作为一种无结构方法,依然需要特殊硬件来实现效率提升。尽管如此,对于那些具备条件进行无结构剪枝的用户来说,Wanda 的方法与 SparseGPT 的结果相当或更好,同时将复杂度降低到模型隐藏层维度的一个因子,确立了它作为 LLM 压缩的有力选择。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/7a3ad35c80394d85378d8469b274cc8a.png

来自Sun et al. 2023的表格显示,结构化剪枝在复杂度较低的情况下,与 SparseGPT 具有竞争力的表现。

LLM 的结构化剪枝

与 Wanda 同时,新加坡国立大学的研究人员提出了一种名为LLM-Pruner的结构化剪枝方法。在他们的研究中,他们发现有必要设定 20%的剪枝率,因为更激进的剪枝会导致性能显著下降。此外,尽管在剪枝后需要重新训练权重以恢复模型性能,但他们能够使用低秩适应(LoRA)在 50k 训练样本上仅用 3 小时就完成这一过程。尽管使用 LoRA 进行微调的高效性令人宽慰,但他们的方法仍然需要在剪枝前生成全模型的梯度以衡量参数的重要性,因此,虽然资源受限的用户可以享受剪枝后的模型,但自己执行该操作可能并不可行。

2023 年稍晚时,LoRAPrune通过使用 LoRA 训练的梯度和权重来确定更大网络中参数的重要性,并对网络及相应的 LoRA 权重进行迭代剪枝,显著提高了 LLM 的结构化剪枝效果。这种方法能够在单个 80GB A100 GPU 上剪枝 LLaMA-65B 模型,因为它依赖于高效低秩参数空间的梯度,而非完整模型。由于在整个过程中 LLM 的权重保持冻结状态,因此可以将其量化为 8 位,以节省内存,并对结果的影响最小。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/6f323a2d614994c41f5a0c613dc64582.png

Zhang et al. 2023的有用图示展示了 LoRAPrune 中使用的结构化剪枝方法。

尽管他们面临着 LLM 对更激进的结构化剪枝水平的敏感性,LoRAPrune 的作者通过大量实验展示了他们的方法,在使用远少于传统剪枝资源的情况下,产生了性能更优的修剪模型。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/c354234a8a204088dac00f5e3bc0bbff.png

来自LoRAPrune的结果表明,与之前的方法相比,微调后显示出明显的优势。

在 2023 年 10 月,微软的研究人员提出了LoRAShear,这是一种结构化剪枝方法,通过对 LLM 进行依赖图分析和通过 LoRA 半空间投影梯度(LHSPG)进行渐进式结构化剪枝,“将存储在相对冗余结构中的知识转移到重要结构中,以更好地保留预训练 LLM 的知识。”此外,他们超越了以往仅通过指令微调来恢复知识的趋势,而是首先基于结果的性能分布自适应地从预训练数据集中创建一个子集,以恢复在剪枝过程中丢失的通用预训练知识,然后进行“常规的指令微调,以恢复修剪后的 LLM 的领域特定专业知识和指令能力。”通过他们更为复杂的方法,他们在 20%的剪枝率下仅表现出 1%的性能下降,并在 50%的剪枝率下保持了前所未有的 82%的原始性能。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/2457542d271dee6ac816b97ec4f2a110.png

来自 LoRAShear 的结果显示了优越的性能,尽管其剪枝算法更加复杂。

然后,在 2024 年初,名为Bonsai的方法展示了一种优越的 LLM 结构化剪枝方法,该方法仅使用前向传递信息,显著减少了剪枝过程的计算需求,因为不需要梯度计算,从而使那些最需要剪枝模型的用户能够在资源受限的环境中生成它们。通过这种高效的方法,他们能够在仅限于指令调优的条件下,接近地匹配 LoRAShear 的性能,尽管看起来 LoRAShear 所做的额外考虑确实有助于知识恢复,但两项研究中使用的评估数据集的不同分布不幸使得无法进行清晰的比较。有趣的是,Bonsai 论文中没有提及 LoRAShear,推测原因是前者的复杂性使得与后者所考察的更简单方法的比较变得不清晰,但我们只能进行推测。尽管如此,Bonsai 通过专注于简单性和效率,做出了向民主化 LLM 及其剪枝迈出的强大而宝贵的一步,能够仅使用运行给定模型推理所需的 GPU 内存量来执行剪枝操作,并且实现了迄今为止发表的最易于访问的结构化 LLM 剪枝方法,取得了令人印象深刻的结果。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/ee2bb241e10ac109fbc70f90e45a5114.png

Dery 等人的结果表明,Bonsai 在性能上优于先前的结构化剪枝方法。

结论

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/d51a02f57e1aebfb01cd6d23bac8b10b.png

作者使用 DALL-E 3 制作的图片。

在本文中,我们回顾了网络剪枝的历史,从 1980 年代末期的无结构剪枝技术的黎明到当前 LLM 应用的趋势。我们看到,剪枝大致可以分为无结构剪枝和结构化剪枝,这取决于权重是单独考虑还是按组考虑,而后者虽然只能在较低压缩率下使用,但能够直接减轻计算负担。我们看到,在无结构剪枝的环境中,通过使用特殊的存储技术和硬件可以实现效率提升,但必须遵守一个额外的“半结构化”条件,才能使硬件加速生效,这在性能上会带来相较纯无结构剪枝的损失。纯无结构剪枝提供了最惊人的压缩率,并且不损失精度,但所产生的不规则稀疏性在存储大小之外并未提供效率提升,这使得它在推动 LLM 民主化的背景下吸引力较小。

我们探讨了显著性(saliency)概念,显著性指的是用于剪枝模型参数的重要性度量。最简单且易于理解的显著性估计是权重幅度,其中接近零的权重被认为不那么重要。尽管这种方法在理论上并不严谨(因为接近零的权重可能对模型性能至关重要),但它仍然非常有效,而且由于不需要复杂的计算,它保持了持久的流行性。另一方面,理论上严谨的显著性度量可以追溯到可训练神经网络的早期发展,并且已被证明比基于幅度的剪枝方法能够生成更优的模型,但这些早期方法所需的复杂计算对于今天的 LLM(大语言模型)来说难以扩展。幸运的是,现代的有志研究人员找到了更高效地计算这些显著性度量的方法,但遗憾的是,这些方法仍然需要计算梯度。在 2024 年最新的研究中,Bonsai 展示了通过仅使用前向传递的信息,就能够实现精确的剪枝,而不需要梯度。

尽管现代剪枝研究的主要驱动力是压缩当今顶级模型庞大体积,以便能够在合理大小的硬件上部署,但剪枝最初的动机是通过减少模型复杂性来提高模型的泛化能力。这种正则化效应无疑在剪枝后的 LLM 中产生了作用,这大概是一个好处,但这一点在当今的文献中研究较少。虽然通过正则化提高模型的泛化能力和减少过拟合已知是有益的,但在 LLM 的背景下,可能需要做出特别的考虑,因为根据使用场景,LLM 常常需要记住大量训练数据中的细节。因此,未来的研究应探讨在何种情况下,这种正则化会对 LLM 的预期应用产生不利影响。

在下一期中…

本文探讨的方法通过去除模型参数,提供了有效的模型压缩,这一过程被称为剪枝,但这只是模型压缩的一种方法。在下一篇文章中,我们将探讨量化在不同分辨率下的概念,并在合理的内存占用下,发展该主题的实用知识。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/5 12:54:19

5分钟掌握B站视频永久保存秘诀:m4s-converter深度解析与实战指南

5分钟掌握B站视频永久保存秘诀:m4s-converter深度解析与实战指南 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经遇到过这…

作者头像 李华
网站建设 2026/5/5 12:54:18

Python装饰器终极指南:从基础到高级应用的完整教程

Python装饰器终极指南:从基础到高级应用的完整教程 【免费下载链接】pytudes Python programs, usually short, of considerable difficulty, to perfect particular skills. 项目地址: https://gitcode.com/GitHub_Trending/py/pytudes Python装饰器是一种强…

作者头像 李华