ComfyUI_NetDist 插件完全教程
1. 插件简介
插件地址: https://github.com/city96/ComfyUI_NetDist
ComfyUI_NetDist 是一个让你能够同时使用多张显卡或多台电脑来生成图片的神奇插件!想象一下,你有两张显卡,平时只能用一张来跑 ComfyUI,另一张就闲着。有了这个插件,你就可以让两张显卡同时工作,就像开了两个工厂一样,生产效率直接翻倍!
主要功能:
- 让多张显卡同时工作生成图片(就像同时开多个美图秀秀)
- 支持网络上的其他电脑一起帮你生成图片
- 可以在不同电脑之间传输图片和数据
- 支持保存和加载工作流程
能带来什么效果:
- 生成图片的速度大大提升(两张卡就是两倍速度)
- 可以同时生成更多不同的图片
- 充分利用你的硬件资源,不浪费
2. 如何安装
安装依赖
首先需要安装一个叫 requests 的工具包:
pip install requests
下载插件
把插件下载到 ComfyUI 的自定义节点文件夹:
git clone https://github.com/city96/ComfyUI_NetDist ComfyUI/custom_nodes/ComfyUI_NetDist
安装完成后重启 ComfyUI 就可以使用了!
3. 节点详细解析
当前插件包含节点总数:13 个
本次输出节点数:13 个
剩余未输出节点数:0 个
3.1 FetchRemote 节点 - 从远程获取图片
这个节点就像一个"快递员",专门负责从另一台电脑或显卡那里把生成好的图片取回来。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| final_image | final_image | IMAGE类型 | 连接你的最终图片 | 这是你想要从远程获取的图片,就像告诉快递员"我要取这个包裹" | 输入的图像数据,作为获取远程图像的参考 | 把你工作流最后的图片输出连到这里 |
| remote_info | remote_info | REMINFO类型 | 连接远程队列节点 | 这是远程电脑的"地址信息",告诉节点去哪里取图片 | 包含远程URL和任务ID的信息对象 | 必须连接到 RemoteQueueSimple 节点的输出 |
3.2 RemoteQueueSimple 节点 - 简单远程队列
这个节点就像一个"任务分配器",把你的生图任务发送到另一张显卡或另一台电脑上去执行。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| remote_url | remote_url | 文本输入 | http://127.0.0.1:8288/ | 远程电脑的"网址",就像快递地址一样 | 远程ComfyUI实例的HTTP地址 | 如果是本地第二张卡用8288端口,其他电脑用实际IP |
| batch_local | batch_local | 整数 1-8 | 1 | 本地电脑一次生成几张图片 | 本地批次大小,控制本地生成的图像数量 | 设置为1表示本地生成1张图 |
| batch_remote | batch_remote | 整数 1-8 | 1 | 远程电脑一次生成几张图片 | 远程批次大小,控制远程生成的图像数量 | 设置为2表示远程生成2张图 |
| trigger | trigger | on_change/always | on_change | 什么时候触发任务,就像设置闹钟 | 触发条件,决定何时执行远程任务 | on_change只在参数改变时执行,always每次都执行 |
| enabled | enabled | true/false/remote | true | 开关控制,就像电源开关 | 启用状态,控制节点的工作模式 | true=正常工作,false=关闭,remote=远程模式 |
| seed | seed | 整数 | 0 | 随机种子,就像抽奖的号码 | 随机数种子,控制生成结果的随机性 | 相同种子会生成相似的图片 |
3.3 RemoteChainStart 节点 - 远程链开始
这个节点是"高级模式"的起点,就像一个"项目经理",负责规划整个多显卡协作的工作流程。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| workflow | workflow | JSON类型 | 连接工作流 | 要执行的工作流程,就像一份"生产图纸" | 包含完整工作流定义的JSON数据 | 连接 LoadCurrentWorkflowJSON 节点 |
| trigger | trigger | on_change/always | on_change | 触发时机,就像定时器 | 控制任务执行的触发条件 | on_change参数变化时执行,always总是执行 |
| batch | batch | 整数 1-8 | 1 | 一次处理多少张图片 | 批处理大小,控制单次处理的图像数量 | 设置为4表示一次处理4张图 |
| seed | seed | 整数 | 0 | 随机种子编号 | 随机数生成器的初始值 | 控制生成结果的随机性和可重复性 |
3.4 RemoteChainEnd 节点 - 远程链结束
这个节点是"高级模式"的终点,就像一个"结果汇总员",把处理好的信息整理出来给你用。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| remote_chain | remote_chain | REMCHAIN类型 | 连接链开始节点 | 从开始节点传来的"工作计划书" | 包含远程链信息的数据对象 | 必须连接到 RemoteChainStart 的输出 |
3.5 RemoteQueueWorker 节点 - 远程队列工作器
这个节点就像一个"工头",负责把具体的工作任务分配给不同的"工人"(显卡或电脑)。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| remote_chain | remote_chain | REMCHAIN类型 | 连接链节点 | 工作流程的"传递棒" | 远程链数据,包含任务信息 | 连接到其他远程链节点 |
| remote_url | remote_url | 文本输入 | http://127.0.0.1:8288/ | 工人的"工作地址" | 远程ComfyUI实例的网络地址 | 填入要使用的远程电脑地址 |
| batch_override | batch_override | 整数 0-8 | 0 | 临时改变批次数量,就像临时加班 | 覆盖默认批次大小的参数 | 0表示使用默认值,其他数字表示强制使用该批次 |
| enabled | enabled | true/false/remote | true | 这个工人是否上班 | 控制该工作器的启用状态 | true=工作,false=休息,remote=远程模式 |
| outputs | outputs | final_image/any | final_image | 要什么样的输出结果 | 指定输出类型的参数 | final_image只要最终图片,any接受任何输出 |
3.6 LoadImageUrl 节点 - 从网址加载图片
这个节点就像一个"网络下载器",可以从网上直接下载图片到你的工作流里使用。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| url | url | 文本输入 | 图片网址 | 图片的网络地址,就像网购商品的链接 | 图像资源的HTTP/HTTPS URL地址 | 输入 https://example.com/image.jpg |
3.7 SaveImageUrl 节点 - 保存图片到网址
这个节点就像一个"网络上传器",可以把生成的图片直接发送到指定的网站或服务器。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| images | images | IMAGE类型 | 连接图片输出 | 要上传的图片,就像要寄出的包裹 | 输入的图像数据流 | 连接到任何生成图片的节点输出 |
| url | url | 文本输入 | 服务器地址 | 要发送到的网站地址 | 接收图像数据的服务器端点URL | 输入你的服务器接收地址 |
| filename_prefix | filename_prefix | 文本输入 | ComfyUI | 文件名的开头部分,就像给文件起名字 | 生成文件名的前缀字符串 | 设置为"MyArt"会生成MyArt_00001.png |
| data_format | data_format | HTML_image/Raw_data | HTML_image | 数据格式,就像选择包装方式 | 图像数据的编码格式 | HTML_image适合网页显示,Raw_data是纯数据 |
3.8 CombineImageBatch 节点 - 合并图片批次
这个节点就像一个"图片合并器",可以把两组图片合并成一组,方便一起处理。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| images_a | images_a | IMAGE类型 | 连接第一组图片 | 第一批图片,就像第一摞照片 | 第一个图像批次的输入 | 连接任何图片输出节点 |
| images_b | images_b | IMAGE类型 | 连接第二组图片 | 第二批图片,就像第二摞照片 | 第二个图像批次的输入 | 连接另一个图片输出节点 |
3.9 LoadLatentNumpy 节点 - 加载潜在空间文件
这个节点就像一个"半成品读取器",可以读取之前保存的"半成品"图片数据(还没完全生成好的图片)。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| latent | latent | 文件选择 | 选择文件 | 要读取的半成品文件,就像选择要继续加工的原料 | 潜在空间数据文件的路径 | 从下拉菜单选择.latent、.npy等文件 |
3.10 LoadLatentUrl 节点 - 从网址加载潜在空间
这个节点就像一个"网络半成品下载器",可以从网上下载半成品图片数据。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| url | url | 文本输入 | 文件网址 | 半成品文件的网络地址 | 潜在空间文件的HTTP/HTTPS URL | 输入远程服务器上的.latent文件地址 |
3.11 SaveLatentNumpy 节点 - 保存潜在空间文件
这个节点就像一个"半成品保存器",可以把当前的半成品图片数据保存起来,以后继续使用。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| samples | samples | LATENT类型 | 连接潜在空间 | 要保存的半成品数据 | 潜在空间采样数据 | 连接到任何LATENT输出,如VAE编码器 |
| filename_prefix | filename_prefix | 文本输入 | latents/ComfyUI | 保存文件的名字开头 | 文件名前缀,包含路径信息 | 设置为"mywork/test"会保存到mywork文件夹 |
3.12 SaveDiskWorkflowJSON 节点 - 保存工作流到硬盘
这个节点就像一个"配方保存器",可以把你当前的整个工作流程保存成文件,以后可以重复使用。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| workflow | workflow | JSON类型 | 连接工作流 | 要保存的工作流程"配方" | 包含工作流定义的JSON数据 | 连接LoadCurrentWorkflowJSON节点 |
| filename_prefix | filename_prefix | 文本输入 | workflow/ComfyUI | 保存的文件名开头 | 文件保存路径和名称前缀 | 设置为"myflows/portrait"保存人像工作流 |
3.13 LoadDiskWorkflowJSON 节点 - 从硬盘加载工作流
这个节点就像一个"配方读取器",可以读取之前保存的工作流程文件。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| workflow | workflow | 文件选择 | 选择JSON文件 | 要读取的工作流程文件 | 工作流JSON文件的选择器 | 从下拉菜单选择之前保存的.json文件 |
3.14 LoadCurrentWorkflowJSON 节点 - 加载当前工作流
这个节点就像一个"当前配方复制器",可以获取你正在使用的工作流程信息。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 无需输入参数 | prompt | 自动获取 | 无需设置 | 自动获取当前工作流的所有信息 | 系统自动传入的当前提示词数据 | 直接使用,无需任何设置 |
4. 使用技巧和建议
4.1 双显卡设置技巧
-
启动第二个ComfyUI实例:使用不同端口和显卡
python main.py --port 8288 --cuda-device 1 -
简单双卡工作流:
- 使用 RemoteQueueSimple + FetchRemote 组合
- 设置 remote_url 为
http://127.0.0.1:8288/ - 本地和远程批次都设为1开始测试
4.2 网络多机设置技巧
-
远程机器设置:
- 启动时添加
--listen参数 - 防火墙开放8188端口
- 使用实际IP地址替换127.0.0.1
- 启动时添加
-
网络地址获取:
- Windows: 打开命令行输入
ipconfig - Linux/Mac: 输入
ip a或ifconfig
- Windows: 打开命令行输入
4.3 高级工作流技巧
-
使用工作流链:
- RemoteChainStart → RemoteQueueWorker → RemoteChainEnd
- 可以串联多个 RemoteQueueWorker 实现多机协作
-
批次优化:
- 根据显卡性能调整批次大小
- 强显卡可以设置更大的batch_remote值
4.4 文件传输技巧
-
潜在空间传输:
- 使用 SaveLatentNumpy 保存中间结果
- 通过URL在不同机器间传输半成品
-
图片网络传输:
- LoadImageUrl 和 SaveImageUrl 实现网络图片处理
- 适合云端协作场景
5. 常见问题解答
Q1: 为什么连接不上远程机器?
A: 检查以下几点:
- 远程机器是否启动了ComfyUI且使用了
--listen参数 - 防火墙是否开放了相应端口(默认8188)
- IP地址是否正确(不要用127.0.0.1连接其他机器)
- 网络是否畅通(可以ping测试)
Q2: 为什么远程任务一直在等待?
A: 可能的原因:
- 远程机器的ComfyUI版本不兼容
- 远程机器缺少必要的模型文件
- 工作流中有远程机器不支持的节点
- 远程机器正在处理其他任务
Q3: 如何知道远程任务是否完成?
A:
- FetchRemote节点会自动等待远程任务完成
- 可以通过远程机器的ComfyUI界面查看队列状态
- 如果长时间无响应,检查远程机器是否出错
Q4: 双显卡模式下种子不同步怎么办?
A:
- 确保两个实例的种子设置一致
- 使用"always"触发模式避免缓存问题
- 可以设置种子为随机来生成不同的图片
Q5: 网络传输速度慢怎么优化?
A:
- 使用有线网络而不是WiFi
- 减少批次大小,分批传输
- 使用潜在空间传输而不是最终图片
- 考虑使用更快的网络设备
6. 进阶应用场景
6.1 云端渲染农场
使用多台云服务器搭建渲染农场:
- 主控机器运行完整工作流
- 多台云服务器作为计算节点
- 通过网络协调任务分配
6.2 本地多卡优化
充分利用本地多张显卡:
- 不同显卡处理不同风格
- 并行生成多个变体
- 提高整体生产效率
6.3 协作工作流
团队协作场景:
- 不同成员负责不同处理步骤
- 通过网络共享中间结果
- 实现分布式创作流程
总结: ComfyUI_NetDist 插件为 ComfyUI 带来了强大的分布式处理能力,无论是本地多卡还是网络多机,都能显著提升图片生成效率。掌握这13个节点的使用方法,你就能构建出适合自己需求的高效生图系统!
记住:从简单的双卡模式开始,逐步尝试更复杂的网络协作,这样能更好地理解和掌握这个强大的工具。