Compressing What Matters: Neuron Importance Meets Data-Aware Low Rank Approximation for Language Model Compression
本文提出了一种将神经元重要性与数据感知低秩近似相结合的新型语言模型压缩框架,并引入了一种用于动态压缩率分配的高效算法,在实现最先进性能的同时,尤其是在高压缩率条件下表现优异。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,人工智能的世界就像一座巨大、繁忙的图书馆,书都是由巨大的、超级聪明的机器人编写的。这些被称为“大语言模型”(LLM)的机器人非常擅长理解人类语言、创作故事和解决问题。但有一个问题:为了变得如此聪明,这些机器人随身携带了数十亿条微小的笔记,这使得它们异常沉重。试图在小型设备(如智能手机或智能手表)上运行这些沉重的机器人,就像试图把一整座图书馆装进你的背包里一样;这负担太重了,电池会瞬间耗尽。科学家们一直试图研究如何在不让这些机器人忘记所学知识的前提下,将它们缩小。
为了实现这一目标,研究人员使用了一种叫做“奇异值分解”(SVD)的数学技巧。把 SVD 想象成一种方法,它可以将一大堆杂乱的笔记整理成一叠整齐、更小的笔记,同时仍能讲述同样的故事。这就像是将一部 500 页的小说总结成一份 50 页的大纲,同时保留所有重要的情节点。另一个想法是“神经元重要性”,这就像是在问:“在这堆笔记中,哪些笔记对故事真正重要,哪些我们可以扔掉?”最后,还有一个关于如何缩小机器人不同部分的问题。我们应该以相同的比例缩小每一个部分,还是应该更聪明一点,对那些不太重要的部分进行更激进的压缩?
本文介绍了一种名为 NIDA-SVD 的新方法,它试图成为那位终极图书管理员。它不仅仅是总结笔记,也不仅仅是扔掉那些“不重要”的部分,而是以一种巧妙的方式将这两个想法结合在一起。研究人员发现,简单地混合旧方法效果并不好;通过观察机器人的“脑细胞”(神经元)如何对故事做出反应,他们可以更有效地缩小模型。他们还发现,根据机器人在机器中的深度进行逐层缩小,比按功能对部分进行分组效果更好。
厚重的背包问题
大语言模型是现代人工智能的核心,能够与我们聊天并理解我们的世界。但为了变得如此聪明,它们的构建包含了数十亿个参数——你可以把这些参数想象成建造巨大墙壁时的每一块砖头。问题在于,这面墙太重了,无法装进手机或笔记本电脑等小型设备中。科学家们希望压缩这些模型,在减小体积和提高速度的同时,不丢失它们的智慧。
旧工具:总结与分类
为了缩小这些模型,研究人员使用了两种主要工具。第一种是 SIV,这是一种数学方法,充当了超高效的总结者。它将一个巨大的矩阵(数字网格)分解成一个更小的版本,同时保留最重要的信息,并丢弃其余部分。第二种工具是“神经元重要性”,它试图找出网格中哪些特定的数字是这场表演中的“明星”。如果一个数字对最终答案贡献不大,它就是一个可以被移除的候选对象。
此前,科学家们尝试分别使用这些工具。有些人专注于根据模型如何“看待”数据来进行数据感知(data-aware)的总结,而另一些人则专注于每个特定数字对最终结果的重要性(参数重要性)。然而,本文作者注意到,仅仅将这两种旧方法混合在一起效果并不理想;它实际上会让模型变得更笨。
新方案:NIDA-SVD
作者提出了一种名为 NIDA-SVD(神经元重要性驱动的数据感知 SVD)的新方法。与其通过观察单个数字来决定保留什么,不如观察神经元(数字的功能组),并询问:“这个神经元的输出对最终任务有多重要?”
想象你正在剪辑一部电影。旧的方法是观察每一帧画面并决定它是否重要。而新的方法是观察场景,并询问:“这个场景是否推动了情节的发展?”如果一个场景至关重要,你就保持它的细节;如果它只是填充物,你就把它删减。通过关注神经元输出的重要性而非仅仅是原始数字,这种新方法即使在规模大幅缩减时也能保持模型的高性能。
智能缩减:动态秩分配
论文还解决了第二个问题:如何决定每个部分的缩减程度。过去,人们通常以相同的比例缩小每个部分(均匀分配),或者按功能对部分进行分组(例如将所有的“注意力”部分放在一起)。作者认为这过于僵化。
他们发现,模型的不同层有不同的需求。有些层就像建筑的地基;如果缩减得太多,整个结构就会坍塌。而有些层就像墙上的油漆;即使简化一些,也不会毁掉房子。作者开发了一种动态秩分配算法,它根据模型的深度索引逐层观察模型,并为每一层分配一个特定的“缩减限制”。这确保了最敏感的层获得了更多的空间,而不太敏感的层则被压缩得更紧。
结果:更小、更快、更聪明
研究人员在包括 BERT、DistilBERT、MobileBERT 和 TinyBERT 在内的几种流行模型上测试了他们的这种方法。他们将 NIDA-SVD 与现有的最佳方法(如 SVD-LLMv2)在句子理解和回答问题等各种任务上进行了对比。
结果令人印象深刻。在针对标准 BERT 模型的测试中,有 87.5% 的测试显示 NIDA-SVD 的表现优于之前的最先进方法。在高压缩率(即模型被大幅度压缩)时,这种差异更为显著。例如,当压缩模型 50%(仅保留一半参数)时,在某些任务上,NIDA-SVD 比旧方法提高了高达 6.41% 的性能。
即使是在已经非常精简的模型(如 TinyBERT)上,新方法也表现稳健。虽然 TinyBERT 非常小,进一步压缩通常会导致其失效,但 NIDA-SVD 成功将其压缩了 30%(从 1430 万个参数减少到 1000 万个),同时仍保持了强大的性能。事实上,在 TinyBERT 的 94% 测试中,新方法都表现得更为优越。
无需代价的效率
人们可能会担心,变得如此聪明是否需要额外的计算能力。然而,作者表明,他们的方法与其他方法一样快。因为总参数量是相同的(因为他们的目标是达到相同的压缩率),所以计算成本(以 MFLOPS/token 衡量)几乎完全相同。“魔力”不在于做更多的工作,而在于更聪明地分配工作。
例如,在 DistilBERT 模型上,将规模压缩 50% 使计算成本从 86 MFLOPS/token 降低到了约 19 MFLOPS/token。在 TinyBERT 上,规模减少 30% 导致计算成本大幅下降了 90%,降至不到 1 MFLOP/token。
结论
简而言之,本文表明,要有效地缩小 AI 模型,我们不应仅仅观察原始数字,也不应将模型的每个部分同等对待。相反,我们应该了解哪些“脑细胞”正在承担重任,并根据每一层所能承受的程度进行逐层缩减。作者提出的新方法 NIDA-SVD 证明,这种方法可以让我们在不让机器人忘记教训的前提下,将这些巨大的、聪明的机器人装进更小的背包里,为在日常设备上运行强大的 AI 铺平了道路。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。