ControlNet Pipeline 算子节点
为已构建的主干扩散管线包装一层 ControlNet 接口,使其在生成推理阶段能够实时接收多模态空间引导约束。
算子所属分类:ModularDiffusion/Pipeline
核心速查 (TL;DR)
- 位于管线装配与去噪生成之间:串联在 Pipeline Builder 与 Generate Media Latents 之间——它将底层缓存的基础管线动态重连转换为兼容 ControlNet 的衍生变体;
- 接收
control_net配置列表:支持连入一个或多个来自 Configure ControlNet 的配置实体。在底层模型机制支持的前提下(如 Flux Union 等架构),原生支持多个 ControlNet 空间控制网络多重堆叠; - 输出端口与原管线平替兼容:输出的
controlnet_pipeline端口类型依然为标准的Pipeline Config——可直接无缝替换原基础管线输入至下游所有计算节点。
典型工作流编排拓扑
Pipeline Builder ─────→ [ControlNet Pipeline] ──→ Generate Media Latents ──→ Decode Media Latent
Configure ControlNet ─↗
Configure ControlNet ─↗
节点外观预览

输入端口规范 (Inputs)
| 端口名称 | 数据类型 | 是否必填 | 详细功能与业务规范说明 |
|---|---|---|---|
pipeline |
Pipeline Config |
是 | 来自上游基础 Pipeline Builder 节点。输入的基础管线严禁为已经被其他 ControlNet 节点包装过的变体。 |
control_nets |
list[control_net] |
是 | 接收一个或多个来自 Configure ControlNet 的控制网定义。所有控制网项的架构体系必须与输入的基础管线完全吻合。 |
输出端口矩阵 (Outputs)
| 端口名称 | 数据类型 | 详细功能与业务规范说明 |
|---|---|---|
controlnet_pipeline |
Pipeline Config |
已成功挂载并重组好 ControlNet 调度的管线凭据对象。 |
control_parameters |
control_parameters |
透传上游已连接的所有 ControlNet 运行期动态超参(如权重起止步长等)。直接连入 Generate Media Latents 的 controlnet_parameters 输入端口。 |
logs |
str |
记录 ControlNet 挂载、权重装配与解析出的配置 Hash 指纹的详细日志。 |
避坑技巧与最佳实践 (Tips & pitfalls)
- 架构提供方必须严格一致 (Provider match):每个连接的 ControlNet 的
provider属性必须与基础主干管线的provider严格相等(例如 SDXL 的 ControlNet 严禁与 Flux 管线混用)——节点在执行前会发起严格的静态校验。 - 管线类兼容性校验:并非所有基础管线原生支持多重 ControlNet 堆叠;该算子在执行装配前会校验底层 Driver,若当前模型组合无法共存会主动弹出报错并明确指出不兼容项。
- 在单节点内聚合多个 ControlNet,严禁串联两个本节点:若需要同时叠加姿态 (OpenPose) 与边缘 (Canny) 双重控制,请在同一个 ControlNet Pipeline 节点的
control_nets列表中传入两个配置,绝对不要将一个 ControlNet Pipeline 节点的输出插槽再插给第二个 ControlNet Pipeline 节点(输入端遇到已有 ControlNet 资产时会直接抛错阻断)。 - 底模复用与权重增量加载机制:节点仅按需加载选定 ControlNet 的空间特征增量网络;上游庞大的基础扩散主干模型直接从显存缓存池中原地复用,绝不重复拉取。
推荐延伸阅读
- Configure ControlNet — 负责声明具体引导图、控制权重与起止区间的配置算子
- Modular Diffusion Pipeline Builder — 必须作为前置上游提供基础管线
- 开箱即用工作流样板:
workflows/templates/ControlnetText2Image.py