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

鸣谢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计算权重 → 新的输出权重

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据库课设-中小企业工资管理系统

一、效果展示 二、后端代码 import string import random from flask import Flask, render_template, request, jsonify, redirect, session import pymysql from flask_cors import CORS import time import schedule from datetime import datetime import threading from …

国内服务器安装 Docker 服务和拉取 dockerhub 镜像

前提: 有一台海外的VPS,目的是安装dockerhub镜像.适用debian系统 1: 安装 docker-ce (国内服务器) sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/…

bfs+枚举,CF666B - World Tour

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 666B - Codeforces 二、解题报告 1、思路分析 数据量允许跑N次bfs预处理所有点的最短路,以及预处理到达每个点距离最远的3个点,以及每个点能够到达的最远的3个点 我们枚举…

第 6 章: Spring 中的 JDBC

JDBC 的全称是 Java Database Connectivity,是一套面向关系型数据库的规范。虽然数据库各有不同,但这些数据库都提供了基于 JDBC 规范实现的 JDBC 驱动。开发者只需要面向 JDBC 接口编程,就能在很大程度上规避数据库差异带来的问题。Java 应用…

康谋分享 | 自动驾驶联合仿真——功能模型接口FMI(一)

功能模型接口FMI(Functional Mock-up Interface)是一个开放且与工具解耦的标准。FMI包含了一个C-API(接口),一个用于描述接口的XML文件以及可交换的功能模型单元FMU(Functional Mock-up Unit)&a…

解读surging 的内存过高的原因

前言 对于.NET开发人员来讲,一个程序占用内存过高,是极其糟糕,是一款不合格的程序软件,.NET开发人员也不会去使用服务器垃圾收集器(ServerGarbageCollection),而是选用工作站垃圾收集器,而是对于一款低内存的程序更能给…

CP AUTOSAR标准中文文档链接索引

AUTOSAR标准的核心组件包括通信、诊断、安全等,这些组件通过模块化结构进行组织。系统被划分为多个模块,每个模块负责特定的功能。模块之间通过接口进行通信,接口定义了模块之间的交互规则。AUTOSAR标准支持模块的配置,可以根据不…

debug调试_以Pycharm为例

文章目录 作用步骤打断点调试调试窗口 作用 主要是检查逻辑错误,而非语法错误。 步骤 打断点 在需要调试的代码行前打断点,执行后会停顿在断点位置(不运行) 调试 右键“debug”,或者直接点击右上角的小虫子 调试…

8.11 矢量图层线要素单一符号使用七(爆炸线)

文章目录 前言爆炸线(Lineburst)QGis设置线符号为爆炸线(Lineburst)二次开发代码实现爆炸线(Lineburst) 总结 前言 本章介绍矢量图层线要素单一符号中爆炸线(Lineburst)的使用说明&…

kotlin之foreach跳出循环

1.创建函数跳出循环。 fun breakTest() {(0..10).forEachIndexed { index, i ->Log.d("test start index$index,i$i")if (index > 7) {return}Log.d("test end index$index,i$i")}}2.通过run语句,将会在if判断语句为true的时候跳出run代…

大模型:分本分割模型

目录 一、文本分割 二、BERT文本分割模型 三、部署模型 3.1 下载模型 3.2 安装依赖 3.3 部署模型 3.4 运行服务 四、测试模型 一、文本分割 文本分割是自然语言处理中的一项基础任务,目标是将连续的文本切分成有意义的片段,这些片段可以是句子、…

SprringCloud Gateway动态添加路由不重启

前言: 在微服务项目中,SpringCloud Gateway扮演着极为重要的角色,主要提供了路由、负载均衡、认证鉴权等功能。本文主要讲解如何实现网关的自定义动态路由配置,无需重启网关模块即可生效。 一、动态路由必要性 在微服务架构中&…

ATFX汇市:美联储利率决议来袭,按兵不动概率较高

ATFX汇市:本周四凌晨2:00,美联储将公布6月份利率决议结果,市场普遍预期其将维持5.5%的基准利率上限不变,预期落地的话,美元指数将受利多提振。考虑到上周加拿大央行和欧央行相继降息25基点,美联储出现跟随性…

前方碰撞缓解系统技术规范(简化版)

前方碰撞缓解系统技术规范(简化版) 1 系统概述2 工作时序3 预警目标4 功能条件5 HMI开关6 显示需求7 相关子功能8 TTC标定参考9 指标需求1 系统概述 前方碰撞缓解系统包含LW潜在危险报警、FCW前方碰撞预警和AEB自动紧急制动三个部分。 LW潜在危险报警:根据本车与前车保持的…

MyBatis进行模糊查询时SQL语句拼接引起的异常问题

项目场景: CRM项目,本文遇到的问题是在实现根据页面表单中输入条件,在数据库中分页模糊查询数据,并在页面分页显示的功能时,出现的“诡异”bug。 开发环境如下: 操作系统:Windows11 Java&#…

DIYGW可视化开发工具:微信小程序与多端应用开发的利器

一、引言 随着移动互联网的飞速发展,微信小程序以其轻便、易用和跨平台的特点受到了广泛关注。然而,微信小程序的开发相较于传统的H5网页开发,在UI搭建和交互设计上存在一定的挑战。为了应对这些挑战,开发者们一直在寻找更加高效…

Hadoop的读写流程

Hadoop分布式文件系统(HDFS)是Apache Hadoop项目的核心组件,它为大数据存储提供了一个可靠、可扩展的存储解决方案。本文将详细介绍HDFS的读写数据流程,包括数据的存储原理、读写过程以及优化策略。 一、HDFS简介 HDFS是一个高度容错的分布式文件系统,它设计用于运行在通…

使用adb通过wifi连接手机

1,手机打开开发者模式,打开无线调试 2,命令行使用adb命令配对: adb pair 192.168.0.102:40731 输入验证码:422859 3,连接设备: adb connect 192.168.0.102:36995 4,查看连接状态:…

【全开源】旅行吧旅游门票预订系统源码(FastAdmin+ThinkPHP+Uniapp)

🌍旅游门票预订系统:畅游世界,一键预订 一款基于FastAdminThinkPHPUniapp开发的旅游门票预订系统,支持景点门票、导游产品便捷预订、美食打卡、景点分享、旅游笔记分享等综合系统,提供前后台无加密源码,支…

嵌入式linux系统中设备树的经典使用方法

第一:设备树简介 大家好,今天主要给大家分享一下,如何使用linux系统里面的设备树,详细分析如下。 可以参考的官方文档有: 官方文档(可以下载到 devicetree-specification-v0.2.pdf): https://www.devicetree.org/specifications/ 内核文档: …