大模型面试题剖析:LoRA高效微调的核心原理

部署运行你感兴趣的模型镜像

一、背景:全参数微调的困境

大型语言模型(LLM)参数规模极大,全参数微调存在诸多难题:

  • 成本高昂:需存储和更新所有模型参数副本,训练开销大。
  • 部署困难:每个任务都要存储完整模型副本,占用大量存储空间。
  • 资源需求高:对计算资源和GPU内存要求严苛,普通设备难以支撑。

二、LoRA核心原理

(一)核心思想

假设模型权重的更新可通过低秩分解表示,不直接更新原始权重矩阵,而是训练两个更小的低秩分解矩阵,大幅减少需训练和存储的参数数量。

(二)数学表达与低秩分解示例

新的矩阵计算式为 h=W0x+ΔWxh = W_0x + \Delta Wxh=W0x+ΔWx,其中W0W_0W0是原始权重矩阵,xxx是输入向量,ΔW\Delta WΔW是新增权重矩阵。
为控制新增参数规模,将ΔW\Delta WΔW分解为两个低秩矩阵AAABBB的乘积(ΔW=BA\Delta W = BAΔW=BA),此时计算式变为 h=W0x+BAxh = W_0x + BAxh=W0x+BAx,其中A∈Rr×kA \in R^{r \times k}ARr×kB∈Rd×rB \in R^{d \times r}BRd×r,且r≪min(d,k)r \ll min(d,k)rmin(d,k)rrr为LoRA的秩,远小于原始维度)。
比如,有一个表示“不同城市在不同季节的游客数量”的矩阵ΔW\Delta WΔW,假设原始矩阵是4×44\times44×4(4个城市、4个季节),若我们发现游客数量主要受“气候适宜度”和“旅游宣传力度”两个维度影响(低秩特性,即r=2r = 2r=2),那么可以把ΔW\Delta WΔW分解为矩阵AAA2×42\times42×4,表示“气候适宜度”“旅游宣传力度”与4个季节的关联)和矩阵BBB4×24\times24×2,表示4个城市对“气候适宜度”“旅游宣传力度”的响应)。原本ΔW\Delta WΔW4×4=164\times4 = 164×4=16个参数,分解后AAA2×4=82\times4 = 82×4=8个参数,BBB4×2=84\times2 = 84×2=8个参数,总共8+8=168 + 8 = 168+8=16个参数,看似数量没减,但当原始矩阵维度更大时,优势就很明显。比如原始矩阵是100×100100\times100100×100,若r=10r = 10r=10,分解后AAA10×10010\times10010×100(1000个参数),BBB100×10100\times10100×10(1000个参数),总共2000个参数,远少于原始的10000个参数,极大减少了参数数量。

(三)与本征维度的关联

本征维度指充分描述数据或空间结构/特征所需的最小维度,实际任务相关的权重更新往往集中在低维子空间。LoRA利用这一特性,通过低秩分解捕获权重更新,契合任务适配的低本征维度特点。比如一张苹果图片,展示很精细,有光线、斑点、叶子脉络、细微色差等,但如果只是要认出是苹果,仅用普通像素点展示就可以,这些像素极低的点才是最关键的信息,对应到矩阵就是其本征维度低。

三、LoRA的优势

  • 减少参数:显著降低可训练参数数量,如上述100×100100\times100100×100矩阵的例子,参数大幅减少。
  • 降低资源需求:减少GPU内存占用,加快训练速度。
  • 多任务共享:多个任务可共享基础模型,只需存储小型任务特定适配器。像在线客服场景,公司有基础大语言模型用于客服对话,为不同产品线(如手机、电脑、家电)定制客服机器人时,只需维护一个基础模型,为每个产品线训练小型LoRA适配器,运行时动态加载对应适配器,大幅节省存储空间和训练成本,还能快速支持新产品线。
  • 性能接近全微调:训练稳定性好,性能与完整微调相近。

四、LoRA的训练与初始化

(一)初始化

矩阵A的元素服从正态分布N(0, 1),矩阵B初始化为全0矩阵。这种初始化可确保初始梯度有效传播、提供足够随机性,且避免破坏预训练模型初始性能。

(二)训练过程

训练仅更新A和B的值。初始时B为0,权重更新无效果;通过反向传播计算损失对B的梯度,利用梯度下降逐步更新B,使其收敛到有助于完成任务的值。学习率、任务性质、优化器选择、A的初始值等会影响B的变化,训练过程中B经历从快速变化到趋于稳定的阶段。如果B保持为0,模型就无法学习任何任务特定的适配,损失函数会推动B向着能够减小任务损失的方向变化。

五、LoRA在Transformer中的作用位置与应用

(一)基本概念阐释

  • 查询向量(Q, Query):用于表达模型的查询意图。
  • 键向量(K, Key):用于承载可供查询的信息标识。
  • 值向量(V, Value):用于存储实际的信息内容。
  • 输出投影(O, Output):用于将注意力机制的输出映射至目标维度。

(二)在Transformer架构中的流程位置

输入序列首先经过线性投影层(Linear Projection Layer),随后依次进行查询向量(Q)、键向量(K)、值向量(V)的矩阵变换操作,接着执行注意力计算流程,之后进行输出投影(O)的矩阵变换,最终生成输出结果。

(三)各矩阵的具体功能

  • Q矩阵:负责将输入数据转换为查询形式。
  • K矩阵:负责将输入数据转换为可供查询的键表示。
  • V矩阵:负责存储实际的信息内容。
  • O矩阵:负责将注意力机制的输出转换为所需的表示形式。

(四)在LoRA中的应用方式

LoRA主要应用于查询向量权重矩阵(WQW_QWQ)、键向量权重矩阵(WKW_KWK)、值向量权重矩阵(WVW_VWV)以及输出投影权重矩阵(WOW_OWO)的更新过程,且可对每个上述权重矩阵单独应用LoRA。以查询向量(Q)为例,原始计算方式为 Q=input×WQQ = \text{input} \times W_QQ=input×WQ,应用LoRA后,计算方式变为 Q=input×(WQ+BA)Q = \text{input} \times (W_Q + BA)Q=input×(WQ+BA)(其中BBBAAA为低秩矩阵)。

(五)LoRA的选择性应用策略

LoRA支持仅对部分矩阵进行应用,常见的组合形式包括仅对查询向量(Q)和值向量(V)应用、对查询向量(Q)、键向量(K)、值向量(V)全部应用,以及对查询向量(Q)、键向量(K)、值向量(V)、输出投影(O)全部应用。LoRA的作用体现在对W0Q+ΔWQW_0Q + \Delta W_QW0Q+ΔWQW0K+ΔWKW_0K + \Delta W_KW0K+ΔWKW0V+ΔWVW_0V + \Delta W_VW0V+ΔWVW0O+ΔWOW_0O + \Delta W_OW0O+ΔWO中的ΔW\Delta WΔW进行低秩分解优化。

(六)实际应用影响

  • Q矩阵更新:会对模型的查询方式产生影响。
  • K矩阵更新:会对键的表示形式产生影响。
  • V矩阵更新:会对值的内容产生影响。
  • O矩阵更新:会对最终输出结果产生影响。

六、总结

LoRA借助低秩分解,解决了大语言模型全参数微调的痛点,在减少参数、降低资源消耗的同时保证微调性能,还能灵活作用于Transformer不同权重矩阵,为大模型在多场景的高效适配提供了有力支撑,推动了大语言模型的落地应用。

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

艾醒(AiXing-w)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值