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

news2026/5/5 12:59:57
原文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 的预期应用产生不利影响。在下一期中…本文探讨的方法通过去除模型参数提供了有效的模型压缩这一过程被称为剪枝但这只是模型压缩的一种方法。在下一篇文章中我们将探讨量化在不同分辨率下的概念并在合理的内存占用下发展该主题的实用知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2585035.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…