Layer-wise LoRA fine-tuning: a similarity metric approach
本文提出了一种层级化的低秩自适应(LoRA)微调方法,该方法通过基于内部表示相似性系统地选择最相关的层,从而在保持甚至提高各种模型架构和任务的预测性能的同时,将可训练参数减少高达 50%。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你正试图教一个超级聪明的机器人完成一项特定的工作,比如解决数学题或编写代码。这个被称为“大语言模型”(LLM)的机器人已经通过阅读互联网上几乎所有的内容,学习了海量的通用知识。它就像一个博学多才的天才,虽然对万事万物都略知一二,但仍需要变得更加专业。要教会它一个新技巧,你通常需要对其进行“微调”(fine-tune),这意味着要调整它的内部设置。但问题在于,这些机器人规模如此庞大,调整它们所有的设置所需的计算机性能极其强大且昂贵,只有大型科技公司才负担得起。这就像是为了修理摩天大楼上的一个松动的螺丝,却要重建整座大楼一样。
为了解决这个问题,科学家们发明了一个聪明的捷径,叫做 LoRA(低秩自适应)。LoRA 不再去触碰摩天大楼里的每一个螺丝,而是建议你只添加一个微小的、轻量级的补丁(由新螺丝组成)来帮助机器人学习新任务。这节省了大量的资金和能源。然而,即便有了这个捷径,机器人本身依然如此巨大,以至于这个“补丁”有时对于较小的计算机来说仍然过于沉重。一个大问题是:我们真的需要给机器人的每一个部分都打上补丁,才能让它在新的工作中变得聪明吗?还是说,仅仅有几个特定的位置才是发生奇迹的地方?这篇论文深入探讨了这个问题,探寻我们是否可以找到那些“黄金点”,去修复它们,而让这台巨大的机器的其他部分保持原样。
“逐层检测”的侦探工作
这篇论文的作者 Keith Ando Ogawa 及其团队决定将机器人的大脑视为一座多层的建筑。在大语言模型内部,信息流经一系列的“层”(layers),就像摩天大楼里的楼层一样。当一个句子从底层向上移动到顶层时,它会被处理和转换。团队怀疑,并非每一层对于每一项新任务都同样重要。有些楼层可能在为数学问题进行繁重的计算,而另一些楼层可能更擅长写诗。
他们的想法简单而强大:与其在每一个楼层都贴上一个 LoRA 补丁,为什么不找出哪些楼层在机器人学习新事物时变化最大呢?他们想出了一个方法,利用一个名为“相似性度量”的数学工具来测量这种“变化”。你可以把它想象成一个“变化检测器”。他们观察了机器人在将信息传递给特定楼层之前“思考”的内容,以及该楼层处理信息之后“思考”的内容。如果输入和输出几乎完全相同,那么这一层并没有做太多工作。但如果输入和输出非常不同,那么这一层就在做很多工作!
他们将这种方法称为“逐层 LoRA 微调”(Layer-wise LoRA fine-tuning)。这就像雇佣一名侦探走进摩天大楼,检查每一层,看看哪里最繁忙。一旦他们识别出最繁忙的楼层,就只在这些特定的楼层上放置 LoRA 补丁,并让那些安静、不活跃的楼层保持冻结状态。
发现:少即是多
当团队在几种不同类型的机器人大脑上测试这个想法时,结果出人意料地好。他们发现,通过仅选择最活跃的层——具体来说,大约是总层数的一半——他们可以将可训练参数(即他们正在调整的“螺丝”)减少 50%。
最棒的部分在于:尽管他们调整的设置减少了一半,但机器人并没有变笨。事实上,对于像 LLaMA 2-7B 和 Mistral-7B 这样的模型,当机器人只专注于最重要的层时,它们解决数学问题和编写代码的能力反而变得更强了。对于其他模型,如 Gemma-7B,性能仅出现了极小的、几乎察觉不到的下降。
研究人员还将他们的“变化检测器”方法与其他尝试挑选层的方法(例如仅仅选择中间层,或者顶部和底部层)进行了对比。他们的法表现始终优于这些简单的猜测。例如,在名为 GLUE 的标准测试中,他们的方法在将工作量减半的同时保持了机器人高性能,而仅仅选择中间层的法有时会导致机器人踉跄跌倒。
他们还检查了这对计算机内存和速度的影响。因为他们调整的层数更少,训练过程变得更快了。在某些模型上,他们看到了大约 1.25 倍 的加速,并且计算机执行任务所需的内存也更少了。对于任何想要在更小、更便宜的计算机上运行这些模型的人来说,这都是一件大事。
这为什么重要
论文指出,我们不需要将庞大的 AI 模型中的每个部分都视为同等重要。通过使用一种简单的测量方法,测量一层如何改变流经它的信息,我们可以找到学习的“甜点位”(sweet spots)。这意味着我们可以让这些强大的 AI 工具变得更加高效,而不会丧失它们的智慧。
作者在不同种类的机器人上测试了这一点,包括仅能阅读文本的机器人、仅能编写文本的机器人,甚至是一个可以看图并阅读文本的多模态机器人(LLaVA-1.5-7B)。在所有情况下,仅仅挑选正确的层都效果很好。他们甚至尝试在选定的层上增加“秩”(rank,即让补丁变得更复杂)以观察是否会有所帮助,但发现这并没有带来很大的区别。看起来,关键在于挑选正确的层,而不是让补丁本身变得更复杂。
虽然这篇论文并不声称已经解决了 AI 的所有问题,但它提供了一种非常实用且有效的方法,使微调变得更便宜、更快速。它表明,对于许多任务而言,一次小而精准的努力与大规模的全方位改造同样出色。正如作者所言,这种方法能够很好地与现有工具配合使用,并能帮助更多的研究人员和较小的公司参与到构建更聪明 AI 的行动中,而无需拥有一座像房子一样大的超级计算机。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。