LLM:LoRA: Low-Rank Adaptation of Large Language Models

这篇具有很好参考价值的文章主要介绍了LLM:LoRA: Low-Rank Adaptation of Large Language Models。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

随着模型规模的不断扩大,微调模型的所有参数(所谓full fine-tuning)的可行性变得越来越低。以GPT-3的175B参数为例,每增加一个新领域就需要完整微调一个新模型,代价和成本很高。

为解决微调大规模语言模型到不同领域和任务的挑战,已有多种方案,比如部分微调、使用adapters和prompting。但这些方法存在如下问题:

  • Adapters引入额外的推理延迟 (由于增加了模型层数)
  • Prefix-Tuning难于训练,且预留给prompt的序列挤占了下游任务的输入序列空间,影响模型性能

Adapter Layers

在transformer block后面添加参数很少的层或者norm层。这样做,虽然tuning时要更新的参数少了,但由于加了网络深度,对于latency不友好。 

LLM:LoRA: Low-Rank Adaptation of Large Language Models

Prompt tuning/Prefix tuning

这个方法,一是很难优化,二是会降低下游能处理的序列长度。 Prefix-Tuning难于训练,模型性能也并非总是稳步提升。预留一些sequence做adaption会让处理下游任务的可用sequence长度变少,一定程度上会影响模型性能。

 LLM:LoRA: Low-Rank Adaptation of Large Language Models

[参数有效性学习-Adapter和Prefix-Tuning   以及   UniPELT框架]

LoRA: Low-Rank Adaptation of Large Language Models

LoRA的思路

paper:Armen Aghajanyan的Intrinsic Dimensionality Explains the Effectiveness of Language Model Fine-Tuning. 
这篇文章尝试去回答一个问题:为什么用几千几百条样本就能去finetune一个百万量级的模型。
答案是:We empirically show that common pre-trained models have a very low intrinsic dimension; in other words, there exists a low dimension reparameterization that is as effective for fine-tuning as the full parameter space。即只有一些关键维度对finetune起效果。

作者做了个实验:by optimizing only 200 trainable parameters randomly projected back into the full space, we can tune a RoBERTa model to achieve 90% of the full parameter performance levels on MRPC.即将原始权重映射到一个很小的子集再映射回去,依然能训得很好。即只需要更新低秩矩阵,在节省大量资源和时间的情况下,仍能获得不错的效果。

GPT的本质是对训练数据的有效压缩,从而发现数据内部的逻辑与联系,LoRA的思想与之有相通之处,原模型虽大,但起核心作用的参数是低秩的。

LoRA的思想也很简单,在原始PLM旁边增加一个旁路,做一个降维再升维的操作,来模拟所谓的 intrinsic rank 。训练的时候固定PLM的参数,只训练降维矩阵A与升维矩阵B。而模型的输入输出维度不变,输出时将BA与PLM的参数叠加。原始参数的维度是d∗d, 则低秩分解后的参数量级是2∗r∗d,因为这里的r<<d,因此可以起到大幅降低微调参数量级的效果。

用随机高斯分布初始化A,用0矩阵初始化B,保证训练的开始此旁路矩阵依然是0矩阵。通过随机高斯分布初始化A,可以引入随机性和非线性,而将B初始化为零矩阵可以确保记忆状态的空白和初始状态。这样可以有效地初始化LoRA模型的参数,为后续的训练和学习过程提供良好的起点。[ailake]

LLM:LoRA: Low-Rank Adaptation of Large Language Models

 LLM:LoRA: Low-Rank Adaptation of Large Language Models

两种推断/部署方法

        方法1:将预训练的大模型的checkpoint统一部署,将特定任务训练的 BA 单独部署。当下游任务很多时,存储空间也不会增加很多。
        方法2:在推断时可以利用重参数(reparametrization)思想,将AB与W合并,这样就不会在推断时引入额外的计算了。 即在生产环境部署时,LoRA可以不引入推理延迟,只需要将预训练模型参数 W0 与LoRA参数进行合并(模型合并)即可得到微调后的模型参数: W=W0+BA ,在生产环境中像以前一样进行推理,微调前是计算 h=W0x ,现在计算 h=Wx ,没有额外延迟和原预训练模型是一样的参数量和latency。现在不少模型仅发布LoRA权重,需要本地与基模型进行模型合并才能使用的原理就在于此。

LoRA对哪些参数进行微调

1 LoRA 已经被作者打包到了loralib中:pip install loralib
可以选择用loralib中实现的对应层来替换一些层。

2 基于Transformer结构,LORA只对每层的Self-Attention的部分进行微调,有W_q, W_k, W_v, W_O四个映射层参数可以进行微调。消融实验显示只微调W_q效果略差,微调W_q, W_v的效果和微调W_q, W_k, W_v, W_O的效果相似。
仅在QKV attention的计算中增加一个旁路,而不动MLP模块:We limit our study to only adapting the attention weights for downstream tasks and freeze the MLP modules (so they are not trained in downstream tasks) both for simplicity and parameter-efficiency.

 LLM:LoRA: Low-Rank Adaptation of Large Language Models

对一个参数用比较大的rank更新,不如对多个参数用很小的rank更新,low_rank更新合理。

Rank的取值

作者对比了1-64,效果上Rank在4-8之间最好,再高并没有效果提升。不过论文的实验是面向下游单一监督任务的,因此在指令微调上根据指令分布的广度,Rank选择还是需要在8以上的取值进行测试。

LLM:LoRA: Low-Rank Adaptation of Large Language Models

 关于∆W

LLM:LoRA: Low-Rank Adaptation of Large Language Models

1, ∆W has a stronger correlation with W compared to a random matrix, indicating that ∆W amplifies some features that are already in W.
2,instead of repeating the top singular directions of W, ∆W only amplifies directions that are not
emphasized in W. 
3, the amplification factor is rather huge: 21.5 ≈ 6.91/0.32 for r = 4.

参数减少量

On GPT-3 175B, we reduce the VRAM consumption during training from 1.2TB to 350GB.
With r = 4 and only the query and value projection matrices being adapted, the checkpoint size is reduced by roughly 10,000× (from 350GB to 35MB). (We still need the 350GB model during deployment; however, storing 100 adapted models only requires 350GB + 35MB * 100 ≈ 354GB as opposed to 100 * 350GB ≈ 35TB.)

代码解析

核心LoraLayer,定义了LoRA的各种超参数以及模型层对应更新方法:

[https://github.com/huggingface/peft/blob/main/src/peft/tuners/lora.py#L123]

线性类,是LoRA模型的具体实现:

[https://github.com/huggingface/peft/blob/main/src/peft/tuners/lora.py#L735]

[代码: GitHub - microsoft/LoRA: Code for loralib]

from:https://blog.csdn.net/pipisorry/article/details/130978244

ref: [LoRA: Low-Rank Adaptation of Large Language Models]

[LoRA: Low-Rank Adaptation of Large Language Models 简读 - 知乎]**

[微软LoRA: Low-Rank Adaptation of Large Language Models 代码解读 - 知乎]文章来源地址https://www.toymoban.com/news/detail-466353.html

到了这里,关于LLM:LoRA: Low-Rank Adaptation of Large Language Models的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【论文精读】LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS

    当下大模型时代最火的低资源微调大模型方法之一,方法简单易懂,道理清晰明了,对未来的工作有很强的启发性。如果想要深入了解LoRA的底层原理,建议仔细看一看这篇文章,如果只是应用,那么简单了解就好了~ 大模型预训练后的全量微调往往由于算力缺口而不可行,因

    2024年02月10日
    浏览(133)
  • [论文阅读笔记77]LoRA:Low-Rank Adaptation of Large Language Models

    题目 论文作者与单位 来源 年份 LoRA: Low-Rank Adaptation of Large Language Models microsoft International Conference on Learning Representations 2021 524 Citations 论文链接:https://arxiv.org/pdf/2106.09685.pdf 论文代码:https://github.com/microsoft/LoRA 研究主题 问题背景 核心方法流程 亮点 数据集 结论 论文类型 关

    2024年02月06日
    浏览(55)
  • 【DL】《LoRA: Low-Rank Adaptation of Large Language Models》译读笔记

    《Low-rank Adaption of Large Language Models: Explaining the Key Concepts Behind LoRA》 LoRA的秩分解矩阵是随机初始化的,然后通过梯度下降法进行训练。文章中提到,这种初始化方法可以保证LoRA的矩阵与预训练模型的权重相互正交,从而避免了对预训练模型的干扰。文章还比较了其他几种初

    2024年02月08日
    浏览(50)
  • 2021-arxiv-LoRA Low-Rank Adaptation of Large Language Models

    Paper: https://arxiv.org/abs/2106.09685 Code: https://github.com/microsoft/LoRA 自然语言处理的一个重要范式包括对通用领域数据的大规模预训练和对特定任务或领域的适应。当预训练更大的模型时,完全微调(重新训练所有模型参数)变得不那么可行。以 GPT-3 175B 为例,部署微调模型的独立

    2024年02月07日
    浏览(67)
  • Raki的读paper小记:LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS

    研究任务 对大模型进行部分微调 已有方法和相关工作 现有技术通常通过扩展模型深度引入推理延迟(Houlsby 等人,2019;Rebuffi 等人,2017),或通过减少模型可用序列长度(Li 和 Liang,2021;Lester 等人,2021;Ham-bardzumyan 等人,2020;Liu 等人,2021) 面临挑战 这些方法通常无法

    2024年02月15日
    浏览(49)
  • LORA: LOW-RANK ADAPTATION OF LARGE LAN-GUAGE MODELS

    Paper name LORA: LOW-RANK ADAPTATION OF LARGE LAN-GUAGE MODELS Paper Reading Note Paper URL: https://arxiv.org/pdf/2106.09685.pdf Code URL: huggingface 集成: https://github.com/huggingface/peft 官方代码: https://github.com/microsoft/LoRA 本文提出了低秩自适应 (Low-Rank Adaptation, LoRA),它冻结了预训练的模型权重,并将可训练

    2023年04月21日
    浏览(68)
  • 【论文&代码阅读】LORA: LOW-RANK ADAPTATION OF LARGE LAN- GUAGE MODELS

    最近很多工作好像都绕不开lora,无论是sd还是llm.... 问题:大模型重新训练所有模型参数的完全微调变得不太可行。 lora在做什么 我们提出了低秩自适应,即LoRA,它冻结预先训练的模型权重,并将可训练的秩分解矩阵注入Transformer架构的每一层 为什么work? 学习过的参数化模

    2024年02月10日
    浏览(44)
  • 简单理解大模型参数高效微调中的LoRA(Low-Rank Adaptation)

    [论文地址] [代码] [ICLR 22] 阅前须知:本博文可能有描述不准确/过度简化/出错的地方,仅供参考。 网络结构 其中,原有模型的参数是直接冻结的,可训练参数只有额外引入的LoRA参数(由nn.Parameter实现)。 模型微调的本质 记网络原有预训练参数为 W 0 ∈ R d × k W_0 in R^{d times

    2024年02月15日
    浏览(50)
  • Lora升级!ReLoRa!最新论文 High-Rank Training Through Low-Rank Updates

    关注公众号TechLead,分享AI与云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。 尽管通过扩展导致具有数千亿参

    2024年02月10日
    浏览(42)
  • 大模型 LLM 综述, A Survey of Large Language Models

    一般认为NLP领域的大模型=10 Billion参数(也有人认为是6B、7B, 工业界用, 开始展现涌现能力); 经典大模型有GPT-3、BLOOM、Flan-T5、GPT-NeoX、OPT、GLM-130B、PaLM、LaMDA、LLaMA等; 大模型时间线, 图来自A Survey of Large Language Models,下同。 2.1 涌现 涌现, emerge(abilities), 即一般指在大模型中出现

    2024年02月08日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包