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

      • PEFT综述
        • LST: Ladder Side-Tuning for Parameter and Memory Efficient Transfer Learning
        • 对比
      • Towards a Unified View of Parameter-Efficient Transfer Learning
      • Parameter-Efficient Fine-Tuning Methods for Pretrained Language Models A Critical Review and Assessment
    • LoRA

    • PrefixTuning

    • PromptTuning

    • P-Tuning

    • Adapter

    • Propulsion
  • 对比学习

  • 小样本学习

  • 迁移学习

  • 零样本学习

  • 集成学习

  • Mamba

  • PyTorch

  • CL

  • CIL

  • 小样本类增量学习FSCIL

  • UCIL

  • 多模态增量学习MMCL

  • LTCIL

  • DIL

  • 论文阅读与写作

  • 分布外检测

  • GPU

  • 深度学习调参指南

  • AINotes
  • PEFT
  • Survey
Geeks_Z
2024-02-05
目录

PEFT综述

LST: Ladder Side-Tuning for Parameter and Memory Efficient Transfer Learning

在简述 LST 方法之前,我们先思考一下,上述的 Adapter 方法和 P-Tuning 方法在训练微调时到底高效在哪?

我们知道在对模型训练时,我们姑且可以笼统的分为两步:反向传播和梯度下降,以 Pytorch 为例具体就是

loss.backward()  #反向传播
optimizer.step()  #梯度下降
1
2
  • backward()会根据模型的前向推理计算图来反向的对各个 layer 中的 weight 求的偏导∂L∂w 于之后的梯度下降,对各个 layer 中的 input 求偏导∂L∂x用于向前层传递梯度,链式求导。

  • step()则会根据所选用的优化器,对需要训练的参数执行相应的梯度下降策略,我们姑且可以将此过程简单描述成 如下公式 , 其中η 学习率

w=w−η∂L∂w

LST 直接在原模型的推理旁路上加了一个新的分支,也是固定原模型中的参数,将原模型各层输出与新建的旁路分支结合得到输出。

20240205212804

从图中不难发现,三种微调方法:

对于 Adapter 来说虽然只训练新插入的少部分参数,但是整个梯度回传的过程不能省略,换句话说,与微调整个模型相比:1)对于反向传播过程而言,各层对 weight 的梯度∂L∂w 用算了,但是对于 input 的梯度∂L∂x 算(要向前层传递); 2)对于梯度下降过程而言,只需要下降少部分新插入的层的 weight,原模型的 weight 都不动 对于 P-Tuning 虽然只需要训练 Embedding 层,但是 Embedding 层是输入层,所以与微调整个模型相比:1)对于反向传播过程而言,各层对 weight 的梯度∂L∂w 用算了,但是对于 input 的梯度∂L∂x 算(要向前层传递); 2)对于梯度下降过程而言,只需要下降 Embedding 层参数,原模型的 weight 都不动 所以我们再来回答本小节开始的问题:高效微调的高效 ,我觉得在于减少了所需梯度下降过程的权重量和计算量,对于反向传播的过程,不需要保存对原始 weight 得梯度也就节省了显存,但是反向传播的复杂度并没有降低。

而对于 LST 便是一种反向传播过程和梯度下降过程都高效的微调方法,如上图(c)而言,不难发现,LST 的反向传播和梯度下降过程都与原始模型无关,相当于我重新定义了一个小的模型结构,通过获取原模型的输出作为输入来协助微调最终的结果

对比

微调技术 对virtual token的处理 参与微调的参数 反向传播 梯度下降 推理延迟
Adapter 不用求原 W 梯度,得求全层的 X 梯度 下降少量新增网络的 W 会增加
P-Tuning MLP+LSTM/MLP 不用求原 W 梯度,得求全层的 X 梯度 下降 Embedding 层的 W 增加较少
Prefix tuning MLP
LST 只需要求一个小网络的 W 和 X 梯度 下降一个新增轻量级网络的 W 会增加
LoRA 既要求 W 梯度,还得求全层的 X 梯度,且计算量增多 下降少量的 W 没有
#PEFT
上次更新: 2025/06/25, 11:25:50
WKD
Towards a Unified View of Parameter-Efficient Transfer Learning

← WKD Towards a Unified View of Parameter-Efficient Transfer Learning→

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