在 GPU 服务器上运行 ComfyUI:需要准备什么
ComfyUI 是一个开源(GPL-3.0)引擎,用于运行图像、视频、音频和 3D 生成模型,例如 Flux.2、Qwen Image、Wan 2.2 和 LTX-Video 2.3:您在浏览器中用节点搭建工作流,然后把它加入队列,交给 GPU 执行。要在 GPU 服务器上运行 ComfyUI,需要在 Python 环境中安装基于 CUDA 13 构建的 PyTorch(AMD 上则为 ROCm 版本),克隆 ComfyUI,在 127.0.0.1:8188 上启动它,再通过 SSH 隧道打开界面。它需要 580 系列或更新的 NVIDIA 驱动,以及足以容纳所加载模型的显存。
以下步骤适用于 Ubuntu 22.04 和 24.04,独享服务器和云 GPU 实例均可。如果您下单时在“软件”步骤中选择了 ComfyUI,它已经安装好了;本指南介绍的是如何自行安装和运行。
| GPU | 显存 | 带宽 | 每台服务器的 GPU 数量 |
|---|---|---|---|
| RTX 5090 | 32 GB GDDR7 | 1.8 TB/s | 1, 2, 4 |
| L40S | 48 GB GDDR6 ECC | 864 GB/s | 1, 2, 4, 8 |
| RTX PRO 6000 | 96 GB GDDR7 ECC | 1.6 TB/s | 1, 2, 4, 8 |
显存决定了哪些版本的模型能放得下。以 Qwen-Image-2512 扩散模型为例,FP8 版本的文件为 20.4 GB,BF16 版本为 40.9 GB:FP8 文件在三款显卡上都放得下,BF16 文件则只有 L40S 和 RTX PRO 6000 放得下。放不下的权重会被卸载到系统内存中,代价是速度变慢。推荐配置请参见图像与视频生成页面,各款 GPU 的对比请参见 Stable Diffusion、Flux 与 AI 视频的最佳 GPU 一文。
在 Ubuntu 上安装 ComfyUI
以下步骤遵循 ComfyUI README 中的手动安装方法;请以您的 sudo 用户身份运行,不要使用 root。README 要求 20 系列及更新的 NVIDIA GPU 使用针对 CUDA 13.0 或更新版本构建的 PyTorch(cu130),我们出租的所有 NVIDIA GPU 都在此列。这些 wheel 包自带 CUDA 库,因此主机上只需要 580 系列或更新的驱动(参见 CUDA 发行说明):
nvidia-smi # 输出顶部必须显示 CUDA Version: 13.0 或更高
如果低于这个版本,请先升级驱动(参见 NVIDIA 驱动与 CUDA)。PyTorch 在 2.7 版中通过 CUDA 12.8 构建加入了对 RTX 5090、RTX PRO 6000、B200 等 Blackwell GPU 的支持;请使用下面的 cu130 构建,不要选 PyTorch 安装选择器中同样列出的 CUDA 12.6 选项:
curl -LsSf https://astral.sh/uv/install.sh | sh # 然后开一个新终端,让 uv 出现在 PATH 中
uv venv --python 3.13 --seed --managed-python ~/comfy-env
source ~/comfy-env/bin/activate
git clone https://github.com/Comfy-Org/ComfyUI.git ~/ComfyUI
cd ~/ComfyUI
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu130
pip install -r requirements.txt
pip install -r manager_requirements.txt # ComfyUI-Manager,见下文
python -c "import torch; print(torch.__version__, torch.cuda.is_available(), torch.cuda.get_device_name(0))"
输出应包含一个以 +cu130 结尾的版本号、True 以及 GPU 的名称。ComfyUI 的文档推荐使用 Python 3.13;--seed 会装上 pip,ComfyUI-Manager 要用它来安装自定义节点的依赖。comfy-cli(先执行 pip install comfy-cli,再执行 comfy install)是另一种安装方式,它会替您选好 PyTorch 构建。
在 AMD MI355X 上,请先安装 GPU 驱动(参见 MI355X 上的 ROCm),并改用 README 中的 ROCm 命令:pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm7.2。之后 torch.cuda.get_arch_list() 的输出中必须包含 gfx950。
把模型下载到 NVMe 磁盘
ComfyUI 会按模型类型,到 models/ 下各自对应的文件夹中查找模型:
| 文件夹 | 内容 |
|---|---|
checkpoints | 一体化检查点,例如 SDXL |
diffusion_models(或 unet) | 单独发布的扩散模型,例如 Qwen Image |
text_encoders(或 clip) | 文本编码器 |
vae | VAE 模型 |
loras | LoRA 适配器 |
upscale_models、controlnet | 放大模型和 ControlNet |
把这些文件放在挂载于 /data 的 NVMe 数据盘上(参见存储与数据),这样即使重装 ComfyUI,它们也不受影响。hf download 会在 --local-dir 下重建仓库的子文件夹结构,所以请先下载到一个中转文件夹,再把文件移到对应位置。示例:从 Comfy-Org 重新打包的仓库下载 Qwen-Image-2512(Apache 2.0 许可,FP8 版本约 30 GB):
curl -LsSf https://hf.co/cli/install.sh | bash # 安装 hf 命令
mkdir -p /data/models/{checkpoints,diffusion_models,text_encoders,vae,loras,upscale_models}
hf download Comfy-Org/Qwen-Image_ComfyUI \
split_files/diffusion_models/qwen_image_2512_fp8_e4m3fn.safetensors \
split_files/text_encoders/qwen_2.5_vl_7b_fp8_scaled.safetensors \
split_files/vae/qwen_image_vae.safetensors \
--local-dir /data/models/incoming
cd /data/models
mv incoming/split_files/diffusion_models/* diffusion_models/
mv incoming/split_files/text_encoders/* text_encoders/
mv incoming/split_files/vae/* vae/
rm -rf incoming
ComfyUI 启动时会读取其目录下的 extra_model_paths.yaml(extra_model_paths.yaml.example 列出了所有可用的键)。把它指向数据盘;is_default 会把这些文件夹排在首位,下载模型时也优先使用它们:
cat > ~/ComfyUI/extra_model_paths.yaml <<'EOF'
nvme:
base_path: /data/models/
is_default: true
checkpoints: checkpoints/
diffusion_models: diffusion_models/
text_encoders: text_encoders/
vae: vae/
loras: loras/
upscale_models: upscale_models/
EOF
需要授权的仓库(例如 black-forest-labs/FLUX.1-dev)要求您先在模型页面上接受使用条件,然后提供令牌:执行 hf auth login,或在环境变量中设置 HF_TOKEN。各模型的许可证并不相同:FLUX.1 [dev] 采用的是非商业许可证。
启动 ComfyUI 并保持运行
先在 tmux 中手动启动一次(参见 SSH 访问):
source ~/comfy-env/bin/activate
cd ~/ComfyUI
python main.py --listen 127.0.0.1 --port 8188 --enable-manager
随后日志会显示 To see the GUI go to: http://127.0.0.1:8188。127.0.0.1 和 8188 本来就是默认值,这里写出来是为了一目了然。python main.py --help 会列出所有选项,启动参数页面上也有说明。
要让 ComfyUI 在崩溃或系统重启后自动恢复运行,请使用 systemd 模板单元:实例编号就是 GPU 编号,端口为 8188 加上这个编号。请先停止在 tmux 中运行的那个实例,并把 alice 换成您的用户名:
mkdir -p /data/comfyui/output
sudo tee /etc/systemd/system/comfyui@.service >/dev/null <<'EOF'
[Unit]
Description=ComfyUI on GPU %i
Wants=network-online.target
After=network-online.target
[Service]
User=alice
WorkingDirectory=/home/alice/ComfyUI
# $$ 会把一个字面意义上的 $ 传给 shell:GPU 0 监听 8188,GPU 1 监听 8189
ExecStart=/bin/sh -c 'exec /home/alice/comfy-env/bin/python main.py --listen 127.0.0.1 --port $$((8188 + %i)) --cuda-device %i --output-directory /data/comfyui/output/gpu%i --enable-manager'
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now comfyui@0
sudo journalctl -u comfyui@0 -f # 查看日志;按 Ctrl-C 停止跟踪
每个实例都会把图像保存到 /data/comfyui/output 下属于自己的文件夹中,因此两个实例永远不会写入同一个文件。
ComfyUI 远程访问:SSH 隧道或带身份验证的代理
ComfyUI 服务端没有任何身份验证(参见 ComfyUI 的自托管说明):任何能连到它的人,都可以通过它的 API 把工作流加入队列、上传文件,并获取您生成的结果。请让它保持在 127.0.0.1 上,并从以下两种访问方式中任选其一。
SSH 隧道:适合您自己和少数可信任的人
# 在您自己的电脑上执行,然后打开 http://localhost:8188
ssh -N -L 8188:127.0.0.1:8188 gpu1
# 两个实例:每个端口一个 -L
ssh -N -L 8188:127.0.0.1:8188 -L 8189:127.0.0.1:8189 gpu1
gpu1 是 SSH 访问一文中配置的主机条目;在该条目中加入 LocalForward 8188 127.0.0.1:8188,每次连接时都会自动打开隧道。
带 TLS 和密码的反向代理
如果想不经过 SSH、直接用浏览器访问,请把一个 DNS 名称指向服务器,并从官方仓库安装 Caddy。Caddy 会自动获取 TLS 证书,用 basic_auth 要求输入密码,还会代理界面所用的 WebSocket 连接:
caddy hash-password # 输入一个足够长的随机密码;命令会输出它的 bcrypt 哈希
sudo tee /etc/caddy/Caddyfile >/dev/null <<'EOF'
comfy.example.com {
basic_auth {
alice <paste-the-hash-here>
}
reverse_proxy 127.0.0.1:8188
}
EOF
sudo systemctl reload caddy
sudo ufw allow 80,443/tcp
绝不要用不带地址的 --listen 启动 ComfyUI,那样它会监听所有地址(0.0.0.0 和 ::);也绝不要在防火墙中开放 8188 端口。ComfyUI 没有发布官方 Docker 镜像;如果您使用社区制作的镜像,请以 -p 127.0.0.1:8188:8188 的形式发布端口,因为 Docker 的端口规则会绕过 ufw(参见容器)。
在多块 GPU 上运行 ComfyUI
默认情况下,一个工作流只在一块 GPU 上运行。在配有 2、4 或 8 块 GPU 的服务器上,请为每块 GPU 运行一个实例:--cuda-device 会让每个实例看不到其他 GPU,每个实例都有自己的端口和队列。使用上文的模板单元:
sudo systemctl enable --now comfyui@1 # GPU 1 使用 8189 端口;依此类推,可继续添加 comfyui@2、@3 等
nvidia-smi --query-gpu=index,memory.used,utilization.gpu --format=csv -l 5
这样四块 GPU 就能同时运行四个任务。自 2026年5月起,内置的 MultiGPU CFG Split 节点(MultiGPU_WorkUnits)还可以把单个工作流的 CFG 采样分摊到多块相同的 GPU 上,从而加快这个工作流的速度:把它直接接在采样器之前,并为该实例分配多块 GPU(--cuda-device 0,1,或者不加这个参数)。其文档介绍的是双 GPU 配置,提速最高可达 1.95 倍,具体取决于工作流。CFG 必须大于 1,因此以 CFG 1 采样的蒸馏模型无法从中获益;而且每块 GPU 都会加载一份自己的模型副本(参见 pull request #7063):单块显卡放不下的模型,两块显卡同样放不下。
用 ComfyUI-Manager 管理自定义节点
ComfyUI-Manager 可以安装、更新和删除自定义节点,找出工作流中缺失的节点,并为您的环境保存快照。它随 ComfyUI 一起提供:安装 manager_requirements.txt(上文已完成),再以 --enable-manager 启动即可。它的新界面只安装发布在 Comfy Registry 上的节点包(Registry 会扫描这些节点包是否存在恶意行为),不支持通过 Git URL 安装。
自定义节点就是以 ComfyUI 的权限运行的 Python 代码:它可以读取您的文件、模型和令牌。通过 Manager 安装节点时,还会一并安装它的依赖并运行它的安装脚本。Comfy 的 2025年1月安全更新介绍了一些恶意的和存在漏洞的自定义节点。只安装您需要的、来自可信作者的节点包,并且绝不要以 root 身份运行 ComfyUI。
不在 Registry 中的节点包需要手动安装:
source ~/comfy-env/bin/activate
cd ~/ComfyUI/custom_nodes
git clone https://github.com/<author>/<pack>.git
pip install -r <pack>/requirements.txt
sudo systemctl restart 'comfyui@*' # 重启所有正在运行的实例
要更新 ComfyUI,请切换到最新的稳定版发布标签;README 提醒,两个发布版本之间的提交可能会导致自定义节点失效:
source ~/comfy-env/bin/activate
cd ~/ComfyUI
git fetch --tags
git checkout $(git describe --tags `git rev-list --tags --max-count=1`)
pip install -r requirements.txt -r manager_requirements.txt
sudo systemctl restart 'comfyui@*'显存与 FP8 选项
先不加任何显存参数启动。ComfyUI 会在支持的系统上开启动态 VRAM(在 NVIDIA GPU 上自动启用),并根据需要在显存和系统内存之间移动权重。只有在确有理由时才更改默认设置:
| 参数 | 作用 | 适用情况 |
|---|---|---|
--highvram | 使用后把模型保留在显存中,而不是卸载到 CPU 内存 | 您的模型放得下,例如在 RTX PRO 6000 上 |
--gpu-only | 所有内容(包括文本编码器)都存放在 GPU 上并在 GPU 上运行 | 所有内容都放得下 |
--reserve-vram 4 | 按指定的 GB 数为操作系统和其他软件预留显存 | 有其他程序共用这块 GPU |
--fp8_e4m3fn-unet、--fp8_e4m3fn-text-enc | 以 FP8 存储扩散模型或文本编码器的权重 | 只有 16-bit 文件,而且放不下 |
--fast | 实验性优化,可能影响质量或稳定性 | 仅用于测试 |
--highvram 和 --gpu-only 会关闭动态 VRAM;而动态 VRAM 开启时,--lowvram 不起任何作用。FP8 权重占用的显存是 BF16 权重的一半;如果某个模型发布了 FP8 版本(Qwen-Image-2512 就是如此),ComfyUI 的文档建议大多数用户使用这个文件。
在租期结束前备份工作流和生成结果
如果租期没有续费,服务器会在付费月份结束时停止运行,磁盘也会被清空。模型可以重新下载,您的作品却无法找回。请在结束日期前几天,把以下内容复制到服务器之外:
/data/comfyui/output:生成的图像和视频。除非您用--disable-metadata启动 ComfyUI,否则它会把工作流保存在所生成的文件中,因此加载一张图像就能还原出它的完整工作流。~/ComfyUI/user:在界面中保存的工作流、各项设置以及 ComfyUI-Manager 快照。~/ComfyUI/input、extra_model_paths.yaml、systemd 单元文件,以及您训练的所有 LoRA。
# 在您自己的电脑上执行
rsync -avhP gpu1:/data/comfyui/output/ ./comfyui/output/
rsync -avhP gpu1:ComfyUI/user/ ./comfyui/user/
其他内容也用同样的方式复制,或者按存储与数据中的方法,用 rclone 复制到 S3 兼容存储。如果要换用更大的 GPU,请在配置器中下单,按上文步骤安装 ComfyUI,并趁两台服务器都在运行时把这些文件夹复制过去。
对这篇指南有疑问?
请通过联系表单告诉我们您使用的 GPU、运行的命令以及得到的输出结果。
