欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > LoRA、QLoRA、LoRA+、LongRA、DoRA、MaLoRA、GaLore

LoRA、QLoRA、LoRA+、LongRA、DoRA、MaLoRA、GaLore

2025/5/1 20:27:30 来源:https://blog.csdn.net/weixin_41012399/article/details/147638418  浏览:    关键词:LoRA、QLoRA、LoRA+、LongRA、DoRA、MaLoRA、GaLore

Lora:https://blog.csdn.net/GarryWang1248/article/details/135036298
好的,我们来逐一介绍这些用于微调大型语言模型(LLM)的技术,它们大多是基于 LoRA 的改进或相关方法:

1. LoRA (Low-Rank Adaptation)

  • 核心思想: 在大型预训练模型的现有权重旁边,为其特定层(通常是 Transformer 的注意力层或前馈网络层)注入可训练的低秩矩阵
  • 解决的问题: 全量微调(Full Fine-tuning)需要更新模型的所有参数,对于数十亿甚至数千亿参数的 LLM 来说,计算成本(显存、时间)极高。
  • 工作原理:
    • 冻结原始预训练模型的权重 W (维度 d x k)。
    • 引入两个小的、低秩的矩阵 A (维度 d x r) 和 B (维度 r x k),其中 r (rank) 远小于 dk (r << min(d, k))。
    • 训练时只更新 AB 的参数。模型的总更新量 ΔW 被近似为 BA (ΔW ≈ BA)。
    • 前向传播时,输出 h = Wx + BAx
    • 推理时,可以将 BA 加回到 W 中(W' = W + BA),形成一个新的权重矩阵,而不需要额外的计算开销。
  • 优点:
    • 显著减少可训练参数量(通常减少 90% 以上)。
    • 降低训练所需的 GPU 显存。
    • 训练速度更快。
    • 微调后的模型 checkpoint 非常小(只需存储 AB)。
    • 方便切换不同任务的微调(只需加载不同的 AB 即可)。
  • 缺点: 性能有时略低于全量微调,且固定秩 r 可能不是最优的。

2. QLoRA (Quantized LoRA)

  • 核心思想: 在 LoRA 的基础上,进一步通过量化来降低显存占用,使得在有限的硬件资源(如单张消费级 GPU)上也能微调非常大的模型。
  • 解决的问题: LoRA 减少了可训练参数,但在训练过程中,仍然需要将完整的原始模型权重(尽管被冻结)加载到显存中进行前向和反向传播计算,这对于超大模型来说仍然是显存瓶颈。
  • 关键技术:
    • 4-bit NormalFloat (NF4): 一种新的 4 位量化数据类型,据称对于正态分布的权重特别有效,能最大限度地减少量化带来的精度损失。
    • 双重量化 (Double Quantization): 对量化过程中产生的量化常数(quantization constants)本身再次进行量化,进一步节省显存(约每个参数节省 0.5 bit)。
    • 分页优化器 (Paged Optimizers): 利用 NVIDIA 统一内存特性,在 GPU 显存不足时,自动将优化器状态(Optimizer States)分页到 CPU 内存,防止 OOM (Out-Of-Memory) 错误。
  • 工作原理:
    • 将冻结的预训练模型权重 W 量化为 4-bit (NF4)。
    • LoRA 适配器矩阵 AB 通常保持在较高的精度(如 BFloat16)进行训练。
    • 在计算 Wx 时,将 4-bit 的 W 反量化回 BFloat16 进行计算。
    • 结合双重量化和分页优化器进一步降低显存峰值。
  • 优点:
    • 极大降低训练时的显存占用,能在单卡上微调此前无法微调的大模型(如 65B 参数模型)。
    • 保持了与 LoRA 相当甚至有时更好的性能。
  • 缺点: 量化和反量化会带来额外的计算开销,可能导致训练速度略微变慢。

3. LoRA+ (LoRA Plus)

  • 核心思想: 对 LoRA 训练过程中的学习率设置进行简单的优化。
  • 解决的问题: 标准 LoRA 通常对矩阵 AB 使用相同的学习率。但论文作者观察到,对于 ΔW = BA,矩阵 B 的梯度范数通常比 A 大很多。使用不同的学习率可能更有效。
  • 工作原理:
    • 为矩阵 B 设置一个显著高于矩阵 A 的学习率。例如,lr_B 可以是 lr_A 的 16 倍或更高。
    • 其他部分与标准 LoRA 相同。
  • 优点:
    • 实现简单,只需调整超参数。
    • 在一些实验中显示,相比标准 LoRA 设置,可以获得更好的性能,或者在更少训练步数内达到相似性能。
  • 缺点: 引入了额外的超参数需要调整(两个学习率)。

4. LongRA (或 LongLoRA)

  • 核心思想: 专门针对长文本上下文扩展场景优化 LoRA 微调。
  • 解决的问题: 使用标准方法(包括 LoRA)在短文本上微调的模型,直接应用于长文本推理时,性能通常会急剧下降。直接在长文本上微调又非常耗费资源。
  • 关键技术:
    • Shifted Sparse Attention (S²-Attn):微调阶段引入一种稀疏注意力机制。它将注意力计算限制在局部的块内,并通过“shift”操作让信息可以在相邻块之间流动。这使得在有限资源下进行较长上下文的微调成为可能。
    • 与 LoRA 结合: 使用 S²-Attn 进行微调的同时,依然采用 LoRA 来更新模型参数。
  • 工作原理:
    • 在微调阶段,用计算成本较低的 S²-Attn 替代标准的全局注意力。
    • 使用 LoRA 训练适配器参数 AB
    • 虽然 S²-Attn 本身是稀疏的,但微调后的模型(尤其是结合 LoRA)在推理时可以更好地泛化到使用标准全局注意力的长文本场景。
  • 优点:
    • 能够高效地将预训练模型的上下文窗口扩展到更长(例如从 2k 扩展到 8k 或更长)。
    • 在长文本任务上表现优于标准 LoRA 微调的模型。
    • 相比于完全在长文本上进行全量微调或标准 LoRA 微调,资源消耗更少。
  • 缺点: 引入了 S²-Attn 机制,可能需要对模型代码进行修改。

5. DoRA (Weight-Decomposed Low-Rank Adaptation)

  • 核心思想: 将权重更新分解为幅度 (Magnitude)方向 (Direction) 两个部分,并主要使用 LoRA 来调整方向。
  • 解决的问题: LoRA 直接学习权重变化量 ΔW = BA,这同时隐式地改变了原始权重 W 的幅度和方向。DoRA 认为显式地分开学习这两者可能更有效,特别是对于提升模型学习能力和表达能力。
  • 工作原理:
    • 将预训练权重 W 分解为其幅度 m = ||W|| (标量或向量) 和方向 V = W / ||W|| (矩阵)。
    • 使用 LoRA 来学习方向上的更新 ΔV = BA / ||W|| (这里 B 和 A 的维度与 LoRA 类似)。
    • 最终的权重 W' 通过学习到的幅度 m 和更新后的方向 (V + ΔV) 重新组合得到:W' = m * (V + ΔV)
    • 幅度 m 通常也设置为可训练的。
  • 优点:
    • 在相同的可训练参数预算下,通常比 LoRA 和 LoRA+ 取得更好的性能。
    • 通过解耦幅度和方向,可能使模型学习更稳定、更有效。
    • 有时可以用更小的秩 r 达到与 LoRA 相当的性能。
  • 缺点: 计算上比 LoRA 稍微复杂一点,需要存储和更新幅度向量 m

6. MaLoRA (Multi-head Aware LoRA / Matrix-wise LoRA)

  • 注意: MaLoRA 并不是像 QLoRA 或 DoRA 那样广为人知和标准化的术语。它可能指代几种不同的研究方向或特定论文中的方法。一种可能的解释是:
    • Multi-head Aware LoRA: 考虑到 Transformer 注意力层有多头(Multi-head)结构,为每个头分配不同的 LoRA 秩 r 或不同的 LoRA 适配器,而不是像标准 LoRA 那样对整个权重矩阵(如 QKV 投影矩阵)应用统一的秩。
    • Matrix-wise Adaptive LoRA: 动态地或者基于某种准则为模型中不同的权重矩阵(不仅仅是注意力层)选择是否应用 LoRA 以及使用什么样的秩。
  • 核心思想 (推测): 更细粒度地应用 LoRA,根据模型结构(如多头)或权重矩阵的重要性来差异化地分配低秩适应资源。
  • 解决的问题 (推测): 标准 LoRA 对所有目标层或所有头使用统一的秩可能不是最优的,某些头或层可能需要更大或更小的秩。
  • 优点 (推测): 可能更有效地利用参数预算,达到更好的性能/参数权衡。
  • 缺点 (推测): 增加了复杂性,需要更精细的设计和超参数调整。

7. GaLore (Gradient Low-Rank Projection)

  • 核心思想: 这是一种与 LoRA 思路不同的优化器层面的内存优化技术,它允许进行全参数训练,但通过低秩投影来显著减少优化器状态和梯度本身的内存占用。
  • 解决的问题: 即便使用 LoRA 等 PEFT 方法,优化器状态(如 Adam 的一阶和二阶矩估计)仍然会占用大量显存,尤其是在分布式训练或模型非常大时。对于希望进行全参数更新以获得最佳性能,但受限于内存的情况,需要新的方法。
  • 工作原理:
    • 在训练的每一步,计算完整的模型参数梯度 G
    • 将梯度 G 投影到一个低秩子空间,得到低秩梯度 G_low = P Q^T G (其中 P, Q 是投影矩阵)。这个投影是动态计算的,而不是像 LoRA 那样固定的结构。
    • 使用这个低秩梯度 G_low 来更新模型参数 W
    • 同时,优化器的状态也保持在低秩形式,从而大大减少内存。
  • 优点:
    • 实现了全参数训练的内存效率,内存占用可以与 LoRA 相当甚至更低。
    • 因为它更新所有参数,有潜力达到比基于适配器的 PEFT 方法(如 LoRA)更好的性能,更接近全量微调。
    • 不需要修改模型结构,是一种优化器层面的技术。
  • 缺点:
    • 计算梯度投影会带来额外的计算开销,可能影响训练速度。
    • 实现相对复杂,涉及到优化器内部的修改。

总结:

  • LoRA 是基础,通过低秩矩阵减少微调参数。
  • QLoRA 在 LoRA 基础上加量化,进一步降低显存,使大模型微调更可行。
  • LoRA+ 是 LoRA 的简单学习率优化。
  • LongRA (LongLoRA) 结合稀疏注意力,专门优化 LoRA 用于长文本。
  • DoRA 分解权重为幅度和方向,用 LoRA 改进方向学习,通常性能优于 LoRA。
  • MaLoRA (非标准术语) 可能指更细粒度的 LoRA 应用。
  • GaLore 是优化器技术,通过低秩梯度投影实现全参数训练的内存优化,思路与 LoRA 不同。

选择哪种技术取决于具体需求:对显存要求极高选 QLoRA;追求最佳性能且允许全参数更新但内存有限可选 GaLore;希望在 LoRA 基础上提升性能可选 DoRA;需要处理长文本选 LongRA;简单改进可选 LoRA+。这个领域发展迅速,新的变种和改进还在不断涌现。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词