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

程序参数

参数名称类型默认值描述
--hoststr"127.0.0.1"服务器的主机名
--portint28000运行服务器的端口
--listenboolfalse启用服务器的监听模式
--skip-prepare-environmentboolfalse跳过环境准备步骤
--disable-tensorboardboolfalse禁用 TensorBoard
--disable-tageditorboolfalse禁用标签编辑器
--tensorboard-hoststr"127.0.0.1"运行 TensorBoard 的主机
--tensorboard-portint6006运行 TensorBoard 的端口
--localizationstr 界面的本地化设置
--devboolfalse开发者模式,用于禁用某些检查

六、遇到的问题处理

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
最后修改:2024 年 09 月 28 日
喜欢就请我喝一杯奶茶吧~