Geeks_Z の Blog Geeks_Z の Blog
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)

Geeks_Z

AI小学生
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)
  • Python

  • MLTutorials

  • 卷积神经网络

  • 循环神经网络

  • Transformer

  • VisionTransformer

  • 扩散模型

  • 计算机视觉

  • PTM

  • MoE

  • LoRAMoE

  • LongTailed

  • 多模态

  • 知识蒸馏

  • PEFT

    • Survey

    • LoRA

      • LoRA
      • LoRA综述
        • PiSSA
        • MiLoRA
        • VeRA
        • LoRA-drop
        • AdaLoRA
        • GaLore
        • Deep LoRA
        • CorDA
        • QLoRA
        • DoRA
        • LoRA-FA
        • ROSA
        • References
      • LoRA-GA
      • LoRA-Pro
      • LoRA+
      • MoSLoRA
      • AM-LoRA
      • MiLoRA
    • PrefixTuning

    • PromptTuning

    • P-Tuning

    • Adapter

    • Propulsion
  • 对比学习

  • 小样本学习

  • 迁移学习

  • 零样本学习

  • 集成学习

  • Mamba

  • PyTorch

  • CL

  • CIL

  • 小样本类增量学习FSCIL

  • UCIL

  • 多模态增量学习MMCL

  • LTCIL

  • DIL

  • 论文阅读与写作

  • 分布外检测

  • GPU

  • 深度学习调参指南

  • AINotes
  • PEFT
  • LoRA
Geeks_Z
2024-07-15
目录

LoRA综述

PiSSA

PiSSA: Principal Singular Values and Singular Vectors Adaptation of Large (opens new window)

如图 1 所示,PiSSA (图 1c) 在模型架构上和 LoRA [1] 完全一致 (图 1b),只是初始化 Adapter 的方式不同。LoRA 使用高斯噪声初始化 A,使用 0 初始化 B。而 PiSSA 使用主奇异值和奇异向量 (Principal Singular values and Singular vectors) 来初始化 Adapter 来初始化 A 和 B。

MiLoRA

MiLoRA: Efficient Mixture of Low-Rank Adaptation for Large Language Models Fine-tuning

  • 目标:MiLoRA减少在多租户环境中生成新标记时的延迟——基于提示的路由机制
  • 方案:输入提示的隐藏状态作为输入,经过pooler activation router,确定LoRA,后续层不再更改
  • 效果:
  • 问题:直接将输入作为prompt?

VeRA

VeRA: Vector-based Random Matrix Adaptation

  • 目标:减少LoRA可训练参数量
  • 效果:VeRA 与 LoRA 之间的性能差异并不显著,但可训练参数总量的下降非常明显,相比 LoRA, VeRA 的训练参数仅为前者的 1/100

LoRA-drop

LoRA-drop:Efficient LoRA Parameter Pruning based on Output Evaluation

  • 目标:对不重要层的LoRA进行剪枝
  • 方案:根据BAX 算重要性
  • 效果:

AdaLoRA

AdaLoRA:Adaptive Budget Allocation for Parameter-Efficient Fine-Tuning

  • 目标:
  • 方案:与相同秩的标准LoRA相比,两种方法总共有相同数量的参数,但这些参数的分布不同,在AdaLoRA中,有的矩阵的秩高一些,有的矩阵的秩低一些
  • 效果:
  • 问题:

GaLore

  • 目标:
  • 方案:
  • 效果:
  • 问题:

Deep LoRA

  • 目标:
  • 方案:
  • 效果:
  • 问题:

CorDA

QLoRA

DoRA

DoRA(Weight-Decomposed Low-Rank Adaptation)的主要思想是将预训练权重分解为幅度(magnitude)和方向(direction),并利用 LoRA 来微调方向矩阵。

class LinearWithDoRAMerged(nn.Module):

    def __init__(self, linear, rank, alpha):
        super().__init__()
        self.linear = linear
        self.lora = LoRALayer(
            linear.in_features, linear.out_features, rank, alpha
        )
        self.m = nn.Parameter(
            self.linear.weight.norm(p=2, dim=0, keepdim=True))

  # Code loosely inspired by
  # https://github.com/catid/dora/blob/main/dora.py

    def forward(self, x):
        lora = self.lora.A @ self.lora.B
        numerator = self.linear.weight + self.lora.alpha*lora.T
        denominator = numerator.norm(p=2, dim=0, keepdim=True)
        directional_component = numerator / denominator
        new_weight = self.m * directional_component
        return F.linear(x, new_weight, self.linear.bias)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

LoRA 通常会等比例增减幅度和方向,DoRA 通过将预训练权重矩阵分解为幅度和方向,能够更接近全量微调的效果。

LoRA-FA

降低激活内存

ROSA

Arxiv: https://arxiv.org/pdf/2407.07802 Code: https://github.com/rosa-paper/rosa

本文解决 LoRA低秩和初始化的问题。1)从子空间角度解决低秩问题的方法还有 GaLore 和 Deep LoRA。2)解决初始化的相似方法有 MiLoRA 和 CorDA。

  • 2024 || ROSA: 随机子空间优化的 LoRA (opens new window)

References

-图解 Fine-tuning:LoRA 系列微调技术概述 (opens new window)

上次更新: 2025/06/25, 11:25:50
LoRA
LoRA-GA

← LoRA LoRA-GA→

最近更新
01
帮助信息查看
06-08
02
常用命令
06-08
03
学习资源
06-07
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Geeks_Z | MIT License
京公网安备 11010802040735号 | 京ICP备2022029989号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式