LoRA-scripts(SD-Trainer)
LoRA & Dreambooth 训练图形界面 & 脚本预设 & 一键训练环境
项目原地址:GitHub - Akegarasu/lora-scripts
一、必要依赖:
- Python 3.10
- Git
二、获取Lora-Scripts
克隆带子模块的仓库
git clone --recurse-submodules https://github.com/Akegarasu/lora-scripts
三、Conda创建环境与依赖
安装依赖
如果你和我一样是Conda
环境请看此内容,如果你不是可以忽略此步骤,直接移步四、运行安装脚本
步骤。
Conda虚拟环境创建
conda create -n lora python=3.10
conda activate lora
请编辑根目录下的编辑 install.bash
,并将create_venv=true
项目更改为 false
#!/usr/bin/bash
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
create_venv=false
四、运行安装脚本
给予install.bash
运行权限
sudo chmod 755 install.bash
运行安装脚本,会自动安装所需的依赖和虚拟环境
如果完成了三、Conda创建环境与依赖
,则会自动调用Conda的Python环境
./install.bash
五、配置与运行
运行gui.py
将会启动并自动下载所需的一些额外依赖,并运行在localhost:29080
端口,TensorBoard运行在localhost:29070
端口
python gui.py --listen --port 29080 --tensorboard-port 29070 --tensorboard-host 0.0.0.0
程序参数
参数名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
--host | str | "127.0.0.1" | 服务器的主机名 |
--port | int | 28000 | 运行服务器的端口 |
--listen | bool | false | 启用服务器的监听模式 |
--skip-prepare-environment | bool | false | 跳过环境准备步骤 |
--disable-tensorboard | bool | false | 禁用 TensorBoard |
--disable-tageditor | bool | false | 禁用标签编辑器 |
--tensorboard-host | str | "127.0.0.1" | 运行 TensorBoard 的主机 |
--tensorboard-port | int | 6006 | 运行 TensorBoard 的端口 |
--localization | str | 界面的本地化设置 | |
--dev | bool | false | 开发者模式,用于禁用某些检查 |
六、遇到的问题处理
NCCL共享内存错误
由于环境在Docker内,共享内存/dev/shm
只有64M
,导致炼丹报错:
[rank3]: torch.distributed.DistBackendError: NCCL error in:
../torch/csrc/distributed/c10d/NCCLUtils.hpp:275, unhandled system error (run with NCCL\_DEBUG=INFO for details), NCCL version 2.20.5
[rank3]: ncclSystemError: System call (e.g. socket, malloc) or external library call failed or device error.
[rank3]: Last error:
[rank3]: Error while creating shared memory segment /dev/shm/nccl-Bvx3cU (size 9637888)
1.尝试增大共享内存空间
- 可以通过修改
/etc/fstab
文件增加/dev/shm
的大小
2.临时禁用共享内存使用
- 如果你无法调整
Docker
容器的启动参数,仍可以使用禁用共享内存方法
export NCCL_SHM_DISABLE=1
3.清理共享内存空间
- 如果你无法扩大
/dev/shm
的空间,可能需要清理一些系统进程以释放更多共享内存。 - 使用以下命令查看和释放
/dev/shm
中正在使用的文件
ls -lh /dev/shm