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

LoRA:大模型的低秩自适应微调模型

对于大型模型来说,重新训练所有模型参数的全微调变得不可行。比如GPT-3 175B,模型包含175B个参数吗,无论是微调训练和模型部署,都是不可能的事。所以Microsoft 提出了低秩自适应(Low-Rank Adaptation, LoRA),它冻结了预先训练好的模型权重,并将可训练的秩的分解矩阵注入到Transformer体系结构的每一层,从而大大减少了下游任务的可训练参数数量。

LoRA

对于预训练的权重矩阵W0,可以让其更新受到用低秩分解表示后者的约束:

在训练过程中,W0被冻结,不接受梯度更新,而A和B包含可训练参数。当h=W0x时,修正后的正向传播变为:

对A使用随机高斯初始化,对B使用零初始化,因此ΔW=BA在训练开始时为零(这点需要注意)。

这种方法的一个优点是,当部署到生产环境中时,只需要计算和存储W=W0+BA,并像往常一样执行推理。与其他方法相比,没有额外的延迟,因为不需要附加更多的层。

在Transformer体系结构中,自关注模块中有四个权重矩阵(Wq、Wk、Wv、Wo), MLP模块中有两个权重矩阵。LoRA只对下游任务调整关注权重,并冻结MLP模块。所以对于大型Transformer,使用LoRA可减少高达2/3的VRAM使用量。比如在GPT-3 175B上,使用LoRA可以将训练期间的VRAM消耗从1.2TB减少到350GB。

结果展示

采用HuggingFace Transformers库中的预训练RoBERTa base (125M)和RoBERTa large (355M)还有DeBERTa XXL (1.5B)进行了评估。它们通过不同的微调方法进行微调。

在大多数情况下,使用LoRA可以在GLUE上获得最佳性能。

GPT-3 175B在WikiSQL和mnli匹配的几种自适应方法的可训练参数数的比较

可以看到使用GPT-3, LoRA匹配或超过所有三个数据集的微调基线。

Stable Diffusion

Lora首先被应用在大语言模型上,但是可能被更多人知道的还是他在SD上的应用:

在Stable Diffusion微调的情况下,LoRA可以应用于将图像表示与描述它们的提示联系起来的交叉注意力层。下图的细节并不重要,只需知道黄色块是负责构建图像和文本表示之间关系的块。

所以可以看到这样训练出来的自定义Lora模型会非常的小。

我个人实验:Stable Diffusion进行全面的微调需要最少24G的显存。但是使用Lora,批处理大小为2的单进程训练可以在单个12GB GPU上完成(不使用xformer的10GB,使用xformer的6GB)。

所以Lora在图像生成领域也是非常好的一个微调模型的方式。如果你想了解更多,这里是论文地址:

https://avoid.overfit.cn/post/407a85d672384969848f8bc5cb9bc5fe

相关文章:

LoRA:大模型的低秩自适应微调模型

对于大型模型来说,重新训练所有模型参数的全微调变得不可行。比如GPT-3 175B,模型包含175B个参数吗,无论是微调训练和模型部署,都是不可能的事。所以Microsoft 提出了低秩自适应(Low-Rank Adaptation, LoRA),它冻结了预…...

拼多多买家如何导出“个人中心”订单信息

经常在拼多多买东西,有时候需要把订单的物流信息导出来,方便记录和统计。现介绍如何使用dumuz工具来实现批量下载拼多多订单。 应用功能描述 模拟人工操作拼多多"个人中心-我的订单”订单网页,批量查询获取拼多多自己买的商品的订单数…...

11.计算机基础-计算机网络面试题—基础知识

本文目录如下: 计算机基础-计算机网络 面试题一、基础知识简述 TCP 和 UDP 的区别?http 与 https的区别?Session 和 Cookie 有什么区别?详细描述一下 HTTP 访问一个网站的过程?https 是如何实现加密的?URL是什么&…...

cs109-energy+哈佛大学能源探索项目 Part-1(项目背景)

1、项目概况 1.1 背景和动机 建筑能源性能的问题现在已经成为建筑业主极为关注的问题,因为这直接转化为成本。根据美国能源部的数据,建筑物消耗了美国全部能源的约40%。一些州和市政府采取了建筑节能目标,以减少城市及区域乃至全球的空气污…...

ARM Linux摄像头传感器数据处理全景视野:从板端编码视频到高级应用

ARM Linux摄像头传感器数据处理全景视野:从板端编码视频到高级应用 1. 摄像头传感器与数据采集(Camera Sensor and Data Acquisition)1.1 数字摄像头传感器基础(Basics of Digital Camera Sensors)1.1.1 传感器类型&am…...

Fixed Function Shader

Properties 属性 Shader语法不区分大小写 基础的数据类型 如何定义一个属性 属性要在"Properties{}"代码块中定义 Properties{_Color("Main Color",Color) (1,1,1,1)_Shininess("Shininess",range(0,8)) 4_MainTex("MainTex",2D…...

HTML- 标签学习之- 列表、表格

无序列表/有序列表: 标签组成( 无序ul 有序 ol ) -> li 父子级标签, ul只能包含li标签, li标签可以包含任意内容。 自定义列表 dl :自定义列表的整体,用于包裹dt/dd 标签dt:自定义列表主题dd:自定义列表的针对主题的…...

Canal搭建 idea设置及采集数据到kafka

Canal GitHub:https://github.com/alibaba/canal#readme 实时采集工具canal:利用mysql主从复制的原理,slave定期读取master的binarylog对binarylog进行解析。 canal工作原理 canal模拟MySQL slave的交互协议,伪装自己为MySQL slav…...

CentOS7搭建伪分布式Hadoop(全过程2023)

##具体操作目录## 1.配置静态ip2.关闭防火墙3.修改主机名为 *master* ,并重启虚拟机vi /etc/hostname 4.修改主机名与ip映射5.设置SSH免密登录6.安装配置java环境----------------------正式Hadoop配置1.移动安装包到合适位置2.解压安装包并重命名3.配置环境变量4.修…...

Linux中文件描述符fd和文件指针filp的理解

简单归纳:fd只是一个整数,在open时产生。起到一个索引的作用,进程通过PCB中的文件描述符表找到该fd所指向的文件指针filp。 文件描述符的操作(如: open)返回的是一个文件描述符,内核会在每个进程空间中维护一个文件描述符表, 所有打开的文件…...

CSS color中常用英文色值

常用颜色英文 red green blue magenta yellow chocolate black aquamarine lime fuchsia brass azure brown bronze deeppink aliceblue gray copper coral feldspar orange orchid pink plum quartz purple aliceblue antiquewith blanchedalmond…...

Springboot idea 中 maven配置问题,找不到依赖:Could not find artifact xxxx

现象:当我们从代码仓拉取新项目时,从该项目的开发同事拿到其maven的settings文件,作为项目的maven配置,为了是能找到工程中所依赖的包,能从远程仓下载下来。 然后本地仓的包,也从同事那边拷贝一份过来&…...

编译原理笔记(一)引论

文章目录 1.什么是编译程序2.编译过程和编译程序的结构2.1.编译过程概述2.2.编译程序的结构2.3.编译阶段的组合 3.解释程序和一些软件工具3.1.解释程序3.2.处理源程序的软件工具 4.PL/0语言编译系统 学习总结:这一部分是编译原理的绪论部分内容,对编译程…...

C++ 类和对象下 [补充]

文章目录 友元内部类内部类是外部类的天生友元 匿名对象匿名对象的特性 拷贝对象时的一些编译器优化函数返回值临时空间的存储位置返回值临时空间具有常性 标题相同和不同类型 需要 临时空间 友元 友元函数 重载operator<< 输出自定义类型 比如日期类的这个重载&#xff…...

[CTF/网络安全] 攻防世界 PHP2 解题详析

[CTF/网络安全] 攻防世界 PHP2 解题详析 index.php.phps扩展名姿势 翻译&#xff1a;你能给这个网站进行身份验证吗&#xff1f; index.php index.php是一个常见的文件名&#xff0c;通常用于Web服务器中的网站根目录下。它是默认的主页文件名&#xff0c;在访问一个网站时&am…...

图神经网络:(节点分类)在Cora数据集上动手实现图神经网络

文章说明&#xff1a; 1)参考资料&#xff1a;PYG官方文档。超链。 2)博主水平不高&#xff0c;如有错误还望批评指正。 3)我在百度网盘上传了这篇文章的jupyter notebook。超链。提取码8888。 文章目录 代码实操1&#xff1a;GCN的复杂实现代码实操2&#xff1a;GCN的简单实现…...

RabbitMQ应用问题——消息补偿机制以及代码示例

RabbitMQ应用问题——消息补偿机制以及代码示例 RabbitMQ应用问题 消息可靠性的保障 消息补偿机制 详细说明 这里使用了简单的代码进行演示&#xff0c;订单的消费者没有写&#xff0c;在订单的消费同时&#xff0c;发送一条增加积分消息到积分队列。 详细流程途中都有注明…...

量化特征贡献度函数:feature_importances_函数/LGBMClassifier/XGBClassifier

feature_importances_是scikit-learn机器学习库中许多模型对象的属性&#xff0c;在训练模型之后调用该属性可以输出各个特征在模型中的重要性。 示例代码&#xff1a; from sklearn.ensemble import RandomForestRegressor from sklearn.datasets import make_regression# 生…...

总结JVM重要知识点

一.类加载和创建对象的过程 1.类加载 1.编译 : 将源码文件(.java)编译成JVM可以解释的.class文件 . 语法分析>语义分析>注解处理 , 生成class文件 2.加载 : 装载 : 字节码本来存储在硬盘上 , 需要运行时 , 有类加载系统负责将类的信息加载到内存中(方法区) , 使用的是类…...

奇技淫巧第8期

学无止境。 下面是对去年11月至今年5月的零散知识点总结。 春节期间好好放松了一两个月&#xff0c;来校后又懒散的度过了一两个月&#xff0c;直到论文评审意见下来&#xff0c;才开启冲刺模式狂干了一两个月。总的来说&#xff0c;这半年来摸的时间比较多。好&#xff0c;不废…...

WPF新手村教程(七)—— 终章(MVVM架构初见杀)承

1. 哑铃图是什么&#xff1f; 哑铃图&#xff08;Dumbbell Plot&#xff09;&#xff0c;有时也称为DNA图或杠铃图&#xff0c;是一种用于比较两个相关数据点的可视化图表。 它源于人们对更有效数据比较方式的持续探索。 在传统的时间序列比较中&#xff0c;我们通常使用两条折…...

Vue3前端项目集成指南:调用Qwen3-14B-AWQ模型API实现智能交互

Vue3前端项目集成指南&#xff1a;调用Qwen3-14B-AWQ模型API实现智能交互 1. 前言&#xff1a;为什么要在Vue3中集成大模型API 最近几年&#xff0c;大语言模型在各类应用中的集成变得越来越普遍。作为前端开发者&#xff0c;我们经常需要将这些强大的AI能力整合到自己的项目…...

探秘书匠策AI:毕业论文“通关秘籍”大揭秘

在学术的漫漫征途中&#xff0c;毕业论文宛如一座巍峨的高峰&#xff0c;横亘在众多学子面前。它不仅是对多年学习成果的全面检验&#xff0c;更是开启未来学术或职业大门的关键钥匙。然而&#xff0c;毕业论文的撰写过程充满了挑战&#xff0c;从选题时的迷茫&#xff0c;到资…...

SGLang实战:如何用Python DSL编写带分支的LLM生成任务(附完整代码)

SGLang实战&#xff1a;如何用Python DSL编写带分支的LLM生成任务&#xff08;附完整代码&#xff09; 在构建复杂AI应用时&#xff0c;开发者常面临一个核心矛盾&#xff1a;既希望利用大语言模型&#xff08;LLM&#xff09;的生成能力&#xff0c;又需要精确控制生成流程。传…...

面试全系列之【Java基础篇】之【反射】

1:反射的作用及其应用场景。 在运行时动态获取类的完整信息(包名、类名、父类、接口、字段、方法、构造器),并能动态创建对象、调用方法、修改字段值的机制。 运行时动态获取类信息不知道具体类名,也能拿到结构。 动态创建对象不用 new,通过 newInstance / 构造器创建实…...

BepInEx插件框架:5分钟掌握Unity游戏模组开发与注入技术

BepInEx插件框架&#xff1a;5分钟掌握Unity游戏模组开发与注入技术 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx 如果你热爱Unity游戏并希望为它们添加自定义功能&#xff0c;B…...

Java生产者消费者模式实战解析

Java生产者消费者模式实战解析异步模式传统版改进版阻塞队列异步模式 传统版 异步模式之生产者/消费者&#xff1a; class ShareData {private int number 0;private Lock lock new ReentrantLock();private Condition condition lock.newCondition();public void increm…...

如何在5分钟内开始使用EmulatorJS:新手完整入门教程

如何在5分钟内开始使用EmulatorJS&#xff1a;新手完整入门教程 【免费下载链接】EmulatorJS A web-based frontend for RetroArch 项目地址: https://gitcode.com/GitHub_Trending/em/EmulatorJS EmulatorJS是一款基于Web的RetroArch前端工具&#xff0c;让你能够直接在…...

FREE!ship Plus终极指南:免费开源船舶设计软件完整教程

FREE!ship Plus终极指南&#xff1a;免费开源船舶设计软件完整教程 【免费下载链接】freeship-plus-in-lazarus FreeShip Plus in Lazarus 项目地址: https://gitcode.com/gh_mirrors/fr/freeship-plus-in-lazarus 想要设计专业的船舶模型却苦于高昂的软件费用&#xff…...

C99新特性:变长数组(VLA)

文章目录C99新特性&#xff1a;变长数组&#xff08;VLA&#xff09; &#x1f680;什么是变长数组&#xff1f; &#x1f914;为什么需要变长数组&#xff1f; &#x1f4a1;VLA的基本语法和用法 &#x1f4dd;在函数内部使用VLAVLA作为函数参数多维VLAVLA的工作原理和内存分配…...