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

大模型微调(面经总结)

持续更新中

  • 一、LORA篇
    • 1、介绍一下Lora的原理
    • 2、LoRA 是为了解决什么问题提出的?哪些模型适合用 LoRA 微调?什么是低秩分解?
        • **低秩分解:用小矩阵逼近大矩阵**
    • 3、LoRA初始化
    • 4、LoRA初始化秩 r 是怎么选的?为什么不选其他值?
      • 📌 一般经验:
    • 5、LoRA家族
      • 5.1 LoRA+
      • 4.2 VeRA
      • 4.3 QLoRA

一、LORA篇

1、介绍一下Lora的原理

LoRA 是一种参数高效微调方法,其核心思想是将原始权重矩阵的更新限制在一个低秩空间内,从而显著减少训练参数量。
不同于传统微调,LoRA 将权重的更新项 Δ W \Delta W ΔW 表示为两个低秩矩阵 A ∈ R r × d A \in \mathbb{R}^{r \times d} ARr×d B ∈ R d × r B \in \mathbb{R}^{d \times r} BRd×r 的乘积:
W ′ = W + Δ W = W + B A W' = W + \Delta W = W + BA W=W+ΔW=W+BA
训练阶段只更新两个低秩矩阵 A A A B B B ,原始模型权重 W W W 保持不变;

2、LoRA 是为了解决什么问题提出的?哪些模型适合用 LoRA 微调?什么是低秩分解?

  • LoRA 的核心目标:降低大模型微调成本 参数量从 O ( d 2 ) O(d^2) O(d2) O ( r d ) O(rd) O(rd)
  • 适合含大量线性层的 Transformer 架构模型 比如注意力模块的 Q/K/V 投影矩阵、FFN前馈神经网络
低秩分解:用小矩阵逼近大矩阵

定义:低秩分解是将高维矩阵近似为两个低维矩阵的乘积,以降低表示复杂度。
数学形式:对于 d × d d \times d d×d 的高维矩阵 W W W,找到两个低维矩阵 A ∈ R r × d A \in \mathbb{R}^{r \times d} ARr×d B ∈ R d × r B \in \mathbb{R}^{d \times r} BRd×r 的乘积,使得:

W ≈ B A W \approx BA WBA

  • (A) 是 降维矩阵:将原始 d d d 维空间映射到 r r r 维子空间(提取关键特征)。
  • (B) 是 升维矩阵:将 $r$ 维特征恢复到 d d d 维空间(重构原始空间的更新)。
  • 优势:通过仅优化 (A) 和 (B) 的 2 r d 2rd 2rd 个参数(远小于 d 2 d^2 d2),即可近似表达 (W) 的主要变化,大幅减少计算量。

3、LoRA初始化

LoRA 的初始化通常遵循以下原则:

  • 原始模型权重 W 不变

  • LoRA 的矩阵:

    • A A A 通常使用正态分布初始化:nn.Linear(..., bias=False) 默认初始化
    • B B B 通常初始化为 全零矩阵,这样一开始 Δ W = B A = 0 \Delta W = B A = 0 ΔW=BA=0,模型输出不会被扰动,保证收敛稳定性

如果A也初始化成0,这样都没法更新了。对于

对于 y = B A x y = B A x y=BAx

  • 对 B 的梯度: ∂ L ∂ B = ∂ L ∂ y ⋅ ( A x ) T \displaystyle \frac{\partial L}{\partial B} = \frac{\partial L}{\partial y} \cdot (A x)^T BL=yL(Ax)T
  • 对 A 的梯度: ∂ L ∂ A = B T ⋅ ( ∂ L ∂ y ) ⋅ x T \displaystyle \frac{\partial L}{\partial A} = B^T \cdot \left( \frac{\partial L}{\partial y} \right) \cdot x^T AL=BT(yL)xT
    向量对矩阵求导规则:
    如果:
  • y = B z y = B z y=Bz
  • B ∈ R d × r B \in \mathbb{R}^{d \times r} BRd×r
  • z ∈ R r z \in \mathbb{R}^{r} zRr
    则有:
    ∂ L ∂ B = ∂ L ∂ y ⋅ z T \frac{\partial L}{\partial B} = \frac{\partial L}{\partial y} \cdot z^T BL=yLzT
    📌 这是矩阵微积分中经典的链式法则:
  • ∂ L ∂ y \frac{\partial L}{\partial y} yL d d d 维行向量(外层loss对每个输出的导数)
  • z T z^T zT 1 × r 1 \times r 1×r 行向量
  • 所以它们的乘积是一个 d × r d \times r d×r 的矩阵(和 B 同型)

4、LoRA初始化秩 r 是怎么选的?为什么不选其他值?

LoRA 中的秩 $r$ 是一个超参数,控制低秩矩阵的维度,通常选取值为 4、8、16、32、64,具体视模型规模和任务而定。

  • 太小(如 r = 1 r=1 r=1:表达能力太弱,模型性能下降
  • 太大(如 r = 512 r=512 r=512:虽然逼近能力强,但和原始 full fine-tune 差别不大,丧失了 LoRA 节省资源的意义

📌 一般经验:

模型规模推荐 LoRA 秩 r
<100M 参数4-8
100M-1B16
>1B 模型32 或 64

5、LoRA家族

参考:LoRA及衍生

5.1 LoRA+

将矩阵 B 的学习率设置得比矩阵 A 的学习率高得多
在这里插入图片描述

4.2 VeRA

VeRA(Very Efficient Rank Adaptation)是一种改进版 LoRA 微调方法,它固定低秩矩阵 A 和 B(随机初始化后冻结,在所有层之间共享;),仅训练缩放向量 d 和 b,实现参数更少、适配性更强的微调。
在这里插入图片描述
等等

4.3 QLoRA

对LoRA进行量化

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

相关文章:

  • 代码风格指南
  • 聚焦北京央美备考画室:探寻实力之巅
  • 码蹄集——圆周率II、三个非负整数
  • PCB设计自检表
  • 基于心理健康与数字行为数据的多维度分析
  • JAVA运算符详解
  • Oracle向PG转移建议以及注意点
  • 57页 @《人工智能生命体 新启点》中國龍 原创连载
  • IvorySQL 核心技术解读:双 Parser 架构如何定义数据库兼容性?
  • python训练营打卡第36天
  • 竞赛小算法总结(二):gcdlcm,拓展欧几里得线性同余,逆元(含代码详解)
  • AE的ai图层导到Ai
  • spring4第2课-ioc控制反转-依赖注入,是为了解决耦合问题
  • WIN10 安装dify ollama搭建工作流agent
  • 两种主流检索技术:BM25(基于关键词匹配)和向量相似度检索
  • LVGL(Flex布局)
  • Docker修改镜像存放位置
  • qiankun 子应用怎样通过 props拿到子应用【注册之后挂载之前】主应用中发生变更的数据
  • vue2轮播图组件
  • 计算机网络实验课(二)——抓取网络数据包,并实现根据条件过滤抓取的以太网帧,分析帧结构
  • 如何检查液质联用仪LCMS的真空度
  • 提升前端性能:减少DOM操作
  • 在线项目管理工具对比:Trello、Worktile等20款软件测评
  • Java的Spring Cloud生态中实现SSE(Server-Sent Events)服务端实践
  • YoloV11改进策略:卷积篇-风车卷积-即插即用
  • 代码随想录算法训练营第60期第四十九天打卡
  • day05-常用API(二):Lambda、方法引用详解
  • Python装饰器与异常捕获的高级用法详解
  • 基于 STM32 的农村污水处理控制系统设计与实现
  • @vue/composition-api