[机器学习]GPT LoRA 大模型微调,生成猫耳娘

往期热门专栏回顾
| 专栏 | 描述 |
|---|---|
| Java项目实战 | 介绍Java组件安装、使用;手写框架等 |
| Aws服务器实战 | Aws Linux服务器上操作nginx、git、JDK、Vue |
| Java微服务实战 | Java 微服务实战,Spring Cloud Netflix套件、Spring Cloud Alibaba套件、Seata、gateway、shadingjdbc等实战操作 |
| 毕设 | 大数据、Java Sprinboot、微服务等 |
| Java基础篇 | Java基础闲聊,已出HashMap、String、StringBuffer等源码分析,JVM分析,持续更新中 |
| Springboot篇 | 从创建Springboot项目,到加载数据库、静态资源、输出RestFul接口、跨越问题解决到统一返回、全局异常处理、Swagger文档 |
| Spring MVC篇 | 从创建Spring MVC项目,到加载数据库、静态资源、输出RestFul接口、跨越问题解决到统一返回 |
| 华为云服务器实战 | 华为云Linux服务器上操作nginx、git、JDK、Vue等,以及使用宝塔运维操作添加Html网页、部署Springboot项目/Vue项目等 |
| Java爬虫 | 通过Java+Selenium+GoogleWebDriver 模拟真人网页操作爬取花瓣网图片、bing搜索图片等 |
| Vue实战 | 讲解Vue3的安装、环境配置,基本语法、循环语句、生命周期、路由设置、组件、axios交互、Element-ui的使用等 |
| Spring | 讲解Spring(Bean)概念、IOC、AOP、集成jdbcTemplate/redis/事务等 |
🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄
🌹简历模板、学习资料、面试题库、技术互助
🌹文末获取联系方式 📝

文章目录
- 往期热门专栏回顾
- 1、前言介绍
- 1.1、文生图效果
- 2、LoRA的工作原理
- 3、LoRA的应用场景
- 4、LoRA的优势
- 5、LoRA的挑战
- 6、LoRA的实现
- 7、未来展望
1、前言介绍
在深度学习和自然语言处理领域,大规模预训练模型(如GPT-3、BERT等)已经展示了强大的能力。然而,训练这些模型需要大量的计算资源和数据,这对于许多组织和个人来说并不现实。LoRA(Low-Rank Adaptation)作为一种轻量级的微调方法,提供了一种高效且经济的解决方案。本文将详细介绍LoRA的工作原理、应用场景、以及其在大模型微调中的优势和挑战。
1.1、文生图效果
提示词:
//quality, (masterpiece:1.3), (detailed), ((,best quality,)),//,cute,1girl,//,brown cat ears,animal ear fluff,(light_brown hair:1.3),(red hair: 1.1),(red inner hair: 1.4), (straight bangs: 1.4),(,long_hair,single braid :1.4),(Ahoge),(detailed eyes,blue_eyes:1.4),medium chest,//, (yellow hairpin,crescent-shaped hairpin:1.4),off_shoulders,large red ribbon,(idol costume:1.4),thigh strap,frilled skirt,gloves,//,blush,smiling,upper_teeth,looking_down,//,hand_up,(holding microphone:1.3),(standing on stage),//,indoors,crowd of audience,Glow stick,scenery,colorful light particles,(colorful lights:1.3),(laser light:1.4),glow_in_the_dark,cowboy_shot,dynamic angle
反向提示词:
NSFW,text,(worst quality:1.331), (low quality:1.331), (normal quality:1.331), large head, extra digits, bad eye, extra fingers, fewer fingers, strange fingers, ((bad hands)), Strange eyes, Many hands, (Many arms), EasyNegativeV2, ng_deepnegative_v1_75t, pregnancy, badhandv4, six fingers, fused fingers, unclear eyes,poorly drawn,cloned face,bad face,
在提示词、反向提示词不变的情况下,我们在导入多个LoRA,并且调整参数,来生成我们想要的图片。
三个LoRA:

调整LoRA值之后的效果:






2、LoRA的工作原理
LoRA通过引入低秩矩阵分解技术来微调大型预训练模型。其核心思想是将预训练模型的权重矩阵分解为两个低秩矩阵的乘积,从而减少需要微调的参数数量。具体而言,LoRA假设原始权重矩阵W可以近似表示为两个低秩矩阵A和B的乘积,即W ≈ AB,其中A和B的秩远小于W的秩。
在微调过程中,LoRA仅优化低秩矩阵A和B,而保持原始模型权重W不变。这种方法不仅降低了计算复杂度,还减少了存储和传输的开销,使得微调过程更加高效。
3、LoRA的应用场景
-
自然语言处理(NLP): LoRA在NLP任务中表现出色,如文本分类、机器翻译、情感分析等。通过微调预训练模型,LoRA可以快速适应不同的语言任务和数据集。
-
计算机视觉: 在图像分类、目标检测和图像生成等任务中,LoRA也展示了强大的适应能力。通过微调预训练的视觉模型,LoRA可以在有限的计算资源下实现高效的图像处理。
-
语音识别: LoRA在语音识别和语音生成任务中同样具有广泛的应用前景。通过微调预训练的语音模型,LoRA可以有效提升语音识别的准确性和生成质量。
4、LoRA的优势
-
高效性: LoRA通过低秩矩阵分解显著减少了需要微调的参数数量,从而降低了计算复杂度和存储开销。这使得微调过程更加高效,尤其适合资源受限的环境。
-
灵活性: LoRA可以应用于各种预训练模型和任务,具有广泛的适应性。无论是NLP、计算机视觉还是语音识别,LoRA都能提供有效的微调方案。
-
经济性: 相对于全量微调(fine-tuning)大模型,LoRA需要的计算资源和时间成本大大降低。这对于小型团队和个人研究者来说尤为重要,使他们能够在有限的资源下实现高效的模型优化。
5、LoRA的挑战
-
低秩近似的局限性: LoRA依赖于低秩矩阵分解来近似表示权重矩阵。然而,在某些情况下,低秩近似可能无法充分捕捉复杂的模型结构和数据特征,导致性能下降。
-
模型选择的复杂性: 在实际应用中,不同任务和数据集对模型的需求各不相同。选择合适的预训练模型和微调策略仍然是一个挑战,需要进行大量的实验和调优。
-
安全性和隐私: 在微调过程中,模型可能会接触到敏感数据。如何在保证数据安全和隐私的前提下进行高效的微调,是LoRA面临的另一个重要挑战。
6、LoRA的实现
为了更好地理解LoRA的实际应用,以下是一个基于PyTorch的LoRA实现示例。
import torch
import torch.nn as nnclass LoRA(nn.Module):def __init__(self, model, rank=4):super(LoRA, self).__init__()self.model = modelself.rank = rankself.low_rank_modules = nn.ModuleList()for name, module in model.named_modules():if isinstance(module, nn.Linear):in_features, out_features = module.in_features, module.out_featuresA = nn.Parameter(torch.randn(out_features, rank))B = nn.Parameter(torch.randn(rank, in_features))self.low_rank_modules.append((name, A, B))def forward(self, x):for name, A, B in self.low_rank_modules:module = dict(self.model.named_modules())[name]W = module.weightlow_rank_weight = A @ Bmodule.weight = nn.Parameter(W + low_rank_weight)return self.model(x)
7、未来展望
随着深度学习和大规模预训练模型的发展,LoRA作为一种高效的微调方法,将在更多领域和应用中发挥重要作用。未来,LoRA可能会进一步优化低秩分解技术,提高近似的精度和效率。此外,LoRA还可以与其他优化技术结合,形成更强大的微调框架。
总之,LoRA为大规模预训练模型的高效微调提供了新的思路和方法。通过降低计算复杂度和存储开销,LoRA使得更多人能够利用预训练模型的强大能力,推动人工智能技术的普及和应用。期待未来LoRA在更多领域中的创新和突破,为深度学习的发展注入新的活力。
资料获取,更多粉丝福利,关注下方公众号获取

相关文章:
[机器学习]GPT LoRA 大模型微调,生成猫耳娘
往期热门专栏回顾 专栏描述Java项目实战介绍Java组件安装、使用;手写框架等Aws服务器实战Aws Linux服务器上操作nginx、git、JDK、VueJava微服务实战Java 微服务实战,Spring Cloud Netflix套件、Spring Cloud Alibaba套件、Seata、gateway、shadingjdbc…...
代码随想录算法训练营Day24|216.组合总和III、17.电话号码的字母组合
组合总和III 216. 组合总和 III - 力扣(LeetCode) 思路和昨日的组合题类似,但注意对回溯算法中,收获时的条件需要写对,path的长度要为k的同时,path中元素总和要为n。 class Solution { public:vector<…...
【Python系列】Python 中方法定义与方法调用详解
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
Java 基础面试300题 (201-230)
Java 基础面试300题 (201-230) 201.下面代码片段的输出是什么? Predicate<Integer> numberChecker (num)–> num > 20; int input 10; System.out.println(input” greater than 20–”numberChecker.test(input)); //Line 1…...
Go-知识并发控制Context
Go-知识并发控制Context 1. 介绍2. 实现原理2.1 接口定义2.2 Deadline()2.3 Done()2.4 Err()2.5 Value() 3. 空 context4. cancelCtx4.1 Done()4.2 Err()4.3 cancel()4.4 WithCancel4.5 例子4.6 总结 5. timerCtx5.1 Deadline5.2 cancel5.3 WithDeadline5.4 WithTimeout5.5 例子…...
Vue + Nodejs + socket.io 实现聊天
Vue 代码 // 安装 socket.io-clientnpm i socket.io-clientimport io from socket.io-client;mounted () {// * location.origin 表示你的 socket 服务地址// * /XXXX/socket.io 表示 你的 socket 在服务器配置的 访问地址let socket io(location.origin, {path: "/XX…...
cocos creator 3.x实现手机虚拟操作杆
简介 在许多移动游戏中,虚拟操纵杆是一个重要的用户界面元素,用于控制角色或物体的移动。本文将介绍如何在Unity中实现虚拟操纵杆,提供了一段用于移动控制的代码。我们将讨论不同类型的虚拟操纵杆,如固定和跟随,以及如…...
【数据分享】中国电力年鉴(2004-2022)
大家好!今天我要向大家介绍一份重要的中国电力统计数据资源——《中国电力年鉴》。这份年鉴涵盖了从2004年到2022年中国电力统计全面数据,并提供限时免费下载。(无需分享朋友圈即可获取) 数据介绍 自1993年首次出版以来…...
两个数组的交集Ⅱ-力扣
想到的解法是使用两个map来进行记录,mp1用来统计num1中每个元素出现的次数。当nums2的元素能够在mp1中查找到时,将这个元素添加到mp2,按照这个规则统计得到nums2和nums1重复的元素,mp2中的value记录了nums2中这个元素出现的次数最…...
【TCP协议中104解析】wireshark抓取流量包工具,群殴协议解析基础
Tcp ,104 ,wireshark工具进行解析 IEC104 是用于监控和诊断工业控制网络的一种标准,而 Wireshark则是一款常用的网络协议分析工具,可以用干解析TEC104 报文。本文将介绍如何使用 Wireshark解析 IEC104报文,以及解析过 程中的注意事项。 一、安…...
[个人笔记] 记录docker-compose使用和Harbor的部署过程
容器技术 第三章 记录docker-compose使用和Harbor的部署过程 容器技术记录docker-compose使用和Harbor的部署过程Harborhttps方式部署:测试环境部署使用自签名SSL证书https方式部署:正式环境部署使用企业颁发的SSL证书给Docker守护进程添加Harbor的SSL证…...
详细介绍运算符重载函数,清晰明了
祝各位六一快乐~ 前言 1.为什么要进行运算符重载? C中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C中重新定义这些运算符ÿ…...
国内外知名的低代码开发平台下载地址
以下是国内外几款低代码开发平台的列表,包含了下载地址、适应操作系统、是否可以独立部署、优点、缺点以及是否包含流程引擎的信息。 平台名称 下载地址 适应操作系统 是否可以独立部署 优点 缺点 是否包含流程引擎 国内平台 阿里云宜搭 阿里云官网 跨平台…...
【Pr学习】01新建项目起步
【Pr学习】01新建项目起步 1、新建项目2.序列设置2.1新建序列2.2序列参数讲解2.3自定义设置 3.PR窗口认识3.1 项目窗口3.2 源窗口2.4 保存面板 4.剪辑导入4.1 素材导入4.2 视图切换4.3 时间轴4.4轨道工具4.5 节目窗口素材导入 5.基础操作5.1 取消视频音频链接5.2 单独渲染&…...
【Redis延迟队列】redis中的阻塞队列和延迟队列
阻塞队列(RBlockingQueue) 作用和特点: 实时性:阻塞队列用于实时处理消息。生产者将消息放入队列,消费者可以立即从队列中取出并处理消息。阻塞特性:如果队列为空,消费者在尝试获取消息时会被…...
el-tree常用操作
一、定义 <el-treeclass"myTreeClass":data"dirTreeData":props"dirTreeProps":filter-node-method"filterDirTree":expand-on-click-node"false"node-key"id"node-click"dirTreeNodeClick":allow-…...
SQL 语言:存储过程和触发器
文章目录 基本概述创建触发器更改和删除触发器总结 基本概述 存储过程,类似于高阶语言的函数或者方法,包含SQL语句序列,是可复用的语句,保存在数据库中,在服务器中执行。特点是复用,提高了效率,…...
Ubuntu Linux 24.04 使用certbot生成ssl证书
设置域名 1. 将需要生成SSL证书的域名解析到IP地址 idealand.xyz <> 64.176.82.190 检查防火墙的设置 1. 首先查看防火墙的状态: # ufw status 2. 如果防火墙开启了,要开放80和443端口用于certbot验证 # ufw allow 80 # ufw allow 443 生…...
Vivado 比特流编译时间获取以及FPGA电压温度获取(实用)
Vivado 比特流编译时间获取以及FPGA电压温度获取 语言 :Verilg HDL 、VHDL EDA工具:ISE、Vivado Vivado 比特流编译时间获取以及FPGA电压温度获取一、引言二、 获取FPGA 当前程序的编译时间verilog中直接调用下面源语2. FPGA电压温度获取(1&a…...
Window下VS2019编译WebRTC通关版
这段时间需要实现这样一个功能,使用WebRTC实现语音通话功能,第一步要做的事情就是编译WebRTC源码,也是很多码友会遇到的问题。 经过我很多天的踩坑终于踩出来一条通往胜利的大路,下面就为大家详细介绍,编译步骤以及踩…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
