面向艺术的 AI 工程——与 comfyanonymous 对谈
摘要
ComfyUI 的创始押注,是打造强大的工作流界面,而不是再做一个简化版界面。 Comfy 于2022年10月发现 Stable Diffusion,当时一行 PyTorch 都没写过;他在2023年1月1日启动项目,1月16日发布,遵循的逆向思路是:「大家都在做易用的界面,那我们就做一个难用的界面。」
ComfyUI 的破圈靠的是实际可用性:对很多人来说,它成了在普通 GPU 上运行 SDXL 的现实方案。 SDXL 的代码早于受限的0.9 checkpoint 发布,该 checkpoint 随后泄露;ComfyUI 快速修复用户问题,而 AUTOMATIC1111 的实现对许多用户来说效率过低。很多人几乎没有别的选择,只能使用 ComfyUI。
开放图像模型的采用,取决于实质性提升和发布势能。 Comfy 认为 FLUX 可能是综合表现最好的模型,而 SD 3.5 的2.5B和8B模型或许更具创造性。Comfy 曾认为 Stable Cascade 比 SDXL 更进一步,但它在红队测试中滞留了约3个月,发布后仅1周就被 SD3 的公告盖过。
ComfyUI 本地执行的优势,在于针对不同硬件配置进行内存感知式调度。 它会估算每个采样任务的内存需求,并尽可能少地卸载已加载状态,在 Windows 的 NVIDIA 驱动开始将显存溢出到内存、性能崩溃之前走过那条「细线」;AMD 在 Linux 上仍可用,但在 Windows 上仍问题重重,等待 ROCm 和 PyTorch ROCm 获得真正完善的支持。
定制化技术栈正逐渐成为跨模型世代的兼容层,而共享组件比模型品牌更重要。 为 SD 1.5 训练的 Textual Inversion 仍可通过兼容的文本编码器用于 SDXL 和 SD3,但随着条件信息被稀释,效果会减弱;LoRA 依然具备可移植性和推理效率,因为它的低秩权重差异会在采样前应用,之后执行恢复正常速度。
自定义节点的低门槛创建,让 ComfyUI 从图像界面变成了通用工作流平台,也带来了生态扩张和功能重复。 用户已将它连接到 Krita,做出一款纹理由工作流生成的 Wolfenstein 风格游戏,并加入 YouTube 下载器等数据导入节点;大量重复的自定义节点功能,正是核心项目试图解决的问题。
商业化路径至少在开源侧仍保留本地执行,同时加入打包后的易用性、云端推理和潜在的企业产品。 Version 1 旨在为 Windows、并希望也为 Mac 带来更易用的打包体验,但时间表仍只有「很快」;Comfy 欢迎第三方围绕 ComfyUI 创业,因为这些使用会扩大生态。
精读
1. ComfyUI 起于对 AUTOMATIC1111 无法表达的实验需求
Comfy 于2022年10月接触 Stable Diffusion,背景是基础软件开发和自动化,没有图像生成经验,也「一行 PyTorch 都没写过」。对「生成图像上瘾」成为他从工作流入手学习整套技术栈的动力。
最初的约束来自高分辨率修复:先低分辨率生成,再放大,最后精修。Comfy 想使用不同的采样器、步数和设置,最终还想在第二遍使用不同模型;继续修改 AUTOMATIC1111 比单独做一个界面更难。于是他在2023年1月1日开始编码,1月16日发布 ComfyUI。
区域条件控制成为第一波采用催化剂:为不同区域分配不同提示词,让每个区域和整张图都经过每一步扩散,再对结果取平均。结构相近的 MultiDiffusion 论文约1个月后出现。只有共享潜空间的模型才能共同参与——SD 1.5 的不同变体可以混用,但 SDXL 与 SD 1.5 不行。
2. 模型赢家既要有肉眼可见的跃升,也要拥有不被打断的发布势能
Comfy 当前的模型判断带有保留:FLUX 可能是综合表现最好的模型,尤其适合看重一致性的场景。SD 3.5 提供2.5B和8B两个模型,体量小于 FLUX;如果目标是更具创造性、而非可预测的一致性,它可能更合适。
主持人提出,社区会整体抛弃每一代旧模型;Comfy 的判断正好相反。用户只有在出现显著改进时才会迁移:SD 1.5 仍保有大量使用量,而 SD2 因提升不足基本被忽略。大多数工作流在结构上仍可迁移,但提示词可能需要彻底重写。
Stable Cascade 是 Comfy 用来说明发布时机如何压过技术实力的反面案例。模型在发布前约3个月就已准备好,却一直卡在红队测试阶段;最终发布时,SD3 在1周后宣布。势能被夺走,围绕它构建的东西也很少。主持人还指出,「Cascade」这个名字让人感觉它是主开发树上的一个分支;Comfy 则确认其作者是 Würstchen 研究团队成员,他们在发布后立即离开 Stability。
评估仍然审美化且非正式:用户大多只是生成样本,然后判断「我觉得这张图不错」。Comfy 的警告是,能力与品味并不一致——「互联网上大多数图像都很丑」,因此,一个聪明且一致性很强、却未经筛选训练的模型,仍可能无法生成艺术家想要的风格。
3. 条件控制技术依赖共享表征,也会在表征变深处失效
Textual Inversion 本质上是在训练一个新词:提示词变成 token,token 变成向量,训练过程再找到一个能代表输入图像的向量。主持人认为它的样本效率出人意料地高,但 Comfy 表示社区基本已经停止使用,尽管据称 Stability 内部的 T5-XXL 实验效果很好。
兼容性取决于共享编码器。SD 1.5 的 Textual Inversion 仍可用于 SDXL,因为 SDXL 的两个编码器中有一个同样是 CLIP-L,但效果会变弱;SD3 有3个编码器,稀释效应更明显。Comfy 认为,T5-XXL inversion 可能可以跨模型使用,只要这些模型共享 T5-XXL,但他明确表示这仍需要测试。
标准 CLIP 接受77个 token,LongCLIP 则扩展到256个。早期的长提示词技巧只是把文本拆成每段77个 token,分别编码,最后再拼接结果。提示词加权同样是在空提示词向量与输入提示词向量之间做插值,但这种技巧适用于较浅的 CLIP-L,在更深的 T5-XXL 上则「完全不起作用」;基于语言的提示方式或许可以弥补这一点。
LoRA 则通过两个低秩矩阵表示基础权重与微调权重之间的差异。这些小巧、可移植的矩阵会在采样前应用到模型权重上,只带来短暂的启动延迟,之后推理速度恢复正常。LoCon、LoHa 及相关变体,都是表达这种权重差异的替代方案。
4. 本地性能取决于将界面与内存感知式执行引擎分离
Comfy 对性能进行了有意优化:异步队列、图的一部分发生变化后选择性重新执行,以及本地优先的内存管理。构建前端时,他发现 JavaScript 库 LiteGraph 已经提供了节点界面,于是将其接入后端,没有把时间花在开发前端上。对于 Gradio,他认为其将界面和后端逻辑紧密耦合,适合快速制作 ML 演示,但让长期维护的软件更难开发。
内存管理仍是「最他妈让人头疼的事」。模型较小时,逐个加载和卸载尚可接受;但在4090上,一个约10GB的模型每次加载都可能耗时数秒。如今 ComfyUI 会估算下一次采样操作的内存需求,只移除已加载模型状态中为腾出空间所必需的最小部分。
危险边界在于 Windows 上 NVIDIA 显存超额分配:驱动开始将数据分页到系统内存,任务在技术上仍会继续,但速度会慢到难以接受。Comfy 认为 AMD 在 Linux 上可以运行,只是比价格相当的 NVIDIA GPU 更慢;但在 ROCm 及其 PyTorch 构建在 Windows 上正常工作之前,Windows 支持仍然很差。
5. 可扩展性将 ComfyUI 从图像工具推向通用多模态管线
核心控制项被分成多个难度层级:4个采样器节点从易到难排列,普通节点提供基础设置,高级节点则暴露单独的组件和设置。Comfy 建议逐步降低扩散步数,直到输出质量开始恶化;CFG 大致像图像对比度一样工作,即放大正向预测与负向预测之间的差值。CFG 为1.0时,负面提示词不会被使用,采样速度会提升至原来的2倍。
自定义节点让 ComfyUI 成为 Krita、数据导入工具以及各种实验的后端,其中包括一款 Wolfenstein 风格的游戏,其生成纹理就是由工作流输入。在官方注册表推出前,ComfyUI Manager 的维护者每天搜索 GitHub,手动添加节点;注册表旨在减少这项工作。许多自定义节点包提供相近功能,项目正试图将其中一部分能力纳入核心。
视频暴露出一个重要的架构分界。Stable Video Diffusion 在 SD 2 的基础上加入时间注意力,与 AnimateDiff 一样,仍使用2D潜空间,只在空间维度进行压缩。Comfy 将「真正的视频模型」限定为 Mochi 这类系统:它们使用3D潜空间,允许模型在空间中移动,并通过时间 VAE 同时压缩时间维度。他实现 Mochi 是因为它看起来最强,同时认为 CogVideoX 也是一个不错的开放模型。
6. SDXL 的采用将个人项目带入本地优先的商业模式
区域条件控制的 Reddit 帖子发表于2023年1月底或2月初;Olivio Sarikas 在3月发布的视频,为 ComfyUI 带来第一波真正的关注。Stability AI 于2023年6月聘用 Comfy,因为公司希望测试 SDXL 基础模型与精修模型的串联。精修模型是在更低的时间步上训练的,测试显示将两者串联可以提升质量,但用户后来基本已经忘记了这件事。
SDXL 不寻常的发布流程加速了 ComfyUI 的增长。代码在模型 checkpoint 之前发布,0.9 的访问权提供给注册用户,但限制为教育邮箱,随后 checkpoint 泄露。对许多人来说,ComfyUI 是唯一能轻松运行 SDXL 的方式;相比之下,AUTOMATIC1111 的快速实现效率过低,普通 GPU 无法有效运行——后端效率因此成为项目的增长引擎。
当时核心后端仍主要由 Comfy 负责,团队的大部分精力则转向这个历史上长期被忽视的前端。项目正在招聘,预计会增加后端人员。计划中的 Version 1 将是一个面向 Windows、并希望也面向 Mac 的打包式易安装版本,但 Comfy 只承诺「很快」发布。
Comfy 表示,至少在开源侧,他会继续把本地模型执行打造为最佳选择,同时辅以云端推理和潜在的企业产品。他欢迎围绕 ComfyUI 创业的初创公司,因为即便没有直接贡献,这些公司的使用也会扩大生态。文本目前已可通过自定义节点运行,但除非出现强大的开放文本扩散模型,否则原生支持的优先级仍较低。