ComfyUI 实战:从0上手跑通一个工作流
最近体验了一下 ComfyUI。作为刚入门的新手,把一些我在配置和运行图像生成工作流中的实践经验记录下来。
前置要求
在实践前,需要具备以下背景知识和技能:
-
基础编程能力:
- 熟悉 Python 编程语言,能够理解和修改简单的 Python 脚本。
- 了解基本的命令行操作,能够在终端中执行命令。
-
图像处理知识:
- 了解基本的图像处理概念,如分辨率、色彩空间等。
- 熟悉常见的图像文件格式(如 JPG、PNG)和处理工具。
-
云计算基础:
- 了解云计算的基本概念,特别是 AWS EC2 服务。
- 能够创建和管理 EC2 实例,了解基本的网络安全设置。
-
Stable Diffusion 基础:
- 对 Stable Diffusion 模型有基本了解,知道其主要用途和工作原理。
- 熟悉 ControlNet、VAE 等相关概念。
-
版本控制:
- 了解 Git 的基本用法,能够克隆仓库、提交更改。
-
环境配置能力:
- 能够设置 Python 虚拟环境。
- 了解如何安装 Python 包和管理依赖。
-
基本的问题排查能力:
- 能够阅读和理解错误日志。
- 具备基本的调试技能,能够解决简单的环境和代码问题。
环境搭建:基础设施与依赖项
硬件环境
本次实验在 AWS 云平台上进行,具体配置如下:
- EC2 实例类型:g4dn.xlarge
- AMI:Deep Learning OSS Nvidia Driver AMI GPU PyTorch 2.4.1 (Ubuntu 22.04) 20240929
选择这个配置的原因:
- g4dn.xlarge 实例配备了 NVIDIA T4 GPU,非常适合运行中等规模的深度学习任务。
- 预装的 Deep Learning AMI 大大简化了环境配置过程,已包含 NVIDIA 驱动和 PyTorch 等必要组件。
软件环境
在此基础上,我们还需要安装一些额外的组件来支持 ComfyUI 的完整功能:
- ComfyUI-Manager:用于管理和安装各种自定义节点的实用工具。
- comfyui_controlnet_aux:执行 ControlNet 相关操作的核心组件。
- rgthree's ComfyUI Nodes:扩展工作流功能的自定义节点集,尤其适用于 LoRA 操作。
提示:加载新工作流时,务必检查节点类型是否齐全。ComfyUI 界面会对缺失组件发出警告。
模型与输入文件准备
最耗时但至关重要的步骤是下载所有必需的模型和输入文件。以下是本次生图工作流所需资源的详细清单,包括下载链接和对应的存储路径:
-
SDXL 模型:
- 模型:LeoSam's HelloWorld XL
- 下载地址:https://civitai.com/models/43977/leosams-helloworld-xl
- 存储路径:ComfyUI/models/checkpoints/
-
VAE 模型:
- 模型:SDXL VAE
- 下载地址:https://huggingface.co/stabilityai/sdxl-vae/blob/main/sdxl_vae.safetensors
- 存储路径:ComfyUI/models/vae/
-
输入图像:
-
ControlNet 模型:
a. 草图控制和风格固定用 T2I-Adapter:- 下载地址:https://huggingface.co/TencentARC/t2i-adapter-sketch-sdxl-1.0/tree/main
- 存储路径:ComfyUI/models/controlnet/TencentARC/t2i-adapter-sketch-sdxl-1.0/diffusion_pytorch_model.fp16.safetensors
b. 深度估计用 SAI XL Depth:
- 下载地址:https://huggingface.co/lllyasviel/sd_control_collection/resolve/7cf256327b341fedc82e00b0d7fb5481ad693210/sai_xl_depth_256lora.safetensors
- 存储路径:ComfyUI/models/controlnet/sai_xl_depth_256lora.safetensors
-
超分辨率模型:
- 模型:4x-UltraSharp
- 下载地址:https://huggingface.co/lokCX/4x-Ultrasharp/blob/main/4x-UltraSharp.pth
- 存储路径:ComfyUI/models/upscale_models/
注意:如果 ComfyUI 安装中没有上述目录,则需要手动创建。
工作流程执行
完成准备工作后,我们点击界面右边的Queue Prompt按钮开始执行工作流。以下是观察到的一些现象:
-
执行时间:首次运行整个流程耗时约 383.24 秒,后续运行仅需 106 秒。这种显著的性能提升主要得益于缓存机制和 GPU 预热。
-
工作流复杂度:该生图工作流涉及多个复杂步骤,包括图像预处理、ControlNet 引导、SDXL 推理和超分辨率处理。
-
资源消耗:请注意,特别是在处理高分辨率输入或输出时,该流程会导致 GPU 使用率和内存消耗激增。
经验总结与优化方向
-
充分准备至关重要:提前准备好所有模型和输入文件可大幅减少故障排除时间。请仔细核对文件路径!
-
LoRA 实验:虽然本次运行未使用 LoRA 模型,但将其纳入未来实验计划中,以探索进一步提升生图效果的可能性。
-
性能优化:如需进行多次迭代,建议优化工作流程以加快后续运行速度。考虑使用模型量化、批处理等技术。