BiliBili | IBM RethinkFun | 三分钟学会大模型PEFT的LORA算法 lora_rank lora_alpha

LORA算法原理与参数高效微调技巧

媒体详情

上传日期
2025-06-01 22:18
来源
https://www.bilibili.com/video/BV1wq421w7H8/
处理状态
已完成
转录状态
已完成
Latest LLM Model
gemini-2.5-pro-exp-03-25

转录

下载为TXT
speaker 1: 今天我们来学习一下laa的原理。 我们知道在深度神经网络里最主要的计算就是矩阵运算,而大模型里矩阵运算维度都是成千上万的,模型里我们要训练调整的权重也是用矩阵表示的,Lara就是通过化简权重矩阵来达到参数高效微调的,比如这里这个3乘3的权重矩阵,正常情况下前向传播时输入乘以权重得到输出,后向传播时调整权重矩阵更新网络。 而la拉的思想是在这个权重矩阵的旁边另辟蹊径,重新构造两个权重矩阵,laa a和laa b在这个例子里,这两个权重的维度分别为3乘1和1乘3。 值得注意的是,这两个拉A权重矩阵的乘积的维度和原始权重矩阵的维度是一样的,都是3乘3正向传播时输入,通过原始权重得到一个输出,同时输入通过下面这两个laa权重得到另一个输出,最后将这两组输出相加,得到这个矩阵计算更新后的输出。 你可以认为Lara这个分支在对模型进行微调,改进模型的输出,而后向传播时,我们锁定原始权重矩阵,只对laa权重进行更新,原始的权重个数是3乘3,一共九个,而laa权重的参数是3乘1加上1乘3 1共6个。 可以看到Lara可以减少更新权重的个数。 网络训练完成后,原始的矩阵权重没有变化,我们得到一个laa a和laa b的权重。 这时我们把laa a和laa b相乘,得到一个laa权重矩阵,这是这个laa权重矩阵的形状和原始权重矩阵的形状是一样的。 我们只需要把laa权重加到原始权重上,就完成了对原始网络的更新。 我们举的这个例子里,原始权重的shape是3乘3,看起来laa减少参数训练量也不并不明显。 假如原始权重维度是4096乘4096的,而取四的情况,原始矩阵的参数量是4096乘4096,一共16777216个。 而Lora a的参数个数为4096乘以4,Lora b的参数个数为4乘4096。 Lara训练的参数个数总共为32768个,训练参数是原始参数的512分之1,减少的参数量还是非常可观的。 我们看一下laa训练里有两个重要的参数R也就是rank。 假设原始权重的维度为M乘以n laa a的权重为M乘以R,laa b的权重为R乘以N R是用来连接laa a和laa b两个laa权重矩阵中的中间维度,一般它远远小于原始权重矩阵中的M和N一般R我们设置为二、4、8、十六等阿尔法,input和原始权重相乘后的输出为x input和laa权重相乘后的输出为ta x上边我们的例子里是直接将X和ta x相加。 但在实际实现中前向传播时,我们要对戴尔塔的权重进行一个调节,这个调节因子就是阿尔法除以R同样在更新原始权重时,也记得要对laa权重加上这个调节因子。 因为data塔X是对原始模型输出X进行的调节,调节因子决定了X影响的大小,一般我们设置阿尔法为R的I到8倍。 Laa训练有很多优点,一、它大大节省了微调大模型的参数量。 2、它的训练效果和全量微调差不多。 3、微调完的laa模型权重可以末置回原来的权重,不会改变原有的模型结构,推理时也不增加额外的计算量。 四你可以通过改变rank R二的参数,使得最高的情况下Lara的训练实际上等同于全量微调。 好了,今天我们就讲到这里,我想你一定学会了劳拉,我们下期见。

最新摘要 (详细摘要)

生成于 2025-06-01 22:20

概览/核心摘要 (Executive Summary)

该视频详细介绍了大模型参数高效微调技术 LoRA (Low-Rank Adaptation) 的核心原理、关键参数及优势。LoRA 通过在原始权重矩阵旁引入两个低秩矩阵(LoRA A 和 LoRA B)来间接调整模型参数。在前向传播时,输入分别通过原始权重和 LoRA 权重(LoRA A 与 LoRA B 的乘积,并经过 alpha 因子缩放)产生输出,两者相加得到最终输出。关键在于,训练过程中仅更新 LoRA A 和 LoRA B 的参数,原始模型权重保持冻结,从而大幅减少需要训练的参数量。例如,对于一个 4096x4096 的权重矩阵,当 rank (r) 设置为 4 时,LoRA 训练的参数量仅为原始参数量的 1/512。训练完成后,LoRA 权重可以与原始权重合并,不改变模型结构,也不增加推理时的额外计算量。LoRA 的两个核心参数是 rank (r),决定了低秩矩阵的维度,通常远小于原始维度;以及 alpha (α),一个缩放因子,用于调节 LoRA 分支对原始输出的贡献。LoRA 的主要优点包括显著减少微调参数量、训练效果接近全量微调、权重可合并且不影响推理效率。

LoRA 原理与机制

核心思想

深度神经网络的核心是矩阵运算,大模型中的权重矩阵维度巨大。LoRA (Low-Rank Adaptation) 旨在通过简化权重矩阵的调整来达到参数高效微调的目的。其核心思想是在原始权重矩阵旁边,构建两个新的、更小的权重矩阵(LoRA A 和 LoRA B),通过训练这两个小矩阵来间接更新原始网络。

  • 原始权重 (W): 维度为 M x N。
  • LoRA A 权重: 维度为 M x r。
  • LoRA B 权重: 维度为 r x N。
    • 其中 r 是一个远小于 M 和 N 的中间维度 (rank)。
    • LoRA A 和 LoRA B 的乘积 (LoRA_A * LoRA_B) 维度与原始权重 W 相同 (M x N)。

前向传播

  1. 输入数据同时通过两条路径:
    • 路径1 (原始路径): 输入乘以原始权重矩阵 W,得到一个输出 X
    • 路径2 (LoRA 路径): 输入乘以 LoRA A 和 LoRA B 的乘积(即 LoRA_A * LoRA_B),得到另一个输出 ΔX
  2. 最终输出是这两条路径输出的结合。在实际实现中,ΔX 会经过一个调节因子 (alpha / r) 缩放后再与 X 相加。
    • Output = X + (alpha / r) * ΔX

后向传播与训练

  • 在训练过程中,原始权重矩阵 W 被锁定(冻结),不进行更新
  • 仅对 LoRA A 和 LoRA B 的权重进行更新

参数量对比

LoRA 显著减少了需要训练的参数数量。

  • 示例1 (3x3 矩阵):
    • 原始权重参数:3 * 3 = 9 个。
    • 假设 r=1,则 LoRA A (3x1),LoRA B (1x3)。
    • LoRA 权重参数:(3 * 1) + (1 * 3) = 6 个。
      • 视频中提到“3乘1加上1乘3 1共6个”,此处的额外“1”可能是口误或转录错误。
  • 示例2 (4096x4096 矩阵,r=4):
    • 原始权重参数:4096 * 4096 = 16,777,216 个。
    • LoRA A 参数:4096 * 4 = 16,384 个。
    • LoRA B 参数:4 * 4096 = 16,384 个。
    • 总 LoRA 训练参数:16,384 + 16,384 = 32,768 个。
    • 参数缩减比例:32768 / 16777216 = 1/512
      • “训练参数是原始参数的512分之1,减少的参数量还是非常可观的。”

训练完成后的权重合并

  1. 训练完成后,原始权重矩阵 W 保持不变。
  2. 得到训练好的 LoRA A 和 LoRA B 权重。
  3. 计算 LoRA 权重矩阵:ΔW_LoRA = LoRA_A * LoRA_B
  4. 将经过缩放的 LoRA 权重矩阵加到原始权重矩阵上,完成对原始网络的更新:
    • W_updated = W + (alpha / r) * ΔW_LoRA
    • 视频中提到:“我们只需要把laa权重加到原始权重上,就完成了对原始网络的更新。”并补充“也记得要对laa权重加上这个调节因子。”

LoRA 的关键参数

Rank (r)

  • 定义:r 是连接 LoRA A 和 LoRA B 两个矩阵的中间维度。
    • LoRA A 的维度为 M x r。
    • LoRA B 的维度为 r x N。
  • 特性:“一般它远远小于原始权重矩阵中的M和N”。
  • 常见设置:“一般R我们设置为二、4、8、十六等” (即 2, 4, 8, 16 等)。

Alpha (α)

  • 定义:一个调节因子,用于缩放 LoRA 分支的输出。
  • 作用:在前向传播时,LoRA 分支的输出 ΔX 会乘以 alpha / r
    • “我们要对戴尔塔的权重进行一个调节,这个调节因子就是阿尔法除以R”。
  • 影响:“调节因子决定了X影响的大小” (更准确地说是调节 ΔX 对原始输出 X 的影响大小)。
  • 常见设置:“一般我们设置阿尔法为R的I到8倍” (应为 “1到8倍”,即 α 通常设为 r 的1倍至8倍之间)。

LoRA 的优点

视频总结了 LoRA 训练的几个主要优点:

  1. 显著节省参数量: “它大大节省了微调大模型的参数量。”
  2. 效果接近全量微调: “它的训练效果和全量微调差不多。”
  3. 权重可合并,推理无额外开销: “微调完的laa模型权重可以末置回原来的权重,不会改变原有的模型结构,推理时也不增加额外的计算量。”
  4. 灵活性与可扩展性: “你可以通过改变rank R二的参数,使得最高的情况下Lara的训练实际上等同于全量微调。” (此处的“二”可能是口误或转录错误,意指通过调整 r 的大小,极端情况下可以接近全量微调的效果)。

结论

LoRA 作为一种参数高效微调技术,通过引入并仅训练低秩适配矩阵,能够在大幅减少训练参数的同时,达到与全量微调相近的性能。其权重可合并的特性使其在推理时不会引入额外计算负担,因此得到了广泛应用。