∞ UnlimitCanvas 创作工作台
技术手册 / 云算力接入 / 算力集群的搭建

算力集群的搭建 🚧 筹备中

13-云算力接入 · 2026-10-12 · 7.0 KB
🚧 筹备中:本专题尚在筹备(内容仍在校对与补充 ⇒ 请以应用实际界面与平台控制台为准 ⚠)
「算力集群」=把 N 台能跑 ComfyUI 的机器放进一个池:提交任务时,应用自动挑当前最空闲的那台跑。
本文讲清它凭什么值得搭(低门槛 · 高收益),以及怎么搭起来(要几台 · 每台准备什么 · 怎么登记 · 怎么验证);⛔ 不写镜像内部与运维部署细节。
本专题手工维护(2026-10-12 建);⚠ 平台界面与地址形态以控制台为准(本页快照 2026-10-12)。
⚠ 平台预期(先决条件):本文步骤基于「优云智算(CompShare)」平台写(实例形态 / 地址形态 / 云盘路径都是它的)⇒ 换用其它平台时:思路一样,但位置与名称不同 ⇒ 照着找对应项 ✓
⚠ 另一格:要拉进来的若是你自己局域网里的另一台机器(不是云实例)⇒ 见《ComfyUI 本地部署 · 局域网算力集群》(机制相同;前提与说辞不同:免 token · inputDirectory 必填 · 走本地库 ✓)

一、★ 先说结论:这是低门槛、高收益的设计

一句话展开
门槛低到底每台机器只需跑着 ComfyUI + 在应用里登记一条节点 ⇒ ⛔ 不装"集群服务/Agent"、⛔ 不开独立控制台、⛔ 不改镜像 ✓
收益看得见多台一进池 ⇒ 批量总时长被摊薄、长任务不再堵线、单点故障只少一台不停线 ✓
加机器的手续复制一行 JSON、改地址、保存 —— 就这些 ✓

⇒ 它补的正是"一台机器串行排队"这个最要命的瓶颈:你的活不再被算力排队卡住 ✓

(为什么"高收益"、前提是什么 ⇒ 见 §二;怎么挑机 ⇒ §七;⚠ 但有些事它做不到,见 §九)


二、★★ 为什么值得搭:低门槛 · 高收益(逐条给机理)

2.1 "低门槛":三条,都是"一行 JSON 的事"

门槛实际
要不要装东西⛔ 不用 —— 没有"集群服务/Agent",每台就是一台普通 ComfyUI ✓
要不要先买好几台才能开始⛔ 不用 —— 集群默认那一条就是本机;本机 + 一台云就已经是集群 ✓
加第三台要干什么复制一行 JSON、改地址 ⇒ 保存即可 ✓

2.2 "高收益":六条机理(每条都问一句"为什么成立")

#收益机理(为什么成立)
1批量吞吐直接叠加(最明显)每台默认并发 1 ⇒ 多一台就多一个"跑位" ⇒ 一批 N 个任务的总时长按可用跑位数摊薄(⚠ 是"任务级并行",单个任务不会变快 —— 见 §九)✓
2长任务不再堵住整条线长视频 / 高清放大 / 多参考 在单台上就是"串行排队"(排在后面的只显示"排队中"✗ 干等);多台一开 ⇒ 排队的活被分流 ✓
3本机与云端各干各自擅长的同类多台可并存:本机吃轻活(快、零成本、反馈快)、云卡吃重活(32 GB 显存跑大模型)⇒ 一台机器再也不用"什么都扛" ✓
4交互不再被批任务挤掉 ⭐单台并发 1 时,你一发批量,交互试跑就被挤到队尾;集群下有别的机器接手 ⇒ 边跑批量、边试参数 ✓
5抗单点:坏的只少一台,不是全停某台关机 / 换域名 ⇒ 只把它排除出调度,其余照跑;只有全部不可达才"会话内回退单台" ✓
6峰值可弹性要交片那几天多开两台(用完关机)、平时留一台 ⇒ 峰值不再被算力卡住,而钱只花在峰值上 ✓

⇒ 一句话:它买的不是"更便宜的单价",而是"更短的总时长 + 更少的干等 + 更稳的产线" ✓

(⚠ 多台同时跑=多台同时计费 ⇒ 省的是时间,不是账单,见 §九)

2.3 ★ 收益看得见


① 「算力集群」页的健康条:如果看到**多台同时 `运行 1`** ⇒ 并行正在生效 ✓
   (只有一台在 `运行 1`、其余 `运行 0` ⇒ 说明你的活还没形成批量,或并发上限设成了 1 但只提交了一个任务)
② 批量任务的总时长:同样 10 个任务,1 台跑 vs 3 台跑 ⇒ 实测一次就有体感 ✓

⚠ 本页不给"提速百分之几":每台并发、任务大小、各台权重齐不齐都不同 ⇒ 任何笼统数字都不诚实 ✗(自己按上面两条测 ✓)


三、先分清:单台 还是 集群(二者互斥)

形态行为什么时候用
单台指定一台实例跑,任务都发到它只有一台;或想固定用某台 ✓
集群自动挑当前最空闲的节点跑有多台(本机 + 云实例)时吞吐更好 ✓

⚠ 三条要记住:

  • 互斥:在「算力」面板里选单台会顺手关掉集群(避免集群把单台选择抢走)✓
  • 集群优先:集群开着时,ComfyUI 任务走集群;关掉集群 ⇒ 回到单台地址 ✓
  • 会话内回退:连续 3 次全不可达 ⇒ 本次会话回退单台,且不动你的集群配置;

节点恢复可达后自动重新启用 ✓(提示原话见 §八)

⚠ 术语:集群里每一台叫一个「节点」(不是"实例"——"实例"在《用镜像创建实例》那篇里指平台上的机器)✓


四、每台机器要满足的四条硬要求

#要求怎么做不满足会怎样
1跑着 ComfyUI用镜像建的实例(镜像内自动起)✓探测不到 ⇒ 被静默排除(不报错,只是永远不选它)⚠
2地址含 token / 路径前缀、不带尾斜杠从平台整段复制完整地址(形如 http://8188-<实例ID>-s1.pod.compshare.cn)✓缺 token ⇒ 全路径 404 且被静默排除;尾斜杠 ⇒ 403 / 405 ⚠
3inputDirectory 填绝对路径,且与实例上逐字一致如 /root/ComfyUI/input ✓远端节点必填;填错 ⇒ 报 Invalid file path ✗
4权重 / 模型各台可以有差异,但模板按"任务实际落到的那台"解析想让 §二 那条"吞吐叠加"真吃满 ⇒ 同镜像 + 同云盘最省心 ✓用错库 ⇒ 任务必挂,而且报错只会说"模型找不到"(最难查的一类 ✗)

⚠ 两条平台侧的提醒(沿用本专题前面几篇):

  • 平台给的地址里端口已经带上了(8188)⇒ 别再自己拼 :8188 ✓
  • 权重放挂载的云盘(如 /cloud/models/...),并让实例与云盘同区;⚠ 云盘内容不会进镜像,实例里的改动也只落系统盘 ⇒ 想让"多台一致"最省心的做法是同一镜像 + 同一云盘 ✓

五、在应用里登记节点(逐步)


① 打开:设置 →「算力集群」(或顶栏「算力」→ 算力集群)
② 开:点「优先启动(设为首选算力)」⇒ 徽章变「集群调度已开启 · 优先选空闲节点」✓
③ 写:在下面的 JSON 数组里逐台写节点
     (说明块原话:上面编辑的是 cluster.json 的 targets 数组,每个对象一台服务器 ✓)
④ 存:点「保存集群配置」⇒ 提示「已写入 cluster.json」✓

字段逐个说(照界面说明):

字段必填?含义 / 默认
id可选稳定标识,缺省自动生成 ⚠ 别与引擎保留值同名(见 §八)✓
name必填只用于显示,随便起 ✓
baseUrl必填该台的 ComfyUI 根地址(含 token / 路径前缀、不带尾斜杠)✓
inputDirectory远端必填该台的 ComfyUI input 绝对路径;本机节点(回环地址)可留空 ⇒ 应用回落到"ComfyUI 根目录"推断 ✓
maxConcurrentJobs可选目标并发(软上限),默认 1 ✓ —— ⚠ 这是"这台同时接几个任务",调大等于给这台机器加跑位(受显存限制)
enabled可选默认 true;false ⇒ 即使空闲也不选它 ✓

可直接改用的样例(⚠ 地址一律用占位,别把真实地址写进文档):


[
  { "id": "local", "name": "本地 ComfyUI", "baseUrl": "http://127.0.0.1:8188", "inputDirectory": "", "maxConcurrentJobs": 1, "enabled": true },
  { "id": "cloud-a", "name": "云算力 A", "baseUrl": "http://8188-<实例ID>-s1.pod.compshare.cn", "inputDirectory": "/root/ComfyUI/input", "maxConcurrentJobs": 1, "enabled": true },
  { "id": "cloud-b", "name": "云算力 B", "baseUrl": "http://8188-<实例ID>-s1.pod.compshare.cn", "inputDirectory": "/root/ComfyUI/input", "maxConcurrentJobs": 1, "enabled": true }
]

⚠ 默认就有一条:本地节点(http://127.0.0.1:8188,本机可留空 inputDirectory)⇒ 想"本机 + 两台云"一起进池,就是在它旁边再贴两项 ✓(这就是"低门槛":你已经有一台的配额了 ✓)

登记方式的边界(别期待它没有的功能):

  • ⛔ 没有自动发现、⛔ 没有导入 / 导出 ⇒ 就是手填这个数组(可复制粘贴数组项来加多台)✓

报错怎么读(照抄界面原话):

提示意思
JSON 解析失败:…数组写坏了(少逗号 / 多逗号最常见)✓
顶层必须是 JSON 数组 [ ... ]最外层不是 [ ] ✓
第 N 项缺少 name 字段 / 缺少 baseUrl 字段 / 缺少 inputDirectory(远端节点必填)逐项补 ✓
保存到 cluster.json 失败:… / 读取 cluster.json 失败:…落盘读写问题 ⇒ 重试;反复失败按 §九 报障 ✓

六、怎么验证搭好了(三层,⚠ 没有"一键检测")

⚠ 先说清:单台那一侧有「测试连接」按钮;集群这一侧没有——它靠自动轮询 ✓

  1. 顶栏「算力」的三色灯(悬停看明细):健康度显示 不可达 / 部分节点异常 / 健康 ✓
  2. 「算力集群」页的健康条(本页每 4 秒自动探一次):
  • 汇总:N/M 节点可达 ✓
  • 逐节点:运行X/排队Y 在途Z/W(W=该台并发上限);不可达的显示 不可达 ✓
  • ⭐ 顺便看收益:多台同时出现 运行 1 ⇒ 并行已生效(见 §二·2.3)✓
  • 附加告警:⚠同机N条(同一台机器被配了多条)✓
  1. 跑一个轻模板端到端确认:按《快速开始(云端算力)》的"跑通标准"走一遍 ⇒ 有产物才算真通 ✓

七、它会怎么挑机器(先知道,少困惑)

规则说明
负载怎么算该节点的 运行 + 排队 + 本应用在途任务数 ⇒ 取最低的 ✓
并发优先先挑未超并发上限(maxConcurrentJobs)的;都满了 ⇒ 取负载最低那台(=排进它的队)✓
不可达的排最后不可达节点永远不被选中 ✓
无 GPU 的排除报 无可用 GPU(CPU 模式)⇒ 已排除出调度 ⇒ 该节点不参与 ✓
⭐ 多台在池 ⇒ 提交时"有得挑"这正是 §二·收益 1/2 的来源:有空的机器就被选走,而不是全挤在一台上排队 ✓
⚠ 只在"提交那一刻"选机任务落定后只认那台:不会中途换机器,也不会"失败自动换台重试" ⇒ 想换目标就重新运行 ✓

八、搭完之后最常遇到的三件事(含排错)

现象原因 → 处置
健康条掉一个 不可达那台关机了,或开机后换了域名(云实例常见)⇒ 回设置里更新 baseUrl ✓(见《故障速查(云端)》)
任务一直"排队中"那台的并发上限满了(默认 1)⇒ 等它跑完;想更快就调大 maxConcurrentJobs 或再加一台 ✓(⚠ 排队不等于卡死)
提示 集群节点连续不可达,本次已回退到单台 ComfyUI(你的集群配置未被改动,节点恢复后会自动启用)全部节点都探不通 ⇒ 先查网络与地址;配置没被改,节点恢复会自动启用 ✓
健康条出现 ⚠同机N条同一台机器在集群里配了多条(或与单台的地址重复)⇒ 建议只保留一处(两处配置不会互相同步,改一处另一处不跟)✓
提示 节点 id 与引擎保留值同名…请改掉会造成任务归属串台 ⇒ 换一个 id ✓

九、一句话总结(+ ⚠ 它做不到什么)


收益:多台进池 ⇒ 批量总时长摊薄 · 长任务不堵线 · 交互不被挤 · 坏的只少一台 · 峰值可弹性 ✓
门槛:每台只跑 ComfyUI + 复制一行 JSON ⇒ 本机那一台就已经算进池了 ✓
⇒ 买的是"更短的总时长 + 更稳的产线",不是"更便宜的单价" ✓

⚠ 四条边界(吹归吹,这些它真做不到):

别指望实际
让单个任务更快这是任务级并行,不做模型拆分 ⇒ 一镜 10 分钟还是 10 分钟 ✓
自动换台重试提交后只认那台;要换目标得重新运行 ✓
无限并行受每台并发上限与各台权重是否齐约束;某台缺模型 ⇒ 轮到它就挂("模型找不到")✓
更省钱多台并行=多台同时计费 ⇒ 省的是时间,账单看机器小时 ✓

⚠ 报障时给这三样:健康条截图(哪台不可达)· 该节点的 baseUrl 与 inputDirectory(可打码)· 具体报错原文 ✓

来源:E:/workbuddyProj/unlimitCanvas/ai_manual/cloud_gpu/05-算力集群的搭建.md