LAYER 04 · 工作流工程

工作流工程:
把 ComfyUI 变成流水线

会拉节点只是入门。商业级 ComfyUI 要的是模板化、参数化、批量化:换主体图、品牌色和画幅,十分钟交付三种尺寸。

10 节 · 约 8 小时5 个核心模块进阶

START新手起步:算力与插件急救

在学节点之前,先把环境跑起来。ComfyUI 对显存比普通软件敏感,本地机器不够时不要硬扛,直接上云算力更省时间。

本地显存门槛

场景建议显存说明
SD1.5 / 小图测试6–8GB能跑,但 ControlNet、放大和批量会吃力
SDXL 常规工作流推荐 12GB 以上12GB 是舒服起步;16GB 以上更稳
多 ControlNet + 放大 + 批量16–24GB商业项目建议留足余量,避免反复 OOM

显存不够时先降分辨率、batch size 和同时加载的模型;仍然不够,就用云平台。不要用「能打开界面」来判断能不能跑商业流程。

本地跑不动:用云算力

推荐的云平台:AutoDL、揽睿星舟。选择带 ComfyUI 镜像的实例,按小时计费;先租低配跑通流程,再按项目升级显卡。

  • 优先选预装 ComfyUI / PyTorch 的镜像,省去环境配置。
  • 把模型放在数据盘,实例释放后模型还在;系统盘通常不保留。
  • 先测试 1024 出图和一次放大,确认显存足够再开批量。

第一步:安装 ComfyUI Manager

ComfyUI Manager 是节点和插件的管理器。安装后,遇到节点标红,优先用它解决,而不是手动复制一堆文件。

进入 ComfyUI 的 custom_nodes 目录。
安装 ComfyUI-Manager,重启 ComfyUI。
刷新页面,确认顶部出现 Manager 按钮。
打开工作流,节点标红时点击 Install Missing Custom Nodes。
安装完成后重启,再重新打开工作流检查是否还缺节点。

模型放在哪个文件夹

模型类型目录用途
CheckpointsComfyUI/models/checkpoints底模,决定整体画风和能力
LoRAComfyUI/models/loras人物、产品、风格微调模型
ControlNetComfyUI/models/controlnetCanny、Depth、OpenPose 等控制模型
VAE / Embeddingsmodels/vae、models/embeddings解码器与文本嵌入
新手排查顺序:先确认模型文件存在 → 再看节点是否缺失 → 再检查显存 → 最后才怀疑提示词。

00本层目标

  • 能搭一条完整的产品图生成流水线,而不是散装节点。
  • 理解常用自定义节点包的作用和依赖风险。
  • 把固定值变成可切换输入,实现多尺寸、多版本批处理。
一句话原则:能被复用的工作流,才叫工作流;只能跑一次的,叫演示。

01完整产品图流水线

一条可交付的流水线,至少包含以下环节。先保证结构完整,再逐段优化。

Checkpoint → LoRA(可选)→ CLIP Text Encode(正/负) → Empty Latent → KSampler → VAE Decode → Ultimate SD Upscale → Save Image ControlNet 分支: Load Image → Preprocessor → ControlNet Apply(接在 KSampler 前)
  • 加载:底模、VAE、LoRA 分开管理,命名清楚。
  • 提示词:正向和负向分开编码,不要把负面词塞进正向。
  • 采样:KSampler 固定 seed / steps / CFG 作为可调输入。
  • 放大:先基础出图,再分块放大;不要直接生成超大分辨率。
  • 保存:文件名带项目、版本、画幅和种子,方便追溯。

02自定义节点生态:少而精

自定义节点能提高效率,也会带来依赖和版本风险。商业项目建议只保留稳定、常用的几套。

节点包用途注意
ComfyUI Manager安装、更新、管理自定义节点更新前备份工作流和环境
Impact Pack检测、分割、细节修复、人脸/物体处理模型文件较大,注意显存
Efficiency Nodes简化流程、XY 图表、批量对比适合做参数实验
WAS Node Suite文本、图像、批处理工具节点很多,按需使用
rgthree逻辑控制、上下文、工作流组织适合大型模板
版本管理:记录每个项目使用的 ComfyUI 版本、节点包版本和模型版本;升级前复制一份可回滚的环境。

03模板化:把固定值变成输入

商业工作流的核心不是「节点多」,而是「输入清楚」。把每次都要改的值抽出来,变成可切换的 primitive 或输入组。

  • 主体图:Load Image + ControlNet,固定产品外形。
  • 品牌色:用十六进制色值或色卡图控制背景、道具和光色。
  • 画幅:1:1、4:5、9:16 分别对应不同 Empty Latent,输出多版本。
  • 光线预设:柔光箱、硬光侧逆、逆光轮廓,做成可切换的提示词组。
  • 版本号:工作流 JSON、提示词、模型列表一起存档。

给节点分组、命名、加 Note;把常用参数放在一个「控制面板」区域,接手的人能看懂,自己三个月后也能看懂。

04批处理与 API 调用

当工作流稳定后,下一步是批量。ComfyUI 可以通过队列批量跑提示词,也可以用 /prompt API 提交 JSON 工作流。

  • 一次生成多尺寸:复制 latent 分支,分别连 1:1、4:5、9:16。
  • 一次生成多版本:固定 seed,批量替换灯光/背景/品牌色变量。
  • API 调用:把工作流导出为 API 格式,用脚本替换节点输入,提交到队列。
  • 输出管理:文件名包含项目、版本、尺寸、seed,避免交付时找不到图。

05显存优化:低显存也能跑商业流程

  • 使用 fp16 精度,避免无意义的 fp32 开销。
  • 开启 Tiled VAE、低显存模式、模型分块加载。
  • 优先分块放大,不要直接生成 4K;先 1024 出图,再 Ultimate SD Upscale。
  • 关闭不必要的自定义节点和后台程序;降低 batch size。
  • 把常用模型放在 SSD,减少加载等待。

06API 调用:从手工点按钮到批量生产

当工作流稳定后,下一步是让程序替你点击「生成」。ComfyUI 的 HTTP API 通常从 /prompt 接收一份 API 格式的工作流 JSON,把节点输入替换成变量,然后提交到队列。你可以用 Python、Node 或任何能发 HTTP 请求的语言调用。

POST /prompt { "prompt": { ... 导出的 API 格式工作流 ... }, "client_id": "brand-batch-01" } // 轮询 /history 或订阅 websocket,等待执行完成 // 批量提交时,为每个任务替换: // - 主体图路径 / base64 // - 品牌色 prompt // - Empty Latent 宽高 // - seed

队列管理要注意三件事:给任务加唯一 ID,避免重复提交;控制并发数,别让显存排队爆炸;保存每次请求的输入参数和输出路径。Websocket 进度适合做前端进度条,轮询 /history 适合后台批处理。生产环境建议把工作流 JSON 按版本存档,API 只替换允许变化的输入。

07低显存优化:不换卡也能跑商业流程

商业工作流经常同时加载底模、LoRA、ControlNet 和放大模型,显存很容易顶满。优化的顺序是:先降精度,再分块,再卸载,最后才是降分辨率。不要一上来就把图生成得很小,结构错了再放大也救不回来。

手段作用注意
--lowvram / --medvram把部分模型移出显存,按需加载速度变慢,但能避免直接 OOM;按显卡选择。
fp16 / fp8降低权重精度,减少显存占用fp8 更省,但可能影响细节;先做对比。
Tiled VAE分块解码大图注意接缝和边缘伪影,配合 seam fix。
xformers / SDP attention优化注意力计算不同显卡效果不同,开启后测速度与稳定性。
分块采样 / Tiled Diffusion大图分区域生成控制重叠区域,避免拼接痕迹。

实践建议:先用 1024 左右的基础分辨率把结构、光影和姿态确认好,再用 Ultimate SD Upscale 分块放大;batch size 能小不大;关闭后台占显存的程序。低显存不是不能做商业图,而是要把流程拆成更小的步骤。

08ComfyUI 新手常见报错排查

ComfyUI 的报错看起来吓人,但大部分可以按顺序定位。先看控制台第一条红字,再看节点和模型,最后才怀疑工作流本身。下面 5 个是新手最常见的。

1. 显存不足(OOM / OutOfMemory)

最常见

表现:生成到一半报错,控制台出现 OutOfMemoryError,或画面卡死、进程退出。

先把分辨率降到 1024 或更低,batch size 改成 1。
关闭浏览器其他标签、视频软件和占用显存的程序。
启动参数加 --lowvram 或 --medvram,重启 ComfyUI。
开启 Tiled VAE,放大改为 Ultimate SD Upscale 分块。
仍不够就减少同时加载的模型/ControlNet,或换 fp16 / fp8 权重。

2. 节点标红 / 节点缺失

通常是自定义节点没装

表现:工作流打开后节点是红色,提示 Node type not found 或缺少某个类。

先看红色节点名称,确认它来自哪个插件包。
打开 ComfyUI Manager → Install Missing Custom Nodes,安装缺失节点。
重启 ComfyUI,刷新浏览器页面。
如果还红,检查插件是否安装失败,重新安装并查看终端的 Python 报错。
不要直接删除节点;先备份工作流,再按版本安装对应插件。

3. 模型加载失败

路径或文件问题

表现:Load Checkpoint 报错,下拉列表为空,或提示 Error while loading model。

确认模型文件放在 models/checkpoints 对应目录,文件名完整。
检查文件大小是否正常;下载中断的 safetensors 会加载失败。
确认模型架构与节点匹配(SD1.5 / SDXL / Flux 不能混用)。
在 Load Checkpoint 里重新选择模型,确保没有选到 VAE 或 LoRA 文件。
仍失败时看终端完整报错,把缺失的依赖或文件补上,再重启。

4. 生成的画面全黑

先查 VAE 和 latent

表现:流程能跑完,但 Save Image 输出纯黑,或全灰。

检查 VAE 是否匹配底模;SDXL 不要乱挂 SD1.5 的 VAE。
确认 KSampler 的 latent 输入不是空图,Empty Latent 尺寸不为 0。
检查 KSampler 的 steps、CFG 是否被错误设成 0。
检查 VAE Decode 是否接在 KSampler 输出上,而不是接错到 conditioning。
换一个最小工作流(Checkpoint → 正向提示 → KSampler → VAE Decode → Save)验证。

5. 线条连错 / 节点输入接反

工作流问题

表现:节点报类型错误,或画面完全不受提示词影响。

看每个输入端口颜色:MODEL、CLIP、VAE、CONDITIONING、LATENT 不能乱接。
确认 Checkpoint 的 MODEL 接 KSampler 的 model,CLIP 接文本编码,VAE 接 VAE Decode。
正向和负向 conditioning 不要接反;文本编码的 output 要对应 KSampler 的 positive / negative。
从官方或可信模板重新拉一条最小链路,对照连线顺序。
改完先跑一张 512×512 小图验证,再恢复正式分辨率。

09跟着做:三输入、三输出

搭一条产品图流水线:加载 → 正负提示 → KSampler → VAE → 放大 → 保存。
把主体图、品牌色、画幅抽成三个输入。
固定一个产品,分别输出 1:1、4:5、9:16 三个版本。
用同一套工作流换一次品牌色,确认不需要重搭节点。
保存工作流 JSON 和参数清单,命名为 v1.0。

本层验收

一条工作流,改三个输入(主体图、品牌色、画幅),十分钟内产出 1:1 / 4:5 / 9:16 三版成图。

交付物:工作流 JSON + 三个输入的控制面板截图 + 三版成图 + 一条 10 分钟内的操作录屏或步骤记录。
自检清单0 / 5 已完成

10本层自测

为什么不能直接把所有参数写死在节点里?
写死意味着每次换项目都要重搭,容易出错且无法复用。商业工作流要把主体、颜色、画幅等变量抽成输入。
生成 4K 大图最稳的方式是什么?
先在合适分辨率出图并确认结构,再用 Ultimate SD Upscale 分块放大;不要一开始就用超大 latent 硬生成。
ComfyUI API 的核心入口是什么?
通常是 /prompt,提交 API 格式的工作流 JSON;具体字段以当前版本接口文档为准。

下载本文用到的 ComfyUI 工作流

点击下载 .json 文件