当前位置: 首页 > news >正文

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+。这个领域发展迅速,新的变种和改进还在不断涌现。

http://www.xdnf.cn/news/240337.html

相关文章:

  • MySQL基础关键_002_DQL(一)
  • [AI]怎么计算中文被bert模型切分的tokens数量
  • TC8:SOMEIP_ETS_021-022
  • 产品VP简历模板案例
  • # 基于 Python 和 jieba 的中文文本自动摘要工具
  • ChipCN IDE KF32 导入工程后,无法编译的问题
  • 探秘明远智睿SSD2351开发板在HMI领域的独特魅力
  • 2025第八届数字中国峰会启幕 | 思特奇以数智力量,助推数字中国建设
  • 游戏性能测试
  • C 语 言 - - - 文 件 操 作
  • vue3 动态修改系统title
  • python查看指定的进程是否存在
  • 安凯微以创新之芯,赋能万物智能互联新时代
  • k8s术语值ReplicaSet
  • navicat中导出数据表结构并在word更改为三线表(适用于navicat导不出doc)
  • Ollama 安装 QWen3 及配置外网访问指南
  • 近期汇报
  • springboot框架常用配置
  • 在柯希霍夫积分法偏移成像中,消除数据采集和地下构造(如深浅孔径差异)导致的叠加次数不均匀会引起成像剖面强度差异
  • 【STM32单片机】#11.5 I2C通信(硬件读写)
  • TM1668芯片学习心得三
  • Qwen3-32B的幻觉问题
  • Windows系统安装Docker(Win10系统升级,然后安装)
  • UE 像素和线框盒子 材质
  • 【AI图像创作变现】08 变现渠道—间接获客:让客户主动找上门
  • 广州创科——湖北房县汪家河水库除险加固信息化工程
  • 【Android】轻松实现实时FPS功能
  • [Survey] Image Segmentation in Foundation Model Era: A Survey
  • AI赋能烟草工艺革命:虫情监测步入智能化时代
  • MySQL中ROW_NUMBER() OVER的用法以及使用场景