本文档的目的是让大家更容易和深入的理解comfyui 是“节点式可视化界面的模型操作工具”的这件事。为使用者提供一个便于理解comfyui的概念模型,同时为开发者提供如何高度自由和透明的实现自己所需功能的简单指引。
节点式可视化界面的模型操作工具可以结合下图来理解(最后可以再回来看看这里)
comfyui 的核心目的就是操作模型来完成生成图片,视频等工作。为了完成这些工作需要用不同类型的节点构建工作流来实现。而底层(comfyui core)负责管理这些节点如何执行和如何使用资源(在显存里的模型和中间数据怎么缓存;是用哪个资源是CPU,还是GPU来完成计算)。
我们把节点分为3类(并不是comfyui官方的概念,但有助于我们理解)。输入类的节点比如用来加载图片,加载lora,加载checkpoint等的节点;输出类的节点比如saveImage,预览Image等的节点;最后是控制类的节点,它们控制着模型以目标的形式完成主要的计算类的工作。
接下来的文章为了更好的理解comfyui,主要涉及两个方面:1,comfyui的核心概念;2,comfyui 用来实现功能的底层机制。(本篇主要讲核心概念)
节点/工作流:
每个节点代表一个独立功能模块(如模型加载、文本编码、图像采样),通过输入输出端口连接形成数据流。节点分为核心节点(内置功能)和自定义节点(社区扩展),支持拖拽式组合与参数动态调整。
工作流则是由不同功能的节点组合而成,比如一个典型的工作流如(图示中每个方框为一个节点):
comfyui的使用过程就是不断调整节点晚上工作流的过程。
VAE,CLIP/T5,StableDiffusion/FLUX:
节点到底要做什么都围绕着模型相关的3个核心构成部分展开,也就是VAE,CLIP/T5,StableDiffusion/FLUX。 这3个概念都是模型相关,所以我们先来看看SD/FLUX的模型架构:
上面2个图看起来很复杂,可以简单的抽象一下把2个模型统一来理解(忽略DiT和Unet这个细节)
如下图:
从左到右看,提示词经过CLIP或者T5转化为去噪过程能处理的潜空间的向量。同样的,图片经过VAE Encoder 转化到潜空间。在潜空间内模型(也就是StableDiffusion/FLUX)完成了去噪的过程,输出的Latent被VAE Decoder 最终转化为目标图片。
有了大体的了解,我们接下来会详细的介绍这3个概念。
1. VAE:图像与潜空间的“双向翻译器”
VAE(变分自编码器)是像素空间与潜空间的转换桥梁,直接影响生成图像的细节质量和计算效率。
编码器:将 512x512 图像压缩至 64x64 的潜在表示,降低计算复杂度。
解码器:将去噪后的潜在张量还原为可视图像,支持高清输出(如 1024x1024)。
2. CLIP/T5:多模态文本编码的“语义解析器”
CLIP 和 T5 共同承担文本理解任务,但分工不同:
CLIP:基于对比学习的视觉-语言模型,擅长关键词提取(如“赛博朋克风”“细腻皮肤”)。
输出 77 个 768 维向量,控制生成方向;
支持正向/负向提示词分离,通过 Conditioning(Concat) 节点合并多条件。
T5(FLUX 专用):自然语言模型,解析长文本描述(如“晨光下少女回眸,发丝随风飘动”)。
生成 512 维语义向量,补充 CLIP 未覆盖的细节;
在 FLUX 工作流中与 CLIP 并联,实现“关键词+场景描述”双引导。
FLUX 的 双文本编码架构 突破传统 CLIP 的语义限制,支持复杂叙事生成(如分镜脚本);
T5 的 FP8 量化版本(如 t5xxl_fp8)降低显存需求,适配 8GB 显卡。
3. Stable Diffusion/FLUX:生成引擎的“代际进化”
Stable Diffusion:
核心架构:基于 UNet 的扩散模型,通过 20-50 步迭代去噪生成图像;
参数控制:
CFG Scale(7-15):控制提示词权重,值过高易导致生硬;
Sampler:DPM++ 2M Karras 平衡速度与质量,Euler a 适合艺术风格。
FLUX:
并行扩散架构:Transformer 替代 UNet,生成质量超越 SD3,支持文字嵌入(如海报标语);
多版本适配:
Dev 版:开源最高质量模型,需 16G+ 显存;
Schnell 版:4-8 步快速出图,适配 8G 显存;
硬件优化:支持 FP8/GGUF 量化模型,云端部署降低本地负载。
生成流程对比:
以上三元素协作流程如下:
输入阶段:
用户提示词经 CLIP 提取关键词,T5 解析长文本,生成语义向量;
生成阶段:
Stable Diffusion/FLUX 以语义向量为条件,去噪生成潜在表示;
输出阶段:
VAE 解码潜在向量为图像,完成高清渲染。
回看本章节的第3个图,现在就很清楚了。
潜在空间(Latent Space):
潜在空间(Latent Space)是生成模型中的核心概念,指通过数学方法将高维数据(如图像、文本)压缩到低维连续向量空间中的抽象表示。其本质是数据特征的压缩编码,使模型能够高效学习、生成和操控信息。以下是其核心要点:
数学本质
潜在空间是低维连续向量空间,每个向量对应数据的压缩表示(如网页2所述,VAE通过编码器将图像压缩为潜在向量,再通过解码器重构)。这种压缩保留了数据的核心特征,同时过滤冗余噪声。
连续性:微小向量变化对应生成结果的平滑过渡(如调整潜在向量可让猫眼逐渐睁开)。
插值性:两向量的线性组合可生成渐变混合体(如猫与狗向量融合生成半猫半狗图像)。
与语义空间的关系
潜在空间包含语义信息,但更广泛。而语义空间专指词/句意义的关联性。例如,“猫”和“狗”在语义空间中因同属动物而接近,但在潜在空间中可能因颜色、背景等特征与其他数据产生关联。
有了以上的基础概念的理解,再来看看下面这2个文章,应该会有更深的理解
https://www.zhihu.com/search?type=content&q=comfyui%E5%8E%9F%E7%90%86
ComfyUI进阶篇:ComfyUI核心节点(一) - AI实战家 - 博客园
实现机制和代码层的东西可以先参考下面的链接:
https://zhuanlan.zhihu.com/p/692605784
后续补充最新的核心代码+ node 相关的代码解析