Loading... # LoRA-scripts(SD-Trainer) LoRA & Dreambooth 训练图形界面 & 脚本预设 & 一键训练环境 [项目原地址:GitHub - Akegarasu/lora-scripts](https://github.com/Akegarasu/lora-scripts) --- ## 一、必要依赖: * Python 3.10 * Git ## 二、获取Lora-Scripts ### 克隆带子模块的仓库 ```bash git clone --recurse-submodules https://github.com/Akegarasu/lora-scripts ``` ## 三、Conda创建环境与依赖 ### 安装依赖 如果你和我一样是`Conda`环境请看此内容,如果你不是可以忽略此步骤,直接移步`四、运行安装脚本`步骤。 **Conda虚拟环境创建** ```bash conda create -n lora python=3.10 conda activate lora ``` 请编辑根目录下的编辑 `install.bash`,并将`create_venv=true` 项目更改为 `false` ```yaml #!/usr/bin/bash script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" create_venv=false ``` ## 四、运行安装脚本 给予`install.bash`运行权限 ```bash sudo chmod 755 install.bash ``` 运行安装脚本,会自动安装所需的依赖和虚拟环境 > 如果完成了`三、Conda创建环境与依赖`,则会自动调用Conda的Python环境 ```bash ./install.bash ``` ## 五、配置与运行 运行`gui.py`将会启动并自动下载所需的一些额外依赖,并运行在`localhost:29080`端口,TensorBoard运行在`localhost:29070`端口 ```bash 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 | 开发者模式,用于禁用某些检查 | ### 编写启动脚本 先创建一个启动脚本 ```bash nano start.sh ``` 写入脚本代码: ```bash #!/bin/bash #用于激活Conda环境 eval "$(conda shell.bash hook)" conda activate lora #export CUDA_VISIBLE_DEVICES=(多卡时,决定启用哪些卡) #export TOKENIZERS_PARALLELISM=false #export NCCL_SHM_DISABLE=1 python gui.py --listen --port 29080 --tensorboard-port 29070 --tensorboard-host 0.0.0.0 ``` ## 其它:遇到的问题处理 ### NCCL共享内存错误 由于环境在Docker内,共享内存`/dev/shm`只有`64M`,导致炼丹报错: ```text [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` 容器的启动参数,仍可以使用禁用共享内存方法 ```bash export NCCL_SHM_DISABLE=1 ``` **3.清理共享内存空间** * 如果你无法扩大 `/dev/shm` 的空间,可能需要清理一些系统进程以释放更多共享内存。 * 使用以下命令查看和释放 `/dev/shm` 中正在使用的文件 ```bash ls -lh /dev/shm ``` ### 'frontend/dist' does not exist 报错 这是由于在Linux没有创建前端页面导致的错误,虽然看到端口启用了,但是实际访问却是空的 只需要在Akegarasu的仓库获取最新的前端即可 [获取Dist目录:GitHub - Akegarasu/lora-gui-dist](https://github.com/hanamizuki-ai/lora-gui-dist) 将其放入 'frontend' 目录下即可: ```text frontend/ └── dist ├── 404.html ├── assets ├── dreambooth ├── index.html ├── lora ├── other ├── tageditor.html ├── tagger.html ├── task.html └── tensorboard.html ``` ### 报错提示:RuntimeError: Couldn't install xxx ```text Traceback (most recent call last): File "/root/lora-scripts/gui.py", line 93, in <module> launch() File "/root/lora-scripts/gui.py", line 59, in launch prepare_environment(disable_auto_mirror=args.disable_auto_mirror) File "/root/lora-scripts/mikazuki/launch_utils.py", line 288, in prepare_environment validate_requirements("requirements.txt") File "/root/lora-scripts/mikazuki/launch_utils.py", line 197, in validate_requirements run_pip(f"install {line}", line, live=True) File "/root/lora-scripts/mikazuki/launch_utils.py", line 253, in run_pip return run(f'"{python_bin}" -m pip {command}', desc=f"Installing {desc}", errdesc=f"Couldn't install {desc}", live=live) File "/root/lora-scripts/mikazuki/launch_utils.py", line 95, in run raise RuntimeError(f"""{errdesc or 'Error running command'}. RuntimeError: Couldn't install numpy<=2.0. Command: "/root/lora-scripts/venv/bin/python" -m pip install numpy<=2.0 Error code: 2 ``` 这是由于缺少依赖库导致的错误,从报错的信息来看,`RuntimeError: Couldn't install numpy<=2.0. `,这里是因为numpy的版本不受支持导致的: 可以先运行前尝试执行: ```bash pip install "numpy<=2.0" ``` 如果显示安装成功却还是无法启动,可能是因为问题出在脚本尝试安装 numpy<=2.0 时,Shell 将 <=2.0 解释为文件重定向符号,而不是版本约束条件。因为脚本使用了 subprocess.run() 或类似的方式调用 pip,但没有正确处理版本约束条件。 尝试修改脚本逻辑: 打开 `mikazuki/launch_utils.py` 文件,找到 `run_pip()` 函数 找到以下代码: ```python return run(f'"{python_bin}" -m pip {command}', desc=f"Installing {desc}", errdesc=f"Couldn't install {desc}", live=live) ``` 改为: ```python return run(f'"{python_bin}" -m pip install "{desc}"', desc=f"Installing {desc}", errdesc=f"Couldn't install {desc}", live=live) ``` ### 训练失败:HTTPSConnectionPool(host='huggingface.co'... ```bash requests.exceptions.SSLError: (MaxRetryError("HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: /openai/clip-vit-large-patch14/resolve/main/tokenizer_config.json (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1007)')))"), '(Request ID: bc43902a-c5ad-4e5b-baea-a5848d6fbcfb)') 21:22:35-282538 ERROR Training failed / 训练失败 ``` 这大概率是因为你的计算机无法访问'huggingface'导致的,可以使用VPN或修改成国内镜像源: ```bash export HF_ENDPOINT=https://hf-mirror.com ``` 如果需要临时使用,直接在运行前执行。 如果需要永久使用,请使用`vi`或`nano`添加到到 `~/.bashrc` 的末尾 然后执行更新环境变量: `source ~/.bashrc` 即可 最后修改:2025 年 10 月 09 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 喜欢就请我喝一杯奶茶吧~