当前位置: 首页 > article >正文

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

原文towardsdatascience.com/streamlining-giants-8a26aa1e91d3?sourcecollection_archive---------5-----------------------#2024-02-29LLM 时代模型压缩的演变https://natecibik.medium.com/?sourcepost_page---byline--8a26aa1e91d3--------------------------------https://towardsdatascience.com/?sourcepost_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 推理和微调成为可能下面列出了这些技术大型语言模型的模型压缩技术剪枝— 根据网络参数在模型中的重要性单独无结构或按组结构化移除参数以降低模型复杂度同时保持准确性。量化— 离散化和/或降低权重数值空间的分辨率以节省空间并简化计算。知识蒸馏— 训练小型模型以模仿大型专家模型学习的功能这些小型模型可以在没有标注数据的情况下进行训练并且在与在原任务上训练的小型模型相比时表现更好。参数高效微调— 减少微调模型以实现特定任务行为所需的可训练参数数量。这些技术中的每一种都已被证明可以显著提高大模型的效率同时对性能的影响相对无害将大型预训练语言模型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.pngOBD的结果优于基于幅度的剪枝左。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他们通过一次或多次基于幅度的权重修剪和微调分别将早期的工作马卷积神经网络CNNAlexNet和VGG-16的大小分别减少了 9 倍和 13 倍且没有损失精度。遗憾的是他们的方法需要对网络层进行灵敏度分析以确定每个单独层的最佳修剪率并且最好在至少重新训练一次后使用这意味着它不适合用于极大型网络。尽管如此看到他们使用无结构方法所能实现的修剪程度仍然令人印象深刻尤其是他们使用的是基于幅度的修剪。与任何无结构方法一样减少的内存占用只能通过使用稀疏矩阵存储技术来实现这样就可以避免将零化的参数存储在密集矩阵中。尽管他们在研究中没有使用但作者在相关工作部分提到哈希技巧如 2015 年HashedNets论文中展示的与无结构修剪是互补的因为增加稀疏性减少了网络中唯一权重的数量从而降低了哈希碰撞的概率进而减少存储需求并提高哈希函数的权重检索效率。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/0418d95168c6cfaede32dfa609d56390.pngHan 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.pngLi et al. 2016展示了从 CNN 中剪除卷积滤波器的效果。他们的研究还揭示了一些关于卷积网络工作原理的有趣见解通过比较各个 CNN 层对剪枝的敏感性发现网络最初或接近网络深度一半的层可以被大幅度剪枝几乎不会影响模型性能而在网络深度约 1/4 处的层则对剪枝非常敏感剪枝后即使重新训练也难以恢复模型性能。下图显示的结果表明最对剪枝敏感的层是那些包含大量具有较大绝对和的滤波器的层支持了“幅度”作为显著性度量的理论因为这些层显然对网络更为重要剪去这些层会对模型性能造成明显的负面影响且难以恢复。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/c1acdb658016554f31de6bb5cd0490c0.pngLi 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.pngLi et al. 2016将他们的选择性剪枝配置与基准 CNN 进行比较评估了 CIFAR-10前三个模型和 ImageNetResNet-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.pngMolchanov 等人 2016的结果表明使用一阶泰勒展开可以有效地衡量滤波器显著性呈现出与 oracle 排名的最高相关性并且能够最好地保持准确性。剪枝 LLMhttps://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.pngZhang 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.pngDery 等人的结果表明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 的预期应用产生不利影响。在下一期中…本文探讨的方法通过去除模型参数提供了有效的模型压缩这一过程被称为剪枝但这只是模型压缩的一种方法。在下一篇文章中我们将探讨量化在不同分辨率下的概念并在合理的内存占用下发展该主题的实用知识。

相关文章:

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

原文:towardsdatascience.com/streamlining-giants-8a26aa1e91d3?sourcecollection_archive---------5-----------------------#2024-02-29 LLM 时代模型压缩的演变 https://natecibik.medium.com/?sourcepost_page---byline--8a26aa1e91d3---------------------…...

在开始撰写新研究论文时简化你的工作流程

原文:towardsdatascience.com/streamline-your-workflow-when-starting-a-new-research-paper-50522940b0dd https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/5c26191bd4a63c4de5ee6b1dfd89ee57.png 由Maksym Kaharlytskyi在Un…...

7个步骤掌握fastai自定义数据加载器:复杂数据格式处理终极指南

7个步骤掌握fastai自定义数据加载器:复杂数据格式处理终极指南 【免费下载链接】fastai The fastai deep learning library 项目地址: https://gitcode.com/gh_mirrors/fa/fastai fastai是一个强大的深度学习库,提供了简洁易用的API来处理各种数据…...

OpenAI客户端库选型与实战:.NET集成指南与最佳实践

1. 项目概述:一个面向开发者的轻量级OpenAI客户端 如果你正在开发一个需要集成AI能力的应用,比如一个智能客服机器人、一个内容生成工具,或者一个代码辅助插件,那么你大概率绕不开OpenAI的API。官方的SDK固然功能齐全,…...

如何在5分钟内搭建你的第一个机器人AI控制系统:LeRobot完整指南

如何在5分钟内搭建你的第一个机器人AI控制系统:LeRobot完整指南 【免费下载链接】lerobot 🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learning 项目地址: https://gitcode.com/GitHub_Trending/le/lerobot 还在为复杂…...

终极GTA5安全增强菜单:YimMenu新手完全指南

终极GTA5安全增强菜单:YimMenu新手完全指南 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu 你…...

Hitboxer终极指南:专业级SOCD清理器与按键重映射工具,彻底解决游戏操作冲突

Hitboxer终极指南:专业级SOCD清理器与按键重映射工具,彻底解决游戏操作冲突 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 在竞技游戏的世界里,每一次按键输入都可能是胜利的…...

三步秘籍:如何用127行代码轻松保存百度文库文档?

三步秘籍:如何用127行代码轻松保存百度文库文档? 【免费下载链接】baidu-wenku fetch the document for free 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wenku 还在为百度文库的付费文档而烦恼吗?每次找到心仪的资料&#x…...

专为求职者开发的“面馆”!!!摆脱面试焦虑!!!

🚀 写在前面 很多人准备面试的时候都会遇到一个痛点:题库太散。牛客网上刷几道、LeetCode上刷几道、CSDN上搜几篇面经……来来回回在不同的平台之间切换,效率很低。 于是我从今年3月开始,花了两个月时间,基于之前积累…...

终极指南:如何让外接Magic Trackpad在Windows上完美实现三指拖拽功能

终极指南:如何让外接Magic Trackpad在Windows上完美实现三指拖拽功能 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/Thre…...

独立开发者如何利用 Taotoken 透明计费机制精准控制项目预算

独立开发者如何利用 Taotoken 透明计费机制精准控制项目预算 1. 项目开发中的成本管理痛点 对于独立开发者和小型工作室而言,大模型API的调用成本往往是项目预算中最难预测的部分。传统接入方式通常存在几个典型问题:计费颗粒度粗放、用量统计滞后、缺…...

如何用3套模板告别知识碎片化?Obsidian Zettelkasten模板全解析

如何用3套模板告别知识碎片化?Obsidian Zettelkasten模板全解析 【免费下载链接】Obsidian-Templates A repository containing templates and scripts for #Obsidian to support the #Zettelkasten method for note-taking. 项目地址: https://gitcode.com/gh_mi…...

通用框架操作系统:构建可插拔应用生态的架构实践

1. 项目概述:一个“野心勃勃”的通用框架操作系统 最近在开源社区里闲逛,又看到了一个挺有意思的项目,叫 TELLEBO/universal-framework-os 。光看这个名字,就透着一股“野心”——“通用框架操作系统”。这可不是我们平常说的Wi…...

仅限前500名开发者获取:.NET 9 AI本地部署自动化脚本包(含模型自动下载/量化/缓存预热/健康检查)

更多请点击: https://intelliparadigm.com 第一章:.NET 9 AI 推理本地部署概览 .NET 9 原生强化了对 AI 工作负载的支持,通过新增的 Microsoft.ML.GenAI 库、内置 ONNX Runtime 集成以及轻量级模型服务主机( GenAIServer&#x…...

主构造函数+record struct+required修饰符=零冗余实体层?手把手构建高可测DDD核心模型

更多请点击: https://intelliparadigm.com 第一章:主构造函数record structrequired修饰符零冗余实体层?手把手构建高可测DDD核心模型 在 C# 12 的现代 DDD 实践中,实体建模正经历一场静默革命——主构造函数、record struct 和 …...

【工业级边缘C++编译黄金标准】:基于ARM64+RT-Thread实测验证的9条不可妥协规则

更多请点击: https://intelliparadigm.com 第一章:工业级边缘C编译黄金标准导论 在资源受限、实时性敏感、可靠性至上的工业边缘场景中,C 编译流程远非“g main.cpp -o app”即可交付。它是一套融合工具链选型、交叉编译策略、静态链接控制、…...

为 OpenClaw 智能体工作流配置 Taotoken 作为后端模型服务

为 OpenClaw 智能体工作流配置 Taotoken 作为后端模型服务 1. 准备工作 在开始配置之前,请确保已安装 OpenClaw 框架并完成基础环境搭建。同时需要在 Taotoken 控制台获取有效的 API Key,并在模型广场确认目标模型的 ID。OpenClaw 支持通过 Taotoken 提…...

OpenIM Server离线部署完整指南:从零构建企业级私有IM系统

OpenIM Server离线部署完整指南:从零构建企业级私有IM系统 【免费下载链接】open-im-server IM Chat OpenClaw 项目地址: https://gitcode.com/gh_mirrors/op/open-im-server 在金融、政务、军工等对数据安全有严格要求的场景中,企业通常需要在完…...

终极Android架构示例指南:从Lint检查到代码优化的完整实践

终极Android架构示例指南:从Lint检查到代码优化的完整实践 【免费下载链接】architecture-samples A collection of samples to discuss and showcase different architectural tools and patterns for Android apps. 项目地址: https://gitcode.com/gh_mirrors/a…...

MPC Video Renderer终极指南:5个核心技术带你掌握高性能DirectShow视频渲染

MPC Video Renderer终极指南:5个核心技术带你掌握高性能DirectShow视频渲染 【免费下载链接】VideoRenderer Внешний видео-рендерер 项目地址: https://gitcode.com/gh_mirrors/vi/VideoRenderer MPC Video Renderer是一款专为Windows平…...

快速上手使用 Taotoken 官方价折扣节省大模型调用成本

快速上手使用 Taotoken 官方价折扣节省大模型调用成本 1. 了解 Taotoken 的定价优势 Taotoken 作为大模型聚合分发平台,定期推出官方价折扣活动,帮助开发者降低模型调用成本。这些折扣信息会实时更新在控制台的「价格与活动」页面,无需额外…...

url-opener:命令行批量打开网页工具,提升开发与运维效率

1. 项目概述:一个被低估的效率工具如果你和我一样,每天的工作流里充斥着大量的链接——可能是需要定期查看的监控面板、项目文档、测试环境地址,或者是十几个需要同时打开的社交媒体后台。那么,你肯定经历过这样的痛苦&#xff1a…...

终极指南:如何在Rete.js可视化编程框架中实现用户行为统计与监控

终极指南:如何在Rete.js可视化编程框架中实现用户行为统计与监控 【免费下载链接】rete JavaScript framework for visual programming 项目地址: https://gitcode.com/gh_mirrors/re/rete Rete.js是一个用于创建可视化界面和工作流的JavaScript框架&#xf…...

从零开始将一个 React 前端项目对接 Taotoken 大模型后端

从零开始将一个 React 前端项目对接 Taotoken 大模型后端 1. 准备工作 在开始对接之前,需要确保已经完成 Taotoken 平台的账号注册和 API Key 的创建。登录 Taotoken 控制台后,在「API 密钥管理」页面可以创建新的密钥。建议为每个项目单独创建密钥以便…...

2026深度解析:耐克1.4TB数据泄露与WorldLeaks无加密勒索的供应链安全革命

2026年1月,全球运动用品巨头耐克遭遇了一场史无前例的网络安全事件,这场事件不仅改写了勒索软件的攻击范式,更彻底暴露了全球制造业供应链在数字化时代的致命脆弱性。臭名昭著的数据勒索组织WorldLeaks成功从耐克公司窃取了约1.4TB的核心数据…...

VMware克隆Debian虚拟机后,如何快速修改主机名、IP和用户?完整操作实录

VMware克隆Debian虚拟机后的身份信息重构指南 当你用VMware的完整克隆功能复制出一台Debian虚拟机时,新机器就像个"数字双胞胎"——除了硬件UUID不同,其他所有身份信息都与原机完全相同。这会导致网络冲突、权限混乱等一系列问题。作为运维老…...

通过用量看板清晰观测各模型 API 调用成本与消耗趋势

通过用量看板清晰观测各模型 API 调用成本与消耗趋势 1. 用量看板的核心功能 Taotoken 控制台的用量看板为开发者提供了多维度的 API 调用数据可视化能力。登录后进入「用量分析」页面,系统默认展示最近 7 天的聚合数据概览,包括总 token 消耗量、费用…...

如何通过系统级音频均衡器提升Mac音质:eqMac全面使用指南

如何通过系统级音频均衡器提升Mac音质:eqMac全面使用指南 【免费下载链接】eqMac macOS System-wide Audio Equalizer & Volume Mixer 🎧 项目地址: https://gitcode.com/gh_mirrors/eq/eqMac 你是否曾为MacBook平淡的音质而烦恼?…...

九大 AI 毕业论文写作工具合集,解锁本科高效撰稿方案

毕业季来临,本科毕业论文成为每位学子必须完成的核心任务。从选题定位、框架搭建,到文献整合、正文撰写,再到格式调整、内容打磨,整套流程繁琐且耗时。缺乏写作思路、专业素材不足、行文逻辑混乱、格式标准不熟,是绝大…...

终极指南:如何高效使用confd API客户端管理配置文件

终极指南:如何高效使用confd API客户端管理配置文件 【免费下载链接】confd Manage local application configuration files using templates and data from etcd or consul 项目地址: https://gitcode.com/gh_mirrors/co/confd confd 是一款强大的配置管理工…...