Lora原理解读

本文介绍了LoRA,一种使用少量数据和参数对大模型进行微调的方法,通过低秩适应减少计算成本,同时保持推理速度。相比于全参数微调,LoRA通过矩阵近似减少了参数量,使得模型在特定任务上变得更高效和经济。
摘要由CSDN通过智能技术生成

LoRA: Low-Rank Adaptation Of Large Language Models,大语言模型的低秩适配器

本文对LoRA原理做简要分析,希望对大家有所帮助。

论文地址:https://arxiv.org/pdf/2106.09685.pdf

源代码: https://github.com/microsoft/LoRA

1 功能简介

LoRA一种大模型的微调方法。只用很少的数据,很少的参数,就能让大模型在原本表现没那么好的下游任务成为专家模型。并且不额外增加推理时间。

2 介绍

大模型在下游任务微调时,全参数微调时间、金钱成本太高。

微调部分参数中以Adapter Tuning为代表,Adapter模型中增加额外模块,虽然微调时除了Adapter的部分,其余的参数都是被冻住的(freeze),有效降低训练的代价。但模型整体的层数变深,会增加训练速度和推理速度。

LoRA(Low-Rank Adaptation,低秩适配器)提出了一种新微调方法。

                  

左图可看作全参数finetune的情景,可以理解成“冻住的Pretrained Weights” + “Finetune Weights”。设输入为x,输出为h ,则有:h=Wx+\bigtriangleup Wx。其中预训练权重W\in R^{^{d\times d}},微调权重\bigtriangleup W\in R^{^{d\times d}}

右图为LoRA finetune情景,因为预训练权重中少部分参数起到对结果的决定作用,大部分参数其实可以去掉,针对这种情况就可以用矩阵AB来近似表达\bigtriangleup W

类似假设\bigtriangleup WAB如下图:

此时使用2*1*4个参数的AB即可代替4*4个参数\bigtriangleup W。(可以用python计算下不等号两边的差异。)

即在LoRA下我们有:h=Wx+BAx ,其中A\in R^{^{r\times d}}B\in R^{^{d\times r}}\bigtriangleup W参数量就从d\times d减少到了2\times r\times d(r\ll d)

因此,就可以实现使用少的数据、少的显存、少的参数来微调达模型了。

The End!

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值