Diffusers代码学习-LoRA训练

LoRA(Low-Rank Adaptation of Large Language Models)是一种流行的轻量级训练技术,它显著减少了可训练参数的数量。它的工作原理是在模型中插入少量的新权重,并且只训练这些权重。这使得使用LoRA进行训练的速度更快、内存高效,并产生更小的模型权重(几百MB),更容易存储和共享。LoRA还可以与DreamBooth等其他训练技术相结合,以加快训练速度。

  1. 下载源代码及安装。

在运行脚本之前,请确保从以下源安装库:

git clone https://github.com/huggingface/diffusers

cd diffusers

pip install .

导航到包含train_dreambooth.py脚本的示例文件夹,并为正在使用的脚本安装所需的依赖项:

cd examples/dreambooth

pip install -r requirements.txt

注意需要修改train_dreambooth.py,将accelerator_project_config改为project_config。否则会报错returned non-zero exit status 1.

2. 安装及注册wandb

pip install wandb

登录Weights & Biases: The AI Developer Platform (wandb.ai)

图片

3. 准备训练数据集

同时下载好训练所用的数据集。

import os

os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'

from huggingface_hub import snapshot_download

local_dir = "./dog"

snapshot_download(

    "diffusers/dog-example",

    local_dir=local_dir,

    repo_type="dataset",

    ignore_patterns=".gitattributes",

)

注意如果下载的文件中除了图片以外还有其他目录比如.huggingface目录,需要删掉。否则会报错PermissionError: [Errno 13] Permission denied

4. 初始化accelerate

然后需要用到accelerate库,可帮助在多个GPU/TPU上或以混合精度进行训练。它将根据硬件和环境自动配置训练设置。

这里不选择任何配置,使用设置默认值运行accelerate库

accelerate config default

5. 运行训练脚本

accelerate launch train_dreambooth_lora.py 

--pretrained_model_name_or_path="runwayml/stable-diffusion-v1-5" 

--instance_data_dir="dog" 

--output_dir="model_dog" 

--instance_prompt="a photo of sks dog" 

--resolution=512 

--train_batch_size=1 

--gradient_accumulation_steps=1 

--checkpointing_steps=100 

--learning_rate=1e-4 

--report_to="wandb" 

--lr_scheduler="constant" 

--lr_warmup_steps=0 

--max_train_steps=500 

--validation_prompt="A photo of sks dog in a bucket" 

--validation_epochs=50 

--seed="0" 

6. 查看生成结果

图片

7. 登录wandb查看训练过程

图片

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

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

相关文章

视频汇聚共享平台LntonCVS视频智能分析守护厨房食品安全应用方案

近年来,食品安全问题在我国频繁发生,对整个社会造成了严重的负面影响。尤其是校园食品安全关系到学生的健康、家庭的未来以及社会的稳定。学校持续加强食堂科学管理,并督促食堂经营管理方履行好食品安全主体责任,以提升食品安全水…

【Python】 Python中使用小数步长进行循环遍历

基本原理 在Python中,range() 函数是一个非常常用的工具,它能够生成一个整数序列。默认情况下,range() 接受三个参数:起始值、结束值和步长,其中步长默认为1。然而,range() 并不支持直接使用小数作为步长&…

Binary Ninja 4.0.5336 (macOS, Linux, Windows) - 逆向平台

Binary Ninja 4.0.5336 (macOS, Linux, Windows) - 逆向平台 请访问原文链接:https://sysin.org/blog/binary-ninja/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org Binary Ninja A New Type of Reversing Platfo…

太极图形课——渲染——光线追踪实战第一部分呢

根据概念部分我们逐步通过太极实现光线追踪 总共可以分为5步 第一步:如何发射出一道光? 首先明确何为一道光,光从我们眼睛(摄像机)射出,那么在三维虚拟世界里,我们可以认为这道光就是一条射线…

github将默认分支main改为master

github将默认分支main改为master 1.进入github,点击setting 2.在setting中,选择Respositories,更新默认分支为master 3.选择要更新的项目,在项目中选择setting->general->切换默认分支

用开源模型MusicGen制作六一儿童节专属音乐

使用的是开源模型MusicGen,它可以根据文字描述或者已有旋律生成高质量的音乐(32kHz),其原理是通过生成Encodec token然后再解码为音频,模型利用EnCodec神经音频编解码器来从原始波形中学习离散音频token。EnCodec将音频信号映射到一个或多个并…

外界访问docker服务失败

各位i大佬请问一下:我容器起了,但是外网访问不了目标机器的9090端口。 我检查了:1.本机的防火墙已关闭, 2.目标机器的9090端口显示正在被docker监听。 3.外网可以访问目标机器。 4.docker日志,未显示服务报错。 5…

JavaSE——【逻辑控制】(知识)

目录 前言 一、顺序结构 二、分支结构 三、循环结构 总结 前言 公元 3050 年,地球的科技已经发展到令人难以想象的地步。这天,艾米莉在自己的房间里启动了最新的虚拟旅行装置,下一秒,她发现小奥奇的博客更新了。立即放弃了虚…

Numba 的 CUDA 示例(3/4):流和事件

本教程为 Numba CUDA 示例 第 3 部分。 按照本系列的第 3 部分,了解 Python CUDA 编程中的流和事件 介绍 在本系列的前两部分(第 1 部分,第 2 部分)中,我们学习了如何使用 GPU 编程执行简单的任务,例如高度…

Windows CMD对MySQL进行基本操作的常用命令

目录 前言1. 数据库操作2. 表操作3. 记录操作4. 备份与恢复数据库 前言 对于基本的命令行以及优化推荐阅读: 数据库中增删改常用语法语句(全)Mysql优化高级篇(全)命令行登录Mysql的详细讲解 启动MySQL服务&#xff1…

Python版《消消乐》,附源码

曾经风靡一时的消消乐,至今坐在地铁上都可以看到很多人依然在玩,想当年我也是大军中的一员,那家伙,吃饭都在玩,进入到高级的那种胜利感还是很爽的,连续消,无限消,哈哈,现…

代码随想录——二叉搜索树的最近公共祖先(Leetcode235)

题目链接 普通递归法 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val x; }* }*/class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode…

ChatGPT成知名度最高生成式AI产品,使用频率却不高

5月29日,牛津大学、路透社新闻研究所联合发布了一份生成式AI(AIGC)调查报告。 在今年3月28日—4月30日对美国、英国、法国、日本、丹麦和阿根廷的大约12,217人进行了调查,深度调研他们对生成式AI产品的应用情况。 结果显示&…

linux部署运维3——centos7下导入导出mysql数据库的sql文件以及查询数据量最大的表信息

在实际项目开发或者项目运维过程中,数据库的导入导出操作比较频繁,如果可以借助第三方工具那当然算喜事一桩;但是如果不允许外部访问,那么就只能使用数据库自带的命令,也是相当方便的。 一.导入sql文件 1.在linux命令…

基于单片机的船舱温度临界报警系统

摘 要 : 针对传统的船舱温度临界报警系统,由于温度监控不到位导致报警不及时的问题,提出一个基于单片机的船舱温度临界报警系统设计。该设计将单片机作为核心控制硬件,控制系统整体电路。同时设计数据采集模块,利用温度测量仪测试…

12 - 常用类

那就别跟他们比,先跟自己比,争取今天比昨天强一些,明天比今天强一些。 1.包装类 针对八种基本数据类型封装的相应的引用类型。 有了类的特点,就可以调用类中的方法。(为什么要封装) 基本数据类型包装类b…

[笔记] 记录docker-compose使用和Harbor的部署过程

容器技术 第三章 记录docker-compose使用和Harbor的部署过程 容器技术记录docker-compose使用和Harbor的部署过程Harborhttps方式部署:测试环境部署使用自签名SSL证书https方式部署:正式环境部署使用企业颁发的SSL证书给Docker守护进程添加Harbor的SSL证…

AI视频教程下载:给初学者的ChatGPT提示词技巧

你是否厌倦了花费数小时在可以通过强大的语言模型自动化的琐碎任务上?你是否准备好利用 ChatGPT——世界上最先进的语言模型——并将你的生产力提升到下一个水平? ChatGPT 是语言处理领域的游戏规则改变者,它能够理解并响应自然语言&#xf…

“Apache Kylin 实战指南:从安装到高级优化的全面教程

Apache Kylin是一个开源的分布式分析引擎,它提供了在Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力,支持超大规模数据的亚秒级查询。以下是Kylin的入门教程,帮助您快速上手并使用这个强大的工具。 1. 安装Kylin Apache Kylin的安装是一个关键步骤,它要求您具备一…

C++ | Leetcode C++题解之第132题分割回文串II

题目&#xff1a; 题解&#xff1a; class Solution { public:int minCut(string s) {int n s.size();vector<vector<int>> g(n, vector<int>(n, true));for (int i n - 1; i > 0; --i) {for (int j i 1; j < n; j) {g[i][j] (s[i] s[j]) &…