大预言模型LoRA综述

前言

在应用预训练模型解决常见的问题时,通常都需要对相关的模型进行微调。而如今常见预训练模型的规模变得越来越大,想要完全微调变得不太现实,而LoRA是一种常见的高效微调方法,在微调模型时将模型绝大部分的参数给进行冻结,在训练的时候只训练插入的相关模块,这部分模块的参数与模型整体比较起来非常小。同时在跨任务和隐私保护方面也有着非常明显的优势,因此LoRA近期备受关注。浙江大学对常见的LoRA方法进行了总结,对应的内容如下所示:
论文链接: A Survey on LoRA of Large Language Models
github链接:https://github.com/ZJU-LLMs/Awesome-LoRAs

摘要

低秩自适应(LoRA)是一种利用可插拔的低秩矩阵更新密集神经网络的方法,是参数效率最高的微调方法之一。此外,它在跨任务和隐私保护方面也有着显著的优势。因此,LoRA近来备受关注,相关文献数量成指数级增长。这篇论文从以下几个方面对相关的内容进行了分类和回归:

  • 下游适应改进变量,可提高LoRA在下游任务中的性能;
  • 跨任务泛化方法,混合多个LoRA插件以实现跨任务泛化;
  • 效率改进方法,提高LoRA计算效率的方法;
  • 在联合学习中使用LoRA的数据隐私保护方法;
  • 应用。

此外,这篇论文还讨论了这个领域的未来发展方向。

引言

增加预训练语言模型的参数量可以提高其泛化能力,并带来涌现能力。过去几年,预训练语言模型的参数量已经增加了上千倍。这些具有较大参数的预训练模型被称为大语言模型(LLM)。然而,由于LLM的知识边界,它们在一些下游任务上的能力仍然有限。为了扩展知识边界,仍然有必要对下游任务上的LLM进行微调。
然而,对LLM的全部参数进行微调(即完全微调)的计算成本是极其昂贵。为了降低计算成本,提出了各种参数高效微调(PEFT)的方法,这些方法只需要微调少量(额外)模型参数,就能使LLM适应下游任务。从是否涉及额外参数的角度来看,PEFT方法可以分为两类:参数外方法和参数内方法。参数外方法冻结LLM的所有原始参数,并插入一组可学习的参数来优化模型输入或模型层,如Adapter TuningPrompt Tuning。相比之下,参数内方法会冻结LLM的大部分原始参数,只调整LLM的少量参数,如BitFitLISALoRA
当无法修改模型结构时,就需要采用参数内方法。在参数内方法中,LoRA是应用最广泛的一种,因为它可以在一系列下游任务中实现与完全微调相当或更好的下游适应性能,而且易于实现。此外,人们还提出了许多变体,以进一步提高LoRA在更具挑战性的下游任务上的下游适应能力。
LoRA可以通过使用可插拔的低秩矩阵更新LLM的密集神经网络层来实现参数效率。这些矩阵(又称LoRA插件)独立于LLM,可以存储并在其他相关的下游任务中重复使用。此外,这些LoRA插件可以组合起来实现跨任务泛化,从而促进多任务学习、领域适应和持续学习。
随着LoRA模块的积累,管理LoRA模块的计算成本也在增加。虽然LoRA的计算效率很高,但管理大量LoRA模块的计算成本是不可忽视的,需要进一步提高LoRA的计算效率。这种改进可以降低单个LoRA模块的计算成本,加快多个模块的可扩展服务。它可以促进LoRA在现实世界用例中的应用,如生成即服务(Gaas)云产品。
在某些情况下,训练数据由多个客户私人拥有,无法集中管理。为了是LLM与分布式训练数据相适应,可以采用联合学习来保护每个客户端的数据隐私。然而,联合学习的通信和计算成本很高。为了降低成本,LoRA是一个很自然的选择,它的参数效率高的特性有助于降低每个客户端的计算成本和客户端之间共享参数的通信成本。此外,LoRA的可插拔功能支持个性化参数的本地化或加密,从而加强了联合学习中的隐私保护。因此,LoRA具有保护隐私的巨大潜力。
这篇论文对LoRA方法的研究进展进行了全面的概述,主要从以下这几个方面进行:

  • 提高LoRA的下游自适应能力;
  • 混合LoRA模块以实现任务泛化;
  • 提高LoRA的计算效率;
  • 在联合学习中采用LoRA。
    此外,还简要介绍了LoRA的应用。与LoRA相关的方法分类如下图所示。这篇调查旨在为我们提供全面的背景知识、研究趋势和技术见解。
    在这里插入图片描述

低秩自适应(LoRA)

低维内在维度假说提出,参数过多的模型存在较低的内在维度上,这表明我们只需要更新与内在秩相关的参数,就能获得适当的学习效果。基于这一假设,LoRA提出适应低秩矩阵更新模型中的密集层。它既能提高参数效率,又能提高计算效率。

LoRA

给定一个参数为 W 0 ∈ R d × k W_0 \in \mathbb{R} ^{d\times k} W0Rd×k的密集神经网络层,为使其适应下游任务,使用 Δ W ∈ R d × k \Delta W \in \mathbb R^{d\times k} ΔWRd×k对其进行更新,得到一个参数为 W = W 0 + Δ W W = W_0 + \Delta W W=W0+ΔW的更新层。对于全面微调, Δ W \Delta W ΔW是根据层的所有 d × k d\times k d×k的梯度来计算的,计算成本很高,并且LLM需要大量的GPU内存。为了提高计算效率,LoRA将 Δ W \Delta W ΔW分解成两个小矩阵 B ∈ R d × r B \in \mathbb R ^{d\times r} BRd×r A ∈ R r × k A \in \mathbb R^{r\times k} ARr×k,即
W = W 0 + α B A W = W_0 + \alpha BA W=W0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nlp_xiaogui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值