【StableDiffusion】Lora 底层原理,低秩适配,Lora 如何与 checkpoint 联合发挥作用

news2024/11/25 2:53:49

鸣谢UP主:是花子呀
本篇博客参考视频:https://www.bilibili.com/video/BV17i421X7q7/?spm_id_from=333.880.my_history.page.click&vd_source=38d6ea3466db371e6c07c24eed03219b

Lora 是个啥?Lora 的 缩写

Lora:Low Rank Adaption
低秩适配

什么是“秩”?

你要了解 Lora,也就是“低秩适配”,你首先得明白“秩”是个什么东西罢?

“秩”是矩阵里面的一个知识点,打个比方来解释:

情况一:

下面这个例子,我们去求 苹果 和 桃子 各是多少钱 → 3x + 4y = 18、2x + 3y = 13 → x=2、y=3

我们能得出 x 和 y 的值,这是因为 这两个等式 线性独立

在这里插入图片描述

情况二:

但是,如果是下面这种情况,我们就无法求出 x、y:

3x + 4y = 18、6x + 8y = 36 → x=?、y=?

因为它们其实可以化简为同一个式子

在这里插入图片描述

总结:

所以,矩阵的 秩 的数量,即是它的 线性独立的行 的多少!

也就是说,一个矩阵的 秩 越大,它的 有效信息含量 就越大

在这里插入图片描述

原理

原理就是,将一个 大矩阵 变成一个 小矩阵,训练起来就轻松了

在这里插入图片描述

怎么把一个大矩阵变成小矩阵呢?

在这里插入图片描述

大小矩阵相互转化的例子(通俗易懂)

小明要开车,去 A、B、C 这 3 个城市,

矩阵(s):[ 200,400,1000 ]

在这里插入图片描述

他有 3 辆车,分别是 X、Y、Z,速度分别为:100、120、200 km/h

因为 t = s * 1/v

又因为 1/v = 1/100、1/120、1/200

矩阵(1/v):[ 1/100,1/120,1/200 ]

在这里插入图片描述

所以,

将 矩阵(s)和 矩阵(1/v)相乘:

在这里插入图片描述

在这里插入图片描述

所以你可以看到,我们将 2个 小矩阵 相乘,得到了 一个 大矩阵:

在这里插入图片描述

反推,1个 大矩阵 也可以 分解成 2个 小矩阵

在这里插入图片描述

那么,操作来了!

在大模型中,我们如果将 1个 1000 * 1000 =1000000 参数的 大矩阵 分解为 2个 1 * 1000 = 1000 ,总计 2000 参数的小矩阵的相乘。

那么,本来我们在调整大矩阵时,我们本来要调整 1000x1000 个参数,而现在,我们只需要调整 2000 个就能达到效果!

少调整了 998000 个参数!

在这里插入图片描述

Lora 是如何与 checkpoint 结合的?

1.步骤一

在训练的初始阶段,Lora 就额外开辟了一条旁路进行 升维 → 修改高维数据 → 降维 的操作。

在这里插入图片描述

2.步骤二

这张图其实和上面那张图是等效的,只不过,这张图隐藏了 升维 和 降维 的过程

升维是通过将 1个大矩阵 转为 2个小矩阵 相乘

然后修改参数

然后将 2个 被修改了参数的小矩阵 重新相乘 回到 1个 大矩阵

之后,我们将 Pretrained Weight 和 Update Weight(Lora)的矩阵相加!

注意!是相加!所以这根本就不会耗费什么资源,我们只是用加法来更新参数而已

在这里插入图片描述

3.步骤三

Pretrained Weight + Update Weight(Lora)== Adapted Weight

原始权重 + Lora计算权重 → 新的输出权重

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1817272.html

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

相关文章

美式动漫效果PS图层样式

对于追求独特艺术风格和创意的摄影师和设计师来说,一款能够轻松将照片转化为卡通效果的Photoshop模板无疑是一个强大的工具。这款由专业团队精心打造的模板,特别注重于美式动漫风格的呈现,让您的照片瞬间拥有生动且充满魅力的动漫色彩。 模板…

Adobe Photoshop cc快速抠图与精致抠图方法

一、背景 Photoshop cc绝对是最好用的抠图and修图软件,但是即使最简单的抠图,每次用时都忘记怎么做,然后再去B站搜,非常费时,下面记录一下抠图过程,方便查阅。 一、Adobe Photoshop快速抠图 选择——主体…

遥控玩具车电机驱动应用中的双H桥驱动芯片

遥控玩具车的基本工作原理是通过无线电遥控器发送信号,这些信号被玩具车内的接收器接收并解码,从而控制玩具车的运行。根据车身外型的不同,可以分为:普通的私家房车、越野车、货柜车、翻斗车等等。遥控器的操作,如前进…

实验12 路由重分布

实验12 路由重分布 一、 原理描述二、 实验目的三、 实验内容四、 实验配置五、 实验步骤 一、 原理描述 在大型网络的组建过程中,隶属不同机构的网络部分往往会根据自身的实际情况来选用路由协议。例如,有些网络规模很小,为了管理简单&…

你好,Jetpack Compose

文章目录 为什么选 Jetpack Compose先决条件新建项目新建虚拟设备运行项目 为什么选 Jetpack Compose Jetpack Compose 是 Android 开发最新的、现代化的 UI 框架开发者几乎只需要使用 Kotlin 一门语言即可完成 App 开发(Java 是基础,有些源码是 Java 写…

SARscape5.6.2干涉叠加处理效率提升

SARscape5.6.2于2022年5月正式发布,包含若干更新和优化。干涉叠加处理模块在处理速度方面持续提升,表现在:PS干涉工作流处理、第一次反演和第二次反演优化,速度提升;SBAS处理干涉图生成和干涉图优化速度提升&#xff0…

《Windows API每日一练》3.3 更好效果的滚动条

本节讲述滚动条的复杂使用方法,以便达到更好的效果。Windows操作系统提供了两套机制,一套机制是使用默认的对象属性进行简单的操作,并提供简单便捷的API接口函数。另一套机制是用户可以自定义对象属性,实现自己想要的效果。本节我…

nodejs——原型链污染

一、引用类型皆为对象 原型和原型链都是来源于对象而服务于对象的概念,所以我们要先明确一点: JavaScript中一切引用类型都是对象,对象就是属性的集合。 Array类型、Function类型、Object类型、Date类型、RegExp类型等都是引用类型。 也就…

解决:selenium运行时driver初始化失败 DevToolsActivePort file doesn‘t exist的问题

解决:selenium运行时driver初始化失败 DevToolsActivePort file doesn‘t exist的问题 DevToolsActivePort file doesnt exist报错信息:![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b3f8acc1c47d45e3912575896e421567.png)现象&#xff1…

细说MCU修改回调函数调用模式的方法

目录 1、硬件及工程 2、实现方法 (1)修改while(1)中的代码: (2)修改2 (3)修改3 (4)修改4 (5)修改5 3、下载并运行 在本文作者的文章中&a…

启动mysql 3.5时出现 MySql 服务正在启动 . MySql 服务无法启动。

有可能是端口冲突 netstat -ano | findstr :3306运行这段代码出现类似: 可以看到端口 3306 已经被进程 ID 为 6284 的进程占用。为了启动新的 MySQL 服务,我们需要停止这个进程或更改新服务的端口: 1、终止进程 taskkill /PID 6284 /F2、确…

ESP32 IDF ADF 加入音频

需要把mp3制作成音频bin 用ADF自带工具 果用户需要生成自己的 audio-esp.bin,则需要执行 mk_audio_bin.py 脚本(位于 $ADF_PATH/tools/audio_tone/mk_audio_tone.py),并且指定相关文件的路径。 源 MP3 文件在 tone_mp3_folder …

图像到3D模型的革命性转换

在数字艺术、虚拟现实和增强现实等领域,从二维图像生成三维模型一直是一个挑战。然而,随着技术的不断进步,我们迎来了一种全新的解决方案,它能够从单张正交RGB图像中快速、高效地生成具有极高保真纹理和精细几何细节的3D网格模型。 1、定位与意义: 该解决方案是一种前沿…

django学习入门系列之第二点《浏览器能识别的标签2》

文章目录 超链接图片小结往期回顾 超链接 当前界面跳转 <!-- href"网站" 默认是本界面跳转到其他网站--> <!-- a标签&#xff0c;一半用于超链接跳转 --> <a href"网站"> </a>跳转到其他的网站 <a href "需要跳转的网…

Vitis HLS 学习笔记--移除内存分配malloc

目录 1. 简介 2. 示例解析 2.1 源码解释 2.2 malloc 分析 2.3 替代方案分析 3. 总结 1. 简介 Vitis HLS 也不支持动态创建或删除 C/C 对象&#xff08;用于综合&#xff09;。 本文探究如何在C/C代码中避免使用显式的malloc函数来分配内存。在硬件设计和FPGA开发中&…

Git/TortoiseGit ssh client 配置

1. Git ssh client 配置 Git 默认的 ssh client 是 <Git 安装目录>/usr/bin/ssh.exe 修改方法为打开 Git Bash 执行&#xff1a; git config --global core.sshCommand "/C/Program Files/TortoiseGit/bin/TortoiseGitPlink.exe" 注意&#xff1a;如果路径…

opencv_特征检测和描述

理解特征 寻找独特的特定模式或特定特征&#xff0c;可以轻松跟踪和比较。 拼图&#xff1a;在图像中搜索这些特征&#xff0c;找到它们&#xff0c;在其他图像中查找相同的特征并对齐它们。而已。 基本上&#xff0c;角被认为是图像中的好特征。 在本单元中&#xff0c;我…

flutter 环境搭建(windows)(先装 jdk 建议1.8起步)

1&#xff1a;先从 官网 下载一个合适版本的SDK 2&#xff1a;下载完成之后 解压到一个合适的盘符下面&#xff08;本文在 D 盘 3.10.0版本&#xff09; 3&#xff1b;双击 flutter_console.bat文件可以看到一些基本信息 4&#xff1a;配置环境 1.添加用户变量 FLUTTER_STORAGE…

Hvv--知攻善防应急响应靶机--Linux1

HW–应急响应靶机–Linux1 所有靶机均来自 知攻善防实验室 靶机整理&#xff1a; 夸克网盘&#xff1a;https://pan.quark.cn/s/4b6dffd0c51a#/list/share百度云盘&#xff1a;https://pan.baidu.com/s/1NnrS5asrS1Pw6LUbexewuA?pwdtxmy 官方WP&#xff1a;https://mp.weixin.…

谷歌利用人工智能来推动搜索,显示出其组织信息的方式存在问题

谷歌利用人工智能来推动搜索&#xff0c;显示出其组织信息的方式存在问题 从相关文件到新闻报道、商业、音乐和社会互动&#xff0c;世界上的大部分信息现在都在网上。谷歌成立于1998年&#xff0c;其使命是“组织世界上的信息&#xff0c;使其普遍可用和有用”&#xff0c;它…