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 客户端要使用的配置文件,使用 vi 或 vim 等编辑器对其进行修改,说明如下
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-Trainer、ComfyUI 与 Frp 后,即可通过指定的公网 IP 在浏览器中访问 SD-Trainer 与 ComfyUI 服务。

浙公网安备 33010602011771号