requests + ComfyUI ComfyUI + 多GPU/多机环境+ Python pip+ HTTP/REST

将ComfyUI工作流分布到多GPU/多台机器上并行生成图像

多个ComfyUI实例经HTTP通信,主实例分发队列并取回远程生成图像,实现横向扩展

✓ 两节点即可组网✓ 支持跨机器扩展 ✕ 无预览进度条✕ 种子复现可能重复图

方案简介

ComfyUI_NetDist 是一个 ComfyUI 自定义节点包,用于把 ComfyUI 工作流运行在多块本地 GPU 或多台联网机器上。它解决的痛点是:单张 GPU 生成速度有限时,可以通过多实例协作来并行出图。适合拥有 2 张 GPU 的单机用户,或拥有多台带 GPU 的 PC 的用户。安装只需 requests 一个外部依赖,将仓库克隆到 custom_nodes 目录即可。项目提供简单(双 GPU/双机)和高级(多 GPU、工作流 JSON 输入)两种使用模式。

亮点与能力

  • 本地远程控制:用同一套工作流控制本地与远程 ComfyUI 实例
  • 简单双 GPU 模式:仅需两个节点即可工作
  • 可设置本地/远程 batch size,以及节点触发时机
  • 简多多机模式:串联多个 simple queue 节点扩展机器数
  • 高级模式:支持每批次覆写、默认 batch size、以工作流 JSON 作为输入
  • LoadImageUrl/SaveImageUrl 节点支持通过 URL 加载/上传图像
  • 远程 latent 传输:以 .npy 文件保存/加载 latent,跨实例传递

组成与分工

  • ComfyUI:核心生图框架,需要在每台机器上运行至少一个实例
  • requests 库:唯一外部 Python 依赖,用于节点间 HTTP 通信(如 SaveImageUrl 发送 POST 请求)
  • Git:用于将仓库克隆到 ComfyUI 的 custom_nodes 文件夹完成安装
  • FetchRemote / QueueRemote 等自定义节点:分发任务与取回远程图像
  • LoadImageUrl / SaveImageUrl:以 URL 方式跨实例传输图像(base64 PNG,JSON POST)

前置要求

  • 至少两个不同的 ComfyUI 实例(可以是同一台机器上的两块 GPU,也可以是两台 PC)
  • Python requests 库,安装命令:

bash
pip install requests

  • 将插件克隆到 custom_nodes 目录:

bash
git clone https://github.com/city96/ComfyUI_NetDist ComfyUI/custom_nodes/ComfyUI_NetDist

  • 若远程实例在另一台 PC 上,需要添加 --listen 启动参数并配置正确的远程 IP。

实施步骤

1. 安装依赖并克隆插件

bash
pip install requests

bash
git clone https://github.com/city96/ComfyUI_NetDist ComfyUI/custom_nodes/ComfyUI_NetDist

2. 启动多个 ComfyUI 实例

在同一台机器用不同 GPU 启动两个实例,分别指定端口和 CUDA 设备:

--port 8288 --cuda-device 1

README 建议第二个实例使用 --port 8288 --cuda-device 1

3. 跨机器部署(可选)

若第二个实例在另一台 PC,启动参数中加 --listen,并在该机器上用 ipconfig(Windows)或 ip a(Linux)查看 IP,填入远程地址。

4. 搭建工作流

  • 简单双 GPU:只需两个节点;可设置本地/远程 batch size 和触发时机(若节点未执行,可将触发设为 'always')
  • FetchRemote('Fetch from remote')节点接收图像输入,该输入应是希望从第二个实例取回的最终图像,不要把它路由回自身;该节点会等待第二张图像生成完成(当前无预览/进度条)
  • 高级模式:参考 NetDistAdvancedV2. 工作流,可使用工作流 JSON 作为输入,最终图像可设为 "any"

5. 远程图像/latent 传输(可选)

  • SaveImageUrl 向目标 URL 发送包含图像的 JSON POST 请求,值为 base64 编码 PNG
  • latent 可保存为 .npy 文件,另一个实例通过文件名 URL 加载,LoadLatentNumpy 也支持 safetensor latents 和 sd_scripts 的 npz 缓存文件

使用与配置要点

  • 双 GPU 模式下可分别设置 local/remote batch size
  • 节点触发时机可调整:如果修改了采样器设置但没改种子导致节点没执行,把触发设为 'always'
  • 多机扩展时若复用种子可能出现重复图像,建议两端种子都设为 randomized
  • 远程图像服务器端注意:文件名在批次间不保证唯一(因为不在服务器本地保存),需要在服务端处理;服务器不写盘
  • 高级模式工作流最终图像设为 "any" 时可不依赖 FetchRemote 节点;触发可用一张空白假图像输入

注意事项与常见问题

  • 不要从同一客户端向同一远程 worker 多次排队同一工作流
  • 项目自嘲目前运行不够流畅:~~Expect this to work smoothly.~~
  • FetchRemote 等待第二张图生成时没有预览/进度条
  • 已知边界问题:Linux 控制 Windows 时存在 os.sep 不匹配,尚在 Roadmap 中待修复
  • 多个独立图像输出节点的处理、静态工作流的更好编辑方式也在 Roadmap 中
  • SaveImageUrl 不保证文件名跨批次唯一,需服务端自行处理

优缺点

  • ✓ 两节点即可组网
  • ✓ 支持跨机器扩展
  • ✕ 无预览进度条
  • ✕ 种子复现可能重复图

出处

本方案挖掘自开源项目 city96/ComfyUI_NetDist,方案内容与实施命令均来自其 README 原文。

方案出处
city96/ComfyUI_NetDist:Run ComfyUI workflows on multiple local GPUs/networked machines.
508 star Run ComfyUI workflows on multiple local GPUs/networked machines.

本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。