LoRA: 大模型快速训练的秘诀

本文是四两拨千斤,训练大模型的PEFT方法的最后一小节,感兴趣读者可以阅读完整版。

LoRA

LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS
核心思路是对模型参数做低秩分解,仅训练分解后的参数,模型部署也需额外保存低秩参数,计算时加上低秩参数部分。

LoRA的提出在上述PEFT方法之后,来自微软的研究者认为,现有的Adapter Tuning和Prefix Tuning这两种方法均有缺点:

  • Adapter Layers Introduce Inference Latency:
    虽然Adapter后续又有很多变种,但无论如何额外添加的Adapter层都会拖慢推理速度
  • Directly Optimizing the Prompt is Hard:
    应用Prefix-Finetuning时,直接优化prompt非常困难,而且其效果也不是随着训练参数的增加而单调递增

Aghajanyan等研究者在论文Intrinsic Dimensionality Explains the Effectiveness of Language Model Fine-Tuning提出了关于大模型的一个核心观察点:预训练模型存在一个低秩的“内在维度”(intrinsic dimension)使得其在被随机映射到一个更小的子空间时仍然可以高效学习。基于这种想法,作者假设预训练模型在转换到下游模型过程中也有一个内在维度,提出了下面的方法。

在这里插入图片描述

图中的A,B均为可训练参数,参数A=正态分布,B=0是初始化参数的方法

对于预训练模型权重 W 0 ∈ R d × k W_0 \in \R^{d \times k} W0Rd×k,引入一个低秩部分 Δ W \Delta W ΔW来限制其更新,即: W 0 + Δ W = W 0 + B A W_0 + \Delta W = W_0 + BA W0+ΔW=W0+BA,其中 B ∈ R d × r B\in \R^{d \times r} BRd×r A ∈ R r × k A \in \R^{r \times k} ARr×k,但秩 r ≪ m i n ( d , k ) r \ll min(d,k) rmin(d,k),训练时 W 0 W_0 W0被冻结不参与梯度更新,仅有 A A A B B B为可训练参数,修改后的前向传播可表示为:
h = W 0 x + Δ W x = W 0 x + B A x h=W_0x+\Delta Wx=W_0x + BAx h=W0x+ΔWx=W0x+BAx
这意味着增加的部分 Δ W x \Delta Wx ΔWx和原始部分可以并行计算,没有引入任何推理时延。

总结下来,LoRA拥有以下优点:

  1. A Generalization of Full Fine-tuning
    LoRA是一个更通用的finetuning方法,可以仅训练预训练模型参数的一小部分,它不需要在模型适配过程中累积梯度来更新全秩参数。这意味着当在全部权重矩阵和偏差项上应用LoRA更新时,通过设置LoRA的秩 r r r为预训练权重的秩,基本能够还原全量finetuning同等水平的表征能力。换句话讲,随着我们增大 r r r增加可训练参数的数量,使用LoRA方式训练基本可以收敛到训练原始模型。与之形成对比的是,采用adapter的一系列方法仅能收敛到MLP,而基于prefix的方法不能处理长输入序列。

  2. No Additional Inference Latency
    可以按照 W = W 0 + B A W=W_0 + BA W=W0+BA来存储和执行推理,迁移到其他任务时,可以减去 B A BA BA,再加上新任务的 B ′ A ′ B'A' BA,仅需一个占用少量存储的快捷操作即可迁移到新任务。这保证了和采用构建的finetuning方法相比,单任务及多任务都没有引入额外的推理时延。

作者通过实践发现,LoRA实际产生的最大的益处是节省内存和存储消耗,通过设置 r ≪ d m o d e l r \ll d_{model} rdmodel能够将一个使用Adam训练的大型transformer的VRAM(即显存)占用最大减少 2 / 3 2/3 2/3。具体而言,在GPT-3 175B上,VRAM消耗从1.2TB降低到350GB,在仅采用query和value矩阵映射矩阵的条件下,检查点的大小被降低了10000倍(从350GB到35MB)。假设我们需要100个转化模型,使用LoRA仅需保存 350 G B + 35 M B × 100 ≈ 354 G B 350GB+35MB\times 100 \approx 354GB 350GB+35MB×100354GB大小的空间,而全量Finetuning则需要 100 × 350 G B = 350 T B 100 \times 350GB=350TB 100×350GB=350TB的存储空间。这使得训练需要的GPU数量变少且减少了I/O瓶颈的次数,并且在任务间切换时,仅需在VRAM实时切换LoRA权重而不需要花费大量时间切换全量参数。除此之外,由于不需要计算大多数参数的梯度,训练速度也提升了25%。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LoRA(Large-scale Reinforcement Learning from Image Pixels with Latent Actions)是一种用于微调大型模型的方法,它结合了强化学习和图像像素级别的训练LoRA的目标是通过观察环境中的图像像素,并根据这些像素采取相应的行动来学习一个能够解决复杂任务的模型。 具体来说,LoRA使用了一个基于像素的强化学习框架,其中模型通过观察环境中的图像像素来学习如何采取最佳行动。这种方法的一个关键特点是,模型不需要任何先验知识或手工设计的特征,而是直接从原始像素数据中学习。 LoRA训练过程包括两个阶段:预训练和微调。在预训练阶段,使用自编码器来学习图像的表示。自编码器是一种无监督学习方法,它通过将输入图像压缩成低维编码,然后再将编码解压缩为重构图像。通过这种方式,自编码器可以学习到图像的有用特征。 在微调阶段,使用强化学习算法(如Proximal Policy Optimization)来优化模型的策略。模型通过观察环境中的图像像素,并根据当前的状态选择最佳的行动。通过与环境进行交互并根据奖励信号进行反馈,模型逐渐优化其策略,以实现更好的性能。 LoRA的优势在于它能够处理高维度的原始输入数据,并且不需要手工设计的特征。通过使用像素级别的训练LoRA可以学习到更丰富和复杂的特征表示,从而提高模型的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值