当前位置:   article > 正文

LORA:大型语言模型的低阶适应_大模型下游适配lora

大模型下游适配lora

LORA:大型语言模型的低阶适应

LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS
https://arxiv.org/pdf/2106.09685.pdf
https://github.com/microsoft/LoRA

Fine-Tuning (FT) 是一种常用的自适应方法。在微调期间,模型被初始化为预训练的wight和bias,所有模型参数都进行梯度更新,一个简单的变体是只更新一些层而冻结其他层。

问题:现有大规模预训练语言模型应用到下游任务时通常需要微调,会更新预训练模型的所有参数,降低了部署时的运行效率。
方法:冻结了预训练的模型权重,并将可训练的秩分解矩阵加入到 Transformer 架构的每一层中,大大减少了下游任务的训练参数数量。
在这里插入图片描述
LoRA关键优势
• 共享预训练模型,并针对特定任务构建不同小型 LoRA 模块。可以通过替换图 1 中的矩阵 A 和 B 将预训练模型应用到不同任务上,从而大幅降低存储需求和任务切换开销;
• 当使用自适应优化器时,LoRA 使训练更有效,只优化针对于特定任务的低秩矩阵;
• 可将训练矩阵与冻结权重线性合并,与完全微调的模型相比,并不会导致推理延迟。
• LoRA 可以与其中许多方法结合使用,例如前缀调整。

问题陈述

假设得到了一个由 Φ Φ Φ参数化的预训练自回归语言模型 P Φ ( y ∣ x ) P_Φ(y|x) PΦ(yx) 。每个下游任务都由 c o n t e x t − t a r g e t context-target contexttarget对的训练数据集表示:
在这里插入图片描述
其中 x i , y i x_i,y_i xi,yi都是标记序列。例如在摘要任务中, x i x_i xi是文章上下文, y i y_i yi是摘要。
在full fine-tuning期间,模型被初始化为预训练权重 Φ 0 Φ_0 Φ0,并通过梯度更新为 Φ 0 + Δ Φ Φ_0+ΔΦ Φ0+ΔΦ以最大化条件语言建模目标:
在这里插入图片描述
full fine-tuning的一个主要缺点是,对于每个下游任务学习一组不同的参数 Δ Φ ΔΦ ΔΦ,其维度 ∣ Δ Φ ∣ = ∣ Φ 0 ∣ |ΔΦ|=|Φ_0| ∣ΔΦ∣=Φ0。当预训练模型很大,存储和部署微调模型的效率很低。

LoRA采用了一种更有效的参数方法,其中任务特定的参数增量 Δ Φ = Δ Φ ( Θ ) ΔΦ=ΔΦ(Θ) ΔΦ=ΔΦ(Θ)由一组更小的参数 Θ 进行编码,参数 ∣ Θ ∣ |Θ| ∣Θ∣远小于 ∣ Φ 0 ∣ |Φ_0| Φ0。因此,寻找 Δ Φ ΔΦ ΔΦ的任务变成了对 Θ 进行优化:
在这里插入图片描述
在后续部分中使用低秩表示来编码 Δ Φ ΔΦ ΔΦ

模型设计

对于预训练的权重矩阵 W 0 ∈ R d × k W_0 ∈ R^{d×k} W0Rd×k,通过用低秩分解 $ W_0 + ΔW = W_0 + BA$表示后者来约束其更新,其中 B ∈ R d × r , A ∈ R r × k , r B ∈ R^{d×r},A ∈ R^{r× k},r BRd×r,ARr×k,r远小于 k k k

在训练过程中,$ W_0$ 被冻结,不接收梯度更新,而 A 和 B 包含可训练参数。 W 0 W_0 W0 ∆ W = B A ∆W = BA W=BA 都与相同的输入相乘,并且它们各自的输出向量按坐标相加。对于 h = W 0 x h = W_0x h=W0x ,修改后的前向传播为:
在这里插入图片描述
A 使用随机高斯初始化, B 使用零初始化,因此 ∆ W = B A ∆W = BA W=BA在训练开始时为零。然后用 α r \fracαr rα缩放 Δ W x ΔWx ΔWx,其中 α α α r r r中的常数。当使用 Adam 进行优化时,如果适当地缩放初始化,调整 α α α与调整学习率大致相同。当改变 r r r 时,这种缩放有助于减少重新调整超参数。

未来工作

(1) LoRA 可以与其他有效的适配方法相结合
(2) 探究更多样化的方法来选择要应用LoRA 的权重矩阵,本文主要依靠启发式方法。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/200307
推荐阅读
相关标签
  

闽ICP备14008679号