简介
学习目标
- 理解ComfyUI的节点化设计理念
- 掌握数据流的概念
- 了解不同类型的数据
- 理解工作流的执行机制
预计学习时间
20分钟
核心概念
模型类型架构
下图展示了ComfyUI中常用的模型类型及其关系:
这个图展示了主要的模型类型: - Checkpoint: 主模型,包含UNet、CLIP和VAE - LoRA: 轻量级适配器,用于风格和角色 - ControlNet: 控制模型,用于精确控制 - VAE: 变分自编码器,用于编解码 - Embedding: 文本嵌入,用于特殊词汇
1. 节点(Node)
节点是ComfyUI的基本构建单元,每个节点执行特定的功能。
- 加载器节点: 加载模型、VAE、LoRA等
- 采样器节点: 执行图像生成过程
- 条件节点: 处理文本提示词
- 后处理节点: 图像处理和增强
- 输出节点: 保存或预览结果
- 工具节点: 辅助功能
每个节点包含: - 输入端口: 接收数据 - 输出端口: 输出数据 - 参数: 配置节点行为
2. 数据类型(Data Types)
ComfyUI使用多种数据类型,通过不同颜色的端口标识:
- 颜色: 蓝色
- 描述: Stable Diffusion模型
- 来源: CheckpointLoaderSimple节点
- 用途: 传递给采样器使用
- 颜色: 紫色
- 描述: 文本编码器
- 来源: CheckpointLoaderSimple节点
- 用途: 编码文本提示词
- 颜色: 橙色
- 描述: 编码后的文本条件
- 来源: CLIPTextEncode节点
- 用途: 指导图像生成
- 颜色: 绿色
- 描述: 图像的潜在表示
- 来源: EmptyLatentImage或采样器
- 用途: 在采样过程中传递
- 颜色: 红色
- 描述: 实际图像数据
- 来源: VAEDecode节点
- 用途: 显示或保存图像
- 颜色: 黄色
- 描述: 图像掩码
- 来源: 各种掩码生成节点
- 用途: 图像修复和编辑
3. 数据流(Data Flow)
数据在节点之间流动,形成工作流:
- 单向流动: 数据从输出端口流向输入端口
- 类型匹配: 端口类型必须匹配才能连接
- 并行处理: 多个节点可以并行执行
- 依赖关系: 节点按依赖顺序执行
CheckpointLoaderSimple
├── MODEL ──────────────┐
├── CLIP ───┬────────────┼── KSampler ─── VAEDecode ─── SaveImage
└── VAE ────┴────────────┘ │
└── samples ──┘
4. 工作流(Workflow)
工作流是由多个节点连接而成的完整流程:
- 模块化: 每个节点独立完成特定功能
- 可复用: 工作流可以保存和加载
- 可分享: 工作流可以导出为JSON
- 可扩展: 可以添加更多节点扩展功能
- 文生图: 从文本生成图像
- 图生图: 从图像生成新图像
- 图像修复: 修复或编辑图像
- 批量处理: 批量生成图像
5. 采样(Sampling)
采样是图像生成的核心过程:
- 初始化: 创建随机噪声
- 迭代: 逐步去噪
- 条件化: 根据提示词引导
- 解码: 转换为实际图像
- steps: 采样步数
- cfg: 提示词相关性
- sampler: 采样算法
- scheduler: 调度策略
- denoise: 去噪强度
6. 潜在空间(Latent Space)
潜在空间是图像的压缩表示:
- 压缩: 比实际图像小得多
- 高效: 在潜在空间操作更快
- 抽象: 包含图像的语义信息
- 创建: EmptyLatentImage节点
- 修改: 采样器节点
- 解码: VAEDecode节点
7. VAE(变分自编码器)
VAE用于在图像和潜在空间之间转换:
- 编码: 图像 → 潜在空间
- 解码: 潜在空间 → 图像
- 压缩: 减少数据量
- 加载: VAELoader节点
- 连接: 连接到VAEDecode或VAEEncode
8. CLIP(文本编码器)
CLIP将文本转换为数值表示:
- 编码: 文本 → 条件向量
- 理解: 理解文本语义
- 匹配: 匹配文本和图像
- 加载: CheckpointLoaderSimple节点
- 编码: CLIPTextEncode节点
- 连接: 连接到采样器
工作流执行机制
执行顺序
- 拓扑排序: 确定节点执行顺序
- 依赖检查: 确保所有输入就绪
- 并行执行: 独立节点并行执行
- 结果传递: 输出传递给下游节点
执行优化
- 缓存: 缓存节点输出
- 惰性求值: 只计算需要的节点
- 批处理: 批量处理多个请求
常见工作流模式
基础文生图
CheckpointLoader → CLIPTextEncode → KSampler → VAEDecode → SaveImage
图生图
ImageLoad → VAEEncode → KSampler → VAEDecode → SaveImage
图像修复
ImageLoad + Mask → KSampler → VAEDecode → SaveImage
LoRA融合
CheckpointLoader → LoraLoader → KSampler → VAEDecode → SaveImage
最佳实践
节点组织
- 逻辑分组: 将相关节点分组
- 清晰布局: 保持工作流整洁
- 添加注释: 使用文本节点说明
数据流设计
- 避免循环: 数据流应该是无环的
- 类型匹配: 确保端口类型匹配
- 最小连接: 只连接必要的端口
性能优化
- 减少节点: 使用更少的节点
- 并行处理: 利用并行执行
- 缓存结果: 重用节点输出
常见问题
Q1: 为什么节点无法连接?
A: 端口类型不匹配,检查端口颜色是否相同。
Q2: 工作流执行顺序是什么?
A: ComfyUI自动根据依赖关系确定执行顺序。
Q3: 如何理解数据流?
A: 数据从输出端口流向输入端口,按依赖关系传递。
Q4: 潜在空间是什么?
A: 潜在空间是图像的压缩表示,用于高效生成。
Q5: VAE和CLIP有什么区别?
A: VAE处理图像和潜在空间,CLIP处理文本和条件。
下一步
理解核心概念后,您可以:
相关资源
更新日志
- 2026-01-26: 初始版本创建