本文档介绍了 ComfyUI 中 Stable Diffusion 3 (SD3) 和 Flux 模型的实现,这些模型代表了下一代基于 transformer 的扩散模型。这些模型使用流匹配(flow matching)而非传统的基于噪声的扩散,采用多编码器文本条件化系统,并实现了针对高分辨率生成的优化的高级注意力机制。
有关传统的基于 UNet 的扩散模型的信息,请参阅 UNet 和注意力。有关采样和调度器方面的具体细节,请参阅 采样器和调度器。
Flux 模型实现了一个双流 transformer 架构,具有单独的图像和文本处理通道,通过注意力机制汇聚。核心架构在 Flux 类中定义。
来源:comfy/ldm/flux/model.py19-35 comfy/ldm/flux/model.py37-90
FluxParams 数据类定义了模型配置,而 Flux 类实现了通过双流和单流处理块的完整前向传播。
Flux 使用 RoPE (旋转位置嵌入) 和优化的注意力机制
来源:comfy/ldm/flux/math.py9-21 comfy/ldm/flux/math.py24-36
双流架构在融合之前单独处理图像和文本
| 层类型 | 目的 | 关键组件 |
|---|---|---|
DoubleStreamBlock | 双通道处理 | img_mod、txt_mod、联合注意力 |
SingleStreamBlock | 融合处理 | 组合 QKV、并行 MLP |
EmbedND | 位置编码 | 多维 RoPE |
MLPEmbedder | 特征嵌入 | 线性 → SiLU → 线性 |
来源:comfy/ldm/flux/layers.py132-208 comfy/ldm/flux/layers.py211-261
SD3 使用包含 CLIP-L、CLIP-G 和 T5-XXL 编码器的三编码器文本条件化系统,提供增强的文本理解和控制能力。
来源:comfy_extras/nodes_sd3.py9-26 comfy_extras/nodes_sd3.py48-85
SD3 在 16 通道潜在空间上操作,下采样率为 8 倍
来源:comfy_extras/nodes_sd3.py29-45
Flux 和 SD3 实现流匹配,这与传统的基于噪声的扩散不同
| 方面 | 传统扩散 | 流匹配 (Flux/SD3) |
|---|---|---|
| 进程 | 添加/移除噪声 | 直接路径插值 |
| 训练目标 | 噪声预测 | 速度预测 |
| 采样 | 去噪步 | 流积分 |
| 引导 | CFG 作用于噪声 | 直接流引导 |
| 时间步 | 噪声调度 | 流时间 |
流匹配过程使用速度预测而不是噪声预测
来源:comfy/ldm/flux/model.py91-103 comfy/ldm/flux/model.py195-211
ComfyUI 提供了 Flux 模型交互的专用节点
来源:comfy_extras/nodes_flux.py3-21
| 节点 | 目的 | 参数 |
|---|---|---|
FluxGuidance | 应用引导缩放 | conditioning、guidance |
FluxDisableGuidance | 完全禁用引导 | conditioning |
来源:comfy_extras/nodes_flux.py23-56
Flux 和 SD3 都支持 ControlNet 进行条件生成
来源:comfy/ldm/flux/controlnet.py52-178 comfy/ldm/flux/controlnet.py180-206
跳层引导通过选择性地跳过负条件化期间的 transformer 层来增强结构细节
来源:comfy_extras/nodes_slg.py6-79 comfy_extras/nodes_sd3.py104-124
跳层引导的工作原理是
来源:comfy_extras/nodes_slg.py30-78
ComfyUI 会自动检测模型类型并应用相应的配置。有关模型检测的详细信息,请参阅 模型配置和检测。
Flux 和 SD3 模型支持与其他 ComfyUI 模型相同的内存管理功能
有关详细的内存管理,请参阅 内存管理。
来源:comfy/ldm/flux/model.py42-43 comfy_extras/nodes_sd3.py29-45