Dreambooth Stable Diffusion始化训练环境(AutoDL)

以AutoDL为例

        以下代码源自:赛博华佗——秋叶:

        Akegarasu

环境选择

  1. Miniconda: Miniconda是一个轻量级的Conda环境管理系统。它包含了conda、Python和一些常用的包,以及能够管理安装其他包的能力。Miniconda是Anaconda的一个简化版,Anaconda是一个流行的Python科学计算发行版。

  2. conda3: 这指的是使用Conda环境管理系统,并且特指Python 3的版本。Conda是一个开源的包管理和环境管理系统,常用于科学计算领域,可以用来安装、运行和升级复杂的科学计算环境。

  3. 3.8(ubuntu20.04): 这里指的是使用Python 3.8版本,在Ubuntu 20.04操作系统上。Ubuntu 20.04是一个流行的Linux发行版,Python 3.8是这个版本的Python的一个较新的稳定版本。

  4. 11.3: 这个数字指的是NVIDIA CUDA的版本号,CUDA是NVIDIA开发的用于通用并行计算的编程架构,广泛用于深度学习和高性能计算任务。11.3是CUDA的一个具体版本号。

初始化脚本环境

        clone其项目后,首先利用 conda 创建 python 运行环境后再运行 install.sh

git clone https://github.com/Akegarasu/dreambooth-autodl.git
cd dreambooth-audodl
conda create -n diffusers python=3.10
conda init bash && source /root/.bashrc
conda activate diffusers
conda install ipykernel
ipython kernel install --user --name=diffusers
bash install.sh

        将项目文件夹移动到 /autodl-tmp 后打开 dreambooth-aki.ipynb 运行训练

import sys
import os# 本镜像专属
os.environ["PATH"] = f'/root/miniconda3/envs/diffusers/bin:{os.environ["PATH"]}'
os.environ["HF_HOME"] = ".cache"
DB_SCRIPT_WORK_PATH = os.getcwd() # "/root/autodl-tmp/dreambooth-aki"!python --version
%cd $DB_SCRIPT_WORK_PATHTRAINER = "train_dreambooth.py"
CONVERTER = "convert_v3.py"
BACK_CONVERTER = "back_convert.py"SRC_PATH = "./model-sd"
MODEL_NAME = "./model-hf"# 模型保存路径
OUTPUT_DIR = "./output"
!mkdir -p $OUTPUT_DIR

        这段代码是设置一个Jupyter笔记本的全局变量,主要用于准备环境以便于训练Stable Diffusion模型。代码执行的主要功能如下:

  1. 导入所需的Python库(sysos)。

  2. 设置环境变量:

    • "PATH":添加一个特定的路径到系统的PATH环境变量中,这个路径是针对一个特定的Python环境设置的,以确保可以访问所需的执行文件。
    • "HF_HOME":设置Hugging Face库的缓存目录。
  3. 获取当前工作目录的路径,并将其存储在变量DB_SCRIPT_WORK_PATH中。

  4. 执行系统命令来获取Python的版本信息,并切换到工作目录。

  5. 定义一些脚本和模型相关的变量:

    • TRAINER:用于训练模型的Python脚本文件名。
    • CONVERTER:用于转换模型格式的Python脚本文件名。
    • BACK_CONVERTER:用于将训练好的模型转换回原始格式的Python脚本文件名。
    • SRC_PATH:原始模型文件的路径。
    • MODEL_NAME:转换后的模型文件的保存路径。
  6. 定义模型输出目录OUTPUT_DIR,并创建该目录(如果它不存在的话)。

        这些步骤为接下来的模型训练和转换工作提供了必要的准备。它设置了环境变量、定义了关键文件路径和脚本名称,并确保了输出目录的存在。

    环境变量PATH

        环境变量PATH是操作系统用来查找可执行文件的目录列表。当你运行一个命令时,系统会在PATH中列出的目录里搜索该命令对应的可执行文件。

f'/root/miniconda3/envs/diffusers/bin:{os.environ["PATH"]}'

        这其中的冒号,其实是一个分隔符。。。。。。

        在PATH环境变量中,路径是按照从左到右的顺序进行搜索的。因此,冒号前面的路径(也就是在变量值的最开始的路径)会被优先搜索。如果在这些路径中找不到所需的可执行文件,系统会继续在冒号后面列出的路径中搜索,直到找到所需的可执行文件或者搜索完所有列出的路径。

        在这个特定的例子中,/root/miniconda3/envs/diffusers/bin被添加到了PATH的最前面,所以系统会首先在这个目录中寻找可执行文件。这种方法常用于确保使用特定环境或版本的程序,特别是在有多个版本的程序安装在系统上时。

os.environ["HF_HOME"] = ".cache"

  • os.environ:这是Python中的一个字典,它包含了当前shell环境的所有环境变量。通过修改这个字典,可以改变环境变量的值。

  • "HF_HOME":这是环境变量的名称。HF_HOME是由Hugging Face库使用的特定环境变量,通常用于指定Hugging Face相关文件(如模型缓存、配置文件等)的存储位置。

  • "= .cache":这将HF_HOME的值设置为.cache。这个值是一个相对路径,表示当前目录下的名为.cache的文件夹。

        将HF_HOME设置为.cache的效果是:当使用Hugging Face库(例如,加载模型、下载数据集等)时,它会将所有缓存的数据(如下载的预训练模型)保存到当前工作目录下的.cache文件夹中。这对于管理模型缓存非常有用,特别是在想要控制缓存位置或在多个项目之间共享缓存时。通过这种方式,你可以避免在系统的默认位置(通常是用户的主目录)中堆积过多的缓存文件。

!python --version

       这行代码在Jupyter笔记本中执行一个shell命令,用于检查当前环境中Python的版本。--version参数让Python打印出其版本信息。

DB_SCRIPT_WORK_PATH = os.getcwd() 
# "/root/autodl-tmp/dreambooth-aki"
%cd $DB_SCRIPT_WORK_PATH

   %cd是Jupyter笔记本的魔术命令,用于改变当前工作目录。

OUTPUT_DIR = "./output"
!mkdir -p $OUTPUT_DIR
  • 在Jupyter笔记本中执行一个shell命令,用于创建目录。
  • mkdir是一个常用的Unix/Linux命令,用于创建新的目录。
  • -p参数告诉mkdir命令,如果目录不存在,则创建它;如果目录已经存在,不要报错(不要叫唤)。此外,-p参数还允许创建必要的父目录。

DreamBooth详解

DreamBooth | AiDraw

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

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

相关文章

聊聊PowerJob的Alarmable

序 本文主要研究一下PowerJob的Alarmable Alarmable tech/powerjob/server/extension/Alarmable.java public interface Alarmable {void onFailed(Alarm alarm, List<UserInfoDO> targetUserList); }Alarmable接口定义了onFailed方法&#xff0c;其入参为alarm及tar…

【矩阵快速幂】封装类及测试用例及样例

作者推荐 视频算法专题 通俗的说&#xff0c;就是矩阵的乘方。 封装类 核心代码 class CMat { public:// 矩阵乘法static vector<vector<long long>> multiply(const vector<vector<long long>>& a, const vector<vector<long long>…

使用Python管理MySQL数据库,有录播直播私教课视频教程

查看所有数据库 from mysql.db_object import Databasedb Database(host"localhost",port3306,database"",username"root",password"zhangdapeng520" ) print(db.get_all_database())删除数据库 from mysql.db_object import Datab…

Python 面向对象之元类

Python 面向对象之元类 【一】一切皆对象 【1】元类 元类&#xff08;metaclass&#xff09;是Python中用于创建类的类。在Python中&#xff0c;类是对象&#xff0c;而元类就是类的类它们控制类的创建过程&#xff0c;允许你定制类的行为Python中内置的默认元类是type我们用…

Android JNI与Java类的转换调用

1. 前言 一般在Android中&#xff0c;对于JNI的调用&#xff0c;基本的数据类型就能满足要求了&#xff0c;具体可以看我的这一篇文章 : Android JNI/NDK 入门从一到二&#xff0c;但是最近在项目中遇到了基本类型满足不了需要的情况&#xff0c;需要在JNI中创建并操作Java类&…

Rust-语句和表达式

if-else Rust中if-else表达式的作用是实现条件分支。if-else表达式的构成方式为&#xff1a;以if关键字开头&#xff0c;后面跟上条件表达式&#xff0c;后续是结果语句块&#xff0c;最后是可选的else块。条件表达式的类型必须是bool。 if-else结构还可以当表达式使用 loop …

如何用LLM和自有知识库搭建智能agent?

用LangChain建立知识库&#xff0c;文末中也推荐其他方案。 项目源码&#xff1a;ChatPDF实现 LangChain Indexes使用 对加载的内容进行索引&#xff0c;在indexes中提供了一些功能&#xff1a; Document Loaders&#xff0c;加载文档Text Splitters&#xff0c;文档切分V…

nautilus`文件管理器打开文件管理器

使用nautilus文件管理器打开文件管理器&#xff0c;并使用管理员权限。以下是使用命令行的步骤&#xff1a; 打开终端&#xff08;命令行界面&#xff09;&#xff0c;你可以通过按下Ctrl Alt T组合键来打开终端。 在终端中&#xff0c;使用以下命令以管理员权限打开文件管理…

开发实践5_后台管理^/ 分_页器

以下学习 朔宁夫 开发课 。&#xff08;Python&#xff09; 一 基本使用 创建超级用户 terminal // python manage.py createsuperuser 访问地址 //Log in | Django site adminhttp://127.0.0.1:8000/admin/login/?next/admin/ superuserr login django自带admin功能。其…

一文读懂「Prompt Engineering」提示词工程

在了解提示过程之前&#xff0c;先了解一下什么是提示prompt&#xff0c;见最后附录部分 一、什么是Prompt Engingering&#xff1f; 提示工程&#xff08;Prompt Engingering&#xff09;&#xff0c;也被称为上下文提示&#xff08;In-Context Prompting&#xff09;&#x…

Django项目中的默认文件都有什么用

manager.py&#xff1a; 是django用于管理本项目的命令行工具&#xff0c;之后进行站点运行&#xff0c;数据库自动生成等都是通过本文件完成。 djangoStudy/__init__.py&#xff1a; 告诉python该目录是一个python包&#xff0c;暂无内容&#xff0c;后期一些工具的初始化可…

【数据库】间隙锁Gap Lock

什么是间隙锁 间隙锁&#xff08;Gap Lock&#xff09;&#xff1a;间隙锁是&#xff08;RR级别下&#xff09;一个在索引记录之间的间隙上的锁&#xff0c;可以是两个索引记录之间&#xff0c;也可能是第一个索引记录之前或最后一个索引之后的空间。间隙锁&#xff08;Gap Lo…

Github登录时,要二次验证.Github 2FA登录问题

2023下半年, Github登录时,要二次验证. 点击“Enable 2FA now”跳到2FA验证界面。 点setup key是到secret串。 这里有一个可以不用app的验证方法。填入secret串,运行后,会得到验证码. https://blog.csdn.net/dejavu_980323/article/details/132318107 按照这个文章,得到验证…

记csv、parquet数据预览一个bug的解决

文章目录 一、概述二、实现过程1. 业务流程2. 业务逻辑3. 运行结果 三、bug现象1. 单元测试2.运行结果 三、解决思路1. 思路一2. 思路二 一、概述 工作中遇到通过sparksession解析csv、parquet文件并预览top100的需求。 二、实现过程 1. 业务流程 #mermaid-svg-Tzp1pJTvJunU…

227. Basic Calculator II

227. Basic Calculator II class Solution:def calculate(self, s: str) -> int:ititer(re.split(r([\\-\*\/]),s))lastansint(next(it))for op in it:nint(next(it))if op in -:if op-:n-nansnelse:if op*:nlast*nelse:nint(last/n)ansans-lastnlastnreturn ans 注意这个…

分布式任务调度平台XXL-JOB使用(二)

说明&#xff1a;之前总结过在CentOS系统里使用XXL-JOB。但在代码开发阶段&#xff0c;我们有时需要在本地环境测试定时任务代码&#xff0c;本文介绍如何在Windows系统使用XXL-JOB。 下载 &#xff08;1&#xff09;下载代码&#xff0c;解压打开 首先&#xff0c;去Github…

多线程实现方式二

这里写目录标题 RunnableRunable接口实现多线程使用Runnable接口实现多线程的好处线程同步 - 三个窗口买票lock实现同步锁 Runnable Runable接口实现多线程 实现 Runnable 接口 定义一个类 MyRunnable 实现 Runnable 接口 在 MyRunnable 类中重写 run() 方法 创建 Thread 类…

Python系列(3)—— 变量

变量 一、变量命名规范二、变量赋值三、变量的数据类型四、变量的作用域五、变量类型转换 Python编程中&#xff0c;变量是存储数据的容器。它们用于存储各种数据类型&#xff0c;如整数、浮点数、字符串、列表、字典等。理解变量及其工作原理是Python编程的基础。 一、变量命…

在Android原生项目中 创建 Flutter模块

前言 应用场景&#xff1a;在已有的Android原生项目中&#xff0c;引入Flutter模块&#xff0c;摸索了两天&#xff0c;终于给整出来了&#xff1b; 如果是新项目&#xff0c;最好直接创建Flutter项目&#xff0c;然后在Fluter的 android / ios目录中&#xff0c;写原生代码&…

深思熟虑可能性模型介绍与使用

深思熟虑可能性模型介绍与使用 如何联系我 作者&#xff1a;鲁伟林 邮箱&#xff1a;thinking_fioa163.com或vlinyes163.com 版权声明&#xff1a;文章和记录为个人所有&#xff0c;如果转载或个人学习&#xff0c;需注明出处&#xff0c;不得用于商业盈利行为。 背景 20…