大模型微调(面经总结)

持续更新中

  • 一、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.pswp.cn/pingmian/82497.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Camera相机人脸识别系列专题分析之一:人脸识别系列专题SOP及理论知识介绍

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a;内存泄漏和内存占用拆解系列专题 这一篇我们开始讲&#xff1a; Camera相机人脸识别系列专题分析之一&#xff1a;人脸识别系列专题SOP及理论知识…

【Elasticsearch】PUT` 请求覆盖式更新

是的&#xff0c;Elasticsearch 中的 PUT 请求是覆盖式的。当你使用 PUT 请求向索引中写入文档时&#xff0c;如果文档已经存在&#xff0c;Elasticsearch 会完全替换整个文档的内容&#xff0c;而不是进行部分更新。 覆盖式的具体行为 - 文档存在时&#xff1a;PUT 请求会用新…

计算机系统结构-第4章-数据级并行

数据集并行的概念: 并行场景1: 对不同数据执行相同的操作: 串行执行: 可以同时进行: 可以尝试一个多条指令,多核执行 引入: SISD: 单核,单线程,串行执行,这样耗时 MIMD: 多核,多线程,并行执行,一条指令多次重复,变成了MIMID 存在的问题: 在标量CPU流水线中&#xff0…

重新安装解决mac vscode点击不能跳转问题

依次执行以下过程 删除vscode程序 删除vscode的缓存文件夹(xxx表示你的用户名) /Users/xxx/Library/Application Support/Code 重新安装vscode 这时候你会反向可以跳转项目内的import 文件以及自定义函数。但是import安装的包还不能点击跳转 配置python环境 如果你电脑没有安…

题目 3334: 蓝桥杯2025年第十六届省赛真题-园艺

题目 3334: 蓝桥杯2025年第十六届省赛真题-园艺 时间限制: 2s 内存限制: 192MB 提交: 129 解决: 37 题目描述 小蓝从左到右种了 n 棵小树&#xff0c;第 i 棵树的高度为 hi &#xff0c;相邻树的间隔相同。 小蓝想挪走一些树使得剩下的树等间隔分布&#xff0c;且从左到右高度逐…

Chrome 开发中的任务调度与线程模型实战指南

内容 概述 快速入门指南 核心概念线程词典 线程任务优先使用序列而不是物理线程 发布并行任务 直接发布到线程池通过 TaskRunner 发布 发布顺序任务 发布到新序列发布到当前&#xff08;虚拟&#xff09;主题 使用序列代替锁将多个任务发布到同一线程 发布到浏览器进程中的主线…

详解osgb的顶点,纹理,索引,UV读取与存储

virtual void apply(osg::Geode& node) {for (int i 0; i < node.getNumDrawables(); i){osg::Geometry* geometry dynamic_cast<osg::Geometry*>(node.getDrawable(i));if (geometry){//apply(*g);//***********************************************//解析顶点…

CSS闯关指南:从手写地狱到“类”积木之旅|得物技术

一、背景 在Web开发网页设计中&#xff0c;CSS&#xff08;层叠样式表&#xff09;扮演着至关重要的角色&#xff0c;它用于控制网页的布局、外观和视觉效果。CSS不仅可以美化网页的视觉表现&#xff0c;还可以提高网页的可访问性、可维护性和响应式设计。在我们进行网页开发的…

【大模型应用开发】Qwen2.5-VL-3B识别视频

0. 编写代码并尝试运行 克隆以下代码 git clone https://gitee.com/ai-trailblazer/qwen-vl-hello.git 尝试运行qwen-vl-hello.py&#xff0c;报错原因缺少modelscope&#xff1a; 1. 安装qwen-vl-utils工具包 pip install qwen-vl-utils[decord]0.0.8 尝试运行&#xff0c;…

MySQL 窗口函数深度解析:语法、应用场景与性能优化

一、窗口函数核心概念 ​​本质​​&#xff1a;对一组与当前行相关联的行执行计算&#xff0c;​​不改变原表行数​​ ​​与聚合函数的区别​​&#xff1a; SELECT department, AVG(salary) -- 普通聚合&#xff1a;每个部门一行 FROM employees GROUP BY department;SE…

新版Chrome浏览器加载eDrawings 3D Viewer控件网页查看DWG、DXF

eDrawings是一款由达索系统&#xff08;DASSAULT SYSTMES&#xff09;开发的免费跨平台CAD看图工具&#xff0c;专注于3D模型和2D工程图的查看、协作与共享。其核心功能包括多格式支持、动态模型展示、跨平台适配及轻量化操作体验&#xff0c;适用于工程设计、教育培训等领域。…

阿姆斯特朗数

阿姆斯特朗数也就是俗称的水仙花数&#xff0c;是指一个n位数&#xff0c;其各位数字的n次方之和等于该数本身。例如&#xff0c;153是一个水仙花数&#xff0c;因为153&#xff1d;13&#xff0b;53&#xff0b;33。请问100-10000所有水仙花数有哪些。 采用穷举法对范围之间的…

vmvare 虚拟机内存不足

centos 扩展物理卷df -hT / sudo du -hx --max-depth1 / | sort -rh | head -n 20 // 查看前20个的大文件 # 清理旧日志&#xff08;保留最近7天&#xff09; sudo find /var/log -type f -mtime 7 -delete sudo journalctl --vacuum-time7d # 清理yum缓存 sudo yum clean …

C++?继承!!!

一、引言 代码的复用对于代码的质量以及程序员的代码设计上都是非常重要的&#xff0c;C中的许多特性都体现了这一点&#xff0c;从函数复用、模板的引入到今天我们将一起学习的&#xff1a;继承 二、什么是继承&#xff1f; 1、继承的概念 继承(inheritance)机制是面向对象程…

Android设置界面层级为最上层实现

Android设置界面层级为最上层实现 文章目录 Android设置界面层级为最上层实现一、前言二、Android设置界面层级为最上层实现1、主要代码2、后遗症 三、其他1、Android设置界面层级为最上层小结2、悬浮框的主要代码悬浮框 注意事项&#xff08;1&#xff09;权限限制&#xff08…

Linux 了解篇

一、GNU 项目与 GPL 许可 &#xff08;一&#xff09;GNU 项目 GNU &#xff1a;GNU 是一个递归缩写&#xff0c;代表 "GNUs Not Unix"。GNU 项目旨在开发一个完全自由的操作系统&#xff0c;该操作系统基于 Unix 的设计理念但不包含 Unix 的代码。GNU 项目提供了大…

word 如何让公式居中,公式编号右对齐

问题&#xff1a; 如何让输入的公式居中&#xff0c;公式编号右对齐&#xff1f; 解决方法&#xff1a; 方法一&#xff1a;使用制表符 1、输入内容&#xff1a;先按一次“Tab”键&#xff08;制表符&#xff09;&#xff0c;然后键入公式&#xff0c;然后再按一次“Tab”键…

华为OD机试真题——最小循环子数组 (2025B卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

2025 B卷 100分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…

OpenCv高阶(十七)——dlib库安装、dlib人脸检测

文章目录 前言一、dlib库简介二、dlib库安装1、本地安装&#xff08;离线&#xff09;2、线上安装 三、dlib人脸检测原理1、HOG 特征提取2、 SVM 分类器训练3、 滑动窗口搜索4、非极大值抑制&#xff08;NMS&#xff09; 四、dlib人脸检测代码1、导入OpenCV计算机视觉库和dlib机…

AD-PCB--AD20软件安装及中英文切换 DAY 2

1.软件安装 1.1 软件包下载 给你一个捷径&#xff1a; 1.2 安装过程&#xff08;安装过的人跳过就好&#xff0c;一般很多都支持懒人安装&#xff09; 双击其中的exe文件 点击下一步 选择中文 接受用户协议 下面这个弹窗有的没有。 建议勾选导入导出 安装目录&#xff0c…