SD-Trainer + ComfyUI 部署指南 (AutoDL平台)

SD-Trainer + ComfyUI 部署指南 (AutoDL平台)

1. 目录结构

这一节给出最终目录结构,以便自行检查对照

/root/
    /autodl-tmp/
        /models/
            ae.safetensors
            clip_l.safetensors
            flux1-dev.safetensors
            t5xxl_fp16.safetensors
    /ComfyUI/
        ...
        /models/
            /clip/clip_l.safetensors -> /root/autodl-tmp/models/clip_l.safetensors
            /clip/t5xxl_fp16.safetensors -> /root/autodl-tmp/models/t5xxl_fp16.safetensors
            /unet/flux1-dev.safetensors -> /root/autodl-tmp/models/flux1-dev.safetensors
            /vae/ae.safetensors -> /root/autodl-tmp/models/ae.safetensors
    /lora-scripts/
        ...
        /sd-models/ -> /root/autodl-tmp/models/

2. 安装所需软件

2.1. 安装 uv

为了方便 Python 环境管理,避免令人头疼的环境问题,我们使用 uv 进行 Python 环境管理。

uv 是用于 Python 项目的极速一体化工具,集成了虚拟环境管理、包依赖安装和项目构建等功能,旨在替代 pip、pip-tools 和 Poetry 等传统工具链,其核心优势在于速度极快。
为什么不用 conda?不需要,而且比 uv 麻烦。

Shell 中执行以下命令以安装 uv

curl -LsSf https://astral.sh/uv/install.sh | sh

由于网络问题,安装时间可能会比较长,没报错前都请耐心等待。

安装完成后运行以下命令以更新环境变量

source $HOME/.local/bin/env

执行以下命令检查 uv 是否安装成功

uv --version

安装成功应该输出类似 uv 0.9.26 的结果。

2.2. 安装 Tmux

为了让 ssh 断开后任务也能继续运行,我们需要用到 tmux

Tmux 是一个运行在终端里的窗口管理器,它可以在一个终端窗口中创建、访问和控制多个独立的终端会话(包括“窗格”和“窗口”),并且这些会话可以在后台持续运行,即便你断开远程连接也不会中断。

执行以下命令以安装 Tmux

apt update && apt install -y tmux

安装完成后,使用以下命令检查是否安装成功

tmux --help

若安装成功,应输出 tmux 的帮助信息。

3. 获取模型文件

后续的操作需要以下 4 个模型文件

模型名 HuggingFace 链接
flux1-dev.safetensors black-forest-labs/FLUX.1-dev/blob/main/flux1-dev.safetensors
ae.safetensors black-forest-labs/FLUX.1-dev/blob/main/ae.safetensors
t5xxl_fp16.safetensors comfyanonymous/flux_text_encoders/blob/main/t5xxl_fp16
clip_l.safetensors comfyanonymous/flux_text_encoders/blob/main/clip_l.safetensors

你需要将这些模型文件放置到你的云服务器中,你可以将他们下载到自己的电脑上后使用 scp 等方式将其传到云服务器中。

但这里并不推荐这种“先下载到本地再上传到服务器”的方式,因为这种方式的传输速度会受到上传者的上行带宽的制约,除非你的上行带宽很高,否则更推荐直接下载。下面介绍直接下载的方法。

(1)克隆下载脚本

git clone --depth=1 https://github.com/HiroMuraki/flux_downloader
cd flux_downloader

(2)配置环境变量

export HF_ENDPOINT=https://hf-mirror.com
export HF_TOKEN=$你的HuggingFace Access Token

注:除非你知道自己在做什么,否则这两个环境变量必须设置
HF_ENDPOINT 用于设置下载源为国内镜像源,保证下载的速度与稳定性
HF_TOKEN 用于配置 HuggingFace Access Token,因为 FLUX 的官方仓库需要授权才能访问,如果不提供一个获取了授权的 HF_TOKEN,将无法从 FLUX 的仓库中拉取模型

(3)执行下载

uv run main.py

等待脚本执行完成即可,下载时间可能会稍长。如果出现意外中断,重复执行 uv run main.py 进行重试即可。

模型会被下载到 /root/autodl-tmp/models/ 目录下,下载完成后可以使用 ls 命令检查一下该目录,如下

ls -ln /root/autodl-tmp/models

应当输出所需的四个模型文件。

4. 部署 SD-Trainer

SD-Trainer 是一个专注于 Stable Diffusion 模型快速训练微调模型的开源 WebUI 工具,旨在简化训练流程。

4.1. 克隆仓库

执行以下命令以克隆 SD-Trainer 的仓库

cd ~/ && git clone --depth=1 https://github.com/Akegarasu/lora-scripts

由于网络问题,克隆时间可能比较长甚至失败,请耐心等待或重试。

4.2. 初始化环境

执行以下命令为 SD-Trainer 创建 uv 虚拟环境,安装 requirements.txt 中定义的依赖,并将依赖信息注册到 pyproject.toml

cd ~/lora-scripts && uv init . --python 3.10 && uv add -r requirements.txt

此外,还需要单独安装 pip

uv add pip

这是因为 SD-Trainer 在首次启动时还会自动安装一些包,如果没有 pip 会导致启动失败。

4.3. 放置模型文件

为了让 SD-Trainer 方便地使用模型文件,你需要将模型文件放到 ~/lora-scripts/sd-models 目录中,不过考虑到 ComfyUI 与 SD-Train 使用的是同一套模型,为了避免不必要的空间浪费,我们采用软链接的方式放置模型。

执行以下命令,将模型目录软链接到 sd-models 目录

rm -rf ~/lora-scripts/sd-models
ln -sf ~/autodl-tmp/models ~/lora-scripts/sd-models

4.4. 启动 SD-Trainer

执行以下命令启动 SD-Trainer

cd ~/lora-scripts && uv run gui.py

初次启动较慢,因为 SD-Trainer 还需要进行一些配置工作。

运行后服务会开在 28000 端口,但现在你无法访问它,因为 AutoDL 的服务器并没有开放相关端口。我们将通过下一步的内网穿透来解决这一问题。

先终止服务,直接按 Ctrl + C 停止即可。

5. 部署 ComfyUI

ComfyUI 是一个基于节点流程的 Stable Diffusion 图形用户界面,通过可视化编排工作流实现对图像生成过程的精准控制与高效复用。

5.1. 克隆仓库

执行以下命令以克隆 ComfyUI 的仓库

cd ~/ && git clone --depth=1 https://github.com/comfyanonymous/ComfyUI.git

5.2. 初始化环境

执行以下命令将 ComfyUI 使用的 Python 版本固定为 3.13.x

cd ~/ComfyUI && uv python pin 3.13

执行以下命令为 ComfyUI 安装 requirements.txt 中定义的依赖,并将依赖信息注册到 pyproject.toml

cd ~/ComfyUI && uv add -r requirements.txt

如果下载速度过慢,可以设置以下环境变量,将 uv 默认的包源切换为清华源

export UV_DEFAULT_INDEX=https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

5.3. 放置模型文件

采取和 SD-Trainer 相同的方案,但 ComfyUI 对模型放置路径有要求,因此不能简单软链接目录,需要手动创建 4 个模型文件的链接,路径如下

文件 放置目录
flux1-dev.safetensors ComfyUI/models/unet
ae.safetensors ComfyUI/models/vae
t5xxl_fp16.safetensors ComfyUI/models/clip
clip_l.safetensors ComfyUI/models/clip

使用以下命令创建对应的软链接

ln -sf /root/autodl-tmp/models/flux1-dev.safetensors /root/ComfyUI/models/unet/flux1-dev.safetensors
ln -sf /root/autodl-tmp/models/ae.safetensors /root/ComfyUI/models/vae/ae.safetensors
ln -sf /root/autodl-tmp/models/t5xxl_fp16.safetensors /root/ComfyUI/models/clip/t5xxl_fp16.safetensors
ln -sf /root/autodl-tmp/models/clip_l.safetensors /root/ComfyUI/models/clip/clip_l.safetensors

5.4. 启动 ComfyUI

使用以下命令启动 ComfyUI

cd ~/ComfyUI && uv run main.py

运行后服务会开在 8188 端口,同样,现在你无法访问它,因为 AutoDL 的服务器并没有开放相关端口,需要通过下一步的内网穿透解决。

注1:无卡模式下无法启动,如果要使用 ComfyUI 请正常启动服务器。
注2:启动这一步可先跳过,把内网穿透做了再弄,否则即便现在启动也无法使用。

6. 配置内网穿透

虽然是云服务器,但是 AutoDL 的服务器并没有开放公网访问,你依然需要做内网穿透以使你访问在云服务器上开设的 SD-Trainer 服务。我们使用 Frp 进行内网穿透。

Frp 是一个专注于内网穿透的高性能反向代理应用,它能让处于内网或防火墙后的本地服务(如Web网站)被公网用户安全、便捷地访问。

6.1. 克隆仓库

执行以下命令,克隆仓库

cd ~/ && git clone --depth=1 https://github.com/HiroMuraki/ai_frp.git
cd ~/ai_frp

6.2. 配置 frpc.toml

frpc.toml 是 FRP 客户端要使用的配置文件,使用 vivim 等编辑器对其进行修改,说明如下

serverAddr = "127.0.0.1"       # FRP 服务端公网 IP
serverPort = 7000              # FRP 服务端端口
auth.method = "token"
auth.token = "your_frps_token" # FRP 服务端 Token

# SD-Trainer 服务内网穿透
[[proxies]]
name = "sd-trainer-xxx"
type = "tcp"
localIP = "127.0.0.1"
localPort = 28000       # 要映射的本地端口
remotePort = 28000      # 要映射的目标端口

# ComfyUI 服务内网穿透
[[proxies]]
name = "comfyui-xxx"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8188      # 要映射的本地端口
remotePort = 8188     # 要映射的目标端口

6.3. 启动 FRP

执行以下命令启动 FRP,开始内网穿透

cd ~/ai_frp && ./frpc --config frpc.toml

若要停止,按 Ctrl + C 即可。

7. 使用 tmux 开启服务

显然,当你启动 SD-Trainer 或者 FRP 内网穿透后,你就无法进行其他操作了,并且一旦关闭 ssh 链接,终端前台正在运行的程序也会被直接终止。

为了方便同时开启 SD-Trainer 与 FRP 服务,可以使用 tmux 窗口。tmux 窗口会在后台运行,即便关闭 ssh 链接也不会导致程序终止,并且可以创建多个 tmux 窗口以同时在后台运行多个任务。

如果不是 systemctl 不能用的话,其实 systemctl 是更好的选择。

下面以如何使用 tmux 运行 SD-Trainer 作为示例,FRP 的操作类似,就不再赘述。

7.1. 创建 tmux 窗口

使用以下命令创建一个名为 sd-trainer 的 tmux 窗口

tmux new -s sd-trainer

此时会直接进入创建好的 tmux 窗口内,只需在窗口中运行 SD-Trainer 即可。

cd ~/lora-scripts && uv run gui.py

7.2. 退出 tmux 窗口

确定服务运行起来后,按下 Ctrl + B,松开按键,再按下 D 键即可脱离 tmux 窗口,回到主终端。

7.3. 进入 tmux 窗口

在退出 tmux 窗口后,如果还需要查看特定 tmux 窗口,可使用如下命令进入该窗口(如 sd-trainer)

tmux attach -t sd-trainer

8. 其他

当使用 tmux 同时运行 SD-TrainerComfyUIFrp 后,即可通过指定的公网 IP 在浏览器中访问 SD-TrainerComfyUI 服务。

posted @ 2026-01-17 19:49  HiroMuraki  阅读(6)  评论(0)    收藏  举报