ComfyUI作为节点式 Stable Diffusion 前端,最强大的地方就在于工作流的自由组合能力。但在默认情况下,一个工作流往往只挂载一个Checkpoint加载器,想要对比不同模型(比如 SD1.5、SDXL、Flux)的出图效果,就得反复点击切换模型再重新排队,非常影响效率。实际上,ComfyUI完全支持在一个工作流中同时放置多个Checkpoint加载器,通过路由节点或切换节点实现并联加载、按需调用。本文将从基础搭建、切换方案、显存管理三个层面,完整讲解多模型并联的实现方法。

一、最基础的多模型并联:多个加载器加切换节点
ComfyUI允许多个CheckpointLoaderSimple节点同时存在于一个工作流中,每个节点独立加载一个模型文件。关键在于如何把多个模型输出汇聚到一个采样器上。最直接的做法是使用条件切换节点,只把其中一个分支的数据传递给后续节点。
以最常用的方案为例,可以借助rgthree-comfy自定义节点包中的Any Switch节点,或者ComfyUI官方后来提供的Primitive控制思路。Any Switch 接收多个输入,当某个输入为空时自动跳过,优先使用非空的那个。搭建步骤如下:
工作流结构示意:
CheckpointLoaderSimple (SDXL) ──┐
├── Any Switch ── KSampler
CheckpointLoaderSimple (SD1.5) ──┘
Any Switch 规则:
- 从上到下找到第一个非空输入并输出
- 空输入(被禁用的分支)会被自动跳过
- 输出类型为 MODEL / CLIP / VAE 三件套时可分别接三个Switch需要注意的是,Checkpoint 加载器输出三组数据:MODEL、CLIP、VAE。如果做模型切换,这三条线都必须一起切换,否则会出现提示词用 A 模型的 CLIP 编码、采样却用 B 模型的情况,导致画面崩坏或者报维度不匹配错误。所以更推荐用一个节点同时处理三路输出的方案。
二、推荐方案:ModelMergeOrSwitch 与三合一切换节点
手工连三组 Switch 线路繁琐且容易出错,社区为此提供了更优雅的节点。比如 ComfyUI 自带的核心节点中就有 Primitive 类型控制,而 ComfyUI-Impact-Pack、rgthree-comfy 等扩展包则提供了专门的模型切换节点。
rgthree-comfy 的 Context 系列节点是一个很好的选择。Context 节点可以把 MODEL、CLIP、VAE、CONDITIONING、LATENT 等常用数据打包成一个上下文对象传递,配套的 Context Switch 节点可以接收多个 Context 输入,通过切换开关决定输出哪一路。这样整个模型链只需要一根粗线连接,工作流看起来非常清爽:
搭建流程:
1. 每个模型一条完整链路:
CheckpointLoaderSimple(SDXL)
→ CLIPTextEncode(正向) + CLIPTextEncode(反向)
→ Reroute 汇入 Context (原始节点)
2. 多个 Context 汇入 Context Switch (两个输入)
3. Context Switch 输出 → Context to KSampler
→ KSampler → VAE Decode → Save Image
4. 切换时只需在 Context Switch 上选择 Which 输入
无需重新连线,也无需手动换模型文件这种结构的最大好处是条件编码跟着模型走。SDXL 的提示词编码用 SDXL 的 CLIP,切到 SD1.5 时整条 Context 全部替换,不会出现模型与 CLIP 错配的问题。另外,Conditioning Combine、ControlNet 等附加条件也可以在各自的分支里提前接好,切换时一并生效。
三、显存管理:并联不等于同时常驻
很多用户担心:三个大模型同时加载会不会爆显存?答案是分情况的。ComfyUI 对模型权重采用惰性加载和显存自动换页机制:当某条链路被 Switch 屏蔽后,它的模型权重可能仍留在显存里(如果之前执行过),也可能已被卸载。实际执行时,ComfyUI 会把当前需要使用的模型换入显存,把不用的换出到内存。
也就是说,多模型并联工作流的显存压力主要取决于同一批次执行中真正参与推理的模型数量,而不是加载器数量。如果你每次只激活一条分支,8GB 显存的显卡也可以挂着三个模型切换使用。但要注意几个细节:
- SDXL 与 Flux 的模型本体就占用 6GB 到 12GB 显存,尽量避免在
batch_size很大时同时激活两条大模型分支。 - 使用 Lora 时,挂在不同分支上的 Lora 应该各自连接到对应模型的 LoraLoader,不要把 SD1.5 的 Lora 挂到 SDXL 分支上。
- 出现 CUDA out of memory 报错时,可以先在命令行或界面中执行队列清理,让 ComfyUI 卸载所有模型,再重新执行。
- 开启低显存模式(启动参数
--lowvram)会让执行速度下降,建议优先靠减少同时激活的分支数来解决。
另外补充一个进阶技巧:如果希望对比多个模型同一组提示词的出图差异,可以复制多条完整的采样分支,每条分支挂不同模型,最后把图片拼接到一个 Pre view Image 或用 Image Concat 节点合并输出。这样一次执行就能拿到多张对比图,代价是显存和时间成倍增加,适合做模型评测。
四、常见问题排查
切换后画面完全崩坏:多半是 MODEL 和 CLIP 没有同步切换,检查三条输出线是否来自同一个分支。SD1.5 是 4 通道 Latent,SDXL 是 4 通道但模型结构不同,Flux 则是 16 通道,混用会直接报张量形状错误。
Latent 尺寸不匹配:SD1.5 常用 512x512,SDXL 推荐 1024x1024。切换模型时 Latent 的宽高参数也要跟着变,可以把 EmptyLatentImage 也放进各自分支,或者用变量节点统一控制再乘以缩放系数。
模型列表里找不到文件:确认模型文件放在 ComfyUI\models\checkpoints 目录下,刷新页面即可。如果文件较多,建议在目录里建子文件夹分类,ComfyUI 会递归扫描。
掌握多模型并联之后,你还可以进一步扩展:并联不同 VAE、并联放大模型、甚至并联整套 API 工作流。节点式的架构决定了只要输出类型匹配,任何组件都可以并联切换,这也是 ComfyUI 相比传统 WebUI 最值得深入挖掘的能力之一。
ComfyUI多模型并联Checkpoint切换显存优化修改时间:2026-09-02 06:58:31