简介
最近了解了一下 AI 画图,是通过 ComfyUI 工具入门的,这里记录一下该工具的安装和基本使用流程。
本文的内容将涵盖:
- ComfyUI 的安装
- ComfyUI 的基本使用
- LoRA 模型的使用
- 一些插件推荐
- 一些教程推荐
硬件条件:一台通过 AutoDL 私有云访问的 Linux 服务器,单卡 RTX 4090,显存 24 GB,内存 16GB, 8 个 vCPU。如果采用本文介绍的默认设置,那么估计需要一张至少 8 GB 显存的 NVIDIA 独立显卡。如果需要训练 LoRA,那么显存要求可能更高。
安装
推荐使用 Linux 系统,因为配置环境比较方便,(可能的)性能损失也能控制在最小范围。
本文假设读者对 Git、Linux 系统和
cnoda
包管理器具有基本的了解。如果你在阅读本文时感到吃力,那么建议你使用 ComfyUI 一键包,比如 这个。
这是 ComfyUI 的官方 GitHub 仓库:https://github.com/comfyanonymous/ComfyUI
找一个空闲容量足够大(具体多大取决于你之后下载什么模型,建议至少 10 GB)的地方克隆这个仓库:
git clone https://github.com/comfyanonymous/ComfyUI.git
这个仓库本身不包含任何模型,不是很大。模型需要我们后面手动添加。
创建虚拟环境
本文假设你已经正确安装了显卡驱动、CUDA 工具链和 Anaconda(或 Miniconda)。
其实不做虚拟环境管理也是可以的,但是后面我还需要训练 LoRA 模型,经尝试,把 ComfyUI 和 LoRA 训练脚本的依赖混在同一个环境里是比较痛苦的,因此我们还是新建一个虚拟环境来安装 ComfyUI 的依赖。我使用 conda
管理虚拟环境。
创建一个新的虚拟环境:
conda create -n comfyui
Python 使用最新版本即可,目前是 3.12,测试是没有问题的。
安装 PyTorch
到 PyTorch官网 来查询最新的 PyTorch 的安装命令。这个小工具还是很好用的:
由于后面的 requirements.txt
使用了 pip
的 PyTorch包名,故此处推荐使用 pip
来安装 PyTorch。使用 conda
安装也可以,但需要在后面手动修改 requirements.txt
,删去此处安装的 3 个包。
如果你使用
conda
安装 PyTorch,且你的系统中安装的 CUDA 工具链版本(可用命令nvcc -V
查询)与上图中选择的 CUDA 版本不完全匹配,例如系统 CUDA 版本为 12.4,而上面的版本为 12.1,那么你需要安装额外的cudatoolkit
包,该包的版本应当与 PyTorch 对应的 CUDA 版本保持一致:conda install cudatoolkit=12.1
如果你使用
pip
安装 PyTorch,那么无需在意 CUDA 版本问题。
(可选)安装完成后,可以在 Python Shell 中执行以下命令,确保 PyTorch 可以正常调用 CUDA。
import torch
print(torch.cuda.is_available())
安装其他依赖
在命令行中切换到之前克隆的 ComfyUI 根目录,并确认当前已经激活了然后执行
pip install -r requirements.txt
这会自动安装其他的依赖包。
(可选)自己编写一个启动脚本
我为了使用方便编写了一个 start.sh
脚本:
#!/bin/bash
# 设置系统代理
# 根据你的需要调整代理地址即可。
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
# 定义默认参数
extra_args=""
# 检查是否有额外参数
if [ $# -gt 0 ]; then
# 如果第一个参数是 "cpu",则添加 "--cpu" 参数
if [ "$1" = "cpu" ]; then
extra_args="--cpu"
fi
fi
# 执行 python 命令,附加额外参数
# 此处可根据需要修改端口
python ./main.py --port 6006 $extra_args
unset http_proxy
unset https_proxy
简单的解释:
- 系统代理:有些 ComfyUI 的插件会连接外部网站如 Civitai 或 GitHub 下载数据,设置一个代理可以确保这些插件正常工作。
cpu
参数:ComfyUI 默认会在启动时检查 GPU 的可用性,如果 GPU 不可用则无法正常启动。但为了方便调试,ComfyUI 提供了一个 CPU-only 模式,可以通过向main.py
传入--cpu
参数来启动,此时 ComfyUI 会避免调用 GPU。在使用这个脚本时,执行bash start.sh cpu
即可以 CPU-only 模式启动 ComfyUI。如果不附加cpu
参数,那么就是默认的模式。- 端口:如果你是在本机跑的话,那无所谓,使用任何端口都可以。这里设置为
6006
是因为我使用的私有云服务会将内网的6006
端口映射到公网,方便访问。
编写了这个脚本之后,使用 bash start.sh
即可启动 ComfyUI,无需再通过 Python 调用 main.py
了。
基本使用
确认目前已经激活了前文创建的虚拟环境。然后执行
python main.py
来启动 ComfyUI。
启动后应当能够看到以下消息:
Starting server
To see the GUI go to: http://127.0.0.1:6006
当然这里的端口可能不太一样。复制链接到浏览器就可以访问 ComfyUI 了。
大概是这个样子的:
我装了一些插件,所以可能会和默认状态有微小的不同。
这是一个经典的 Workflow,当你使用默认的 Stable Diffusion 模型并点击右上角的“Queue Prompt”时,会生成一张 512*512 的带有银河图案的瓶子图。
当然,ComfyUI 默认是不带任何模型的,所以我们需要下载一些模型。可以到目前在 AI 画图广受欢迎的 Civitai 网站下载模型。
如果你希望体验默认的 SD 1.5 模型,可以到 https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt 下载它。
我主要是用来画二次元图的,所以会选择一些二次元风格的模型来使用。目前底模里面我见得比较多的就只有 SD1.5 和 SDXL 两种,其中二次元文生图效果最好的应该是 PonyXL 系列模型,这是在 SDXL 的基础上改进得到的一种模型。我用的是这一款:https://civitai.com/models/404154
你可以参考 这篇文章 来做到在命令行中直连下载模型。
SDXL(以及在其基础上发展起来的 PonyXL)因其更大的参数量而比 SD1.5 更耗费显存和算力。但是,8 GB 应该足以跑 SDXL 了。
将下载好的底模(大模型)放置在 ComfyUI/models/checkpoints
目录中,然后点击 ComfyUI 右侧的“Refresh”按钮,之后就可以在最左侧“Load Checkpoint”组件中选择模型了。
选好模型之后,我们来编写提示词。
PonyXL 系列模型在训练时使用了一种质量分级规则,它将训练图像大致分为 10 个等级,每个等级又分为两个子级别。我们使用
score_[数字]
这样的提示词可以引导模型生成对应质量分级的图像。如果我们希望生成高质量图像,可以传入score_9,score_8_up,score_7_up
这样的正向提示词,同时传入score_4, score_5, score_6
这样的反向提示词。它们会引导模型更倾向于生成那些它认为“高质量”的图像。
PonyXL 的训练图像比较杂,风格可能涵盖日系动画、欧美动画、furry、3D 动画等。这些图像以提示词
source_[类别]
来区分。如果我们希望得到“正统”的二次元风格,那么我们需要在正向提示词中加入source_anime
(日系动画),并在反向提示词中加入source_furry, source_pony, source_cartoon,source_filmmaker
来排除所有其他的风格。
其他的一些比较通用的提示词,可以参考 https://www.bilibili.com/read/cv22661198/
我们使用以下正向提示词:
score_9, score_8_up, score_7_up, 1girl, smile, serafuku, looking at viewer, blue eyes,
和以下反向提示词:
source_furry, source_pony, source_cartoon,source_filmmaker, bad anatomy, extra legs, text,
生成了一张 512*512 的图像:
注意到最右侧的 Save Image 组件,它会将传入的图像保存到 ComfyUI/outputs
目录中。如果你在调试提示词时不希望保存图像,那么可以使用 Preview Image 组件。
在空白处右键可以呼出菜单,并在其中添加组件。但更方便的方法是在空白处双击左键,在弹出的搜索框中直接搜索你想要的组件名称,然后点击添加。
注意到右上角的齿轮图标:
点击它可以打开 ComfyUI 的设置。我非常推荐使用目前还是 Beta 阶段的新版菜单。新版菜单位于屏幕的顶部或者底部,占用空间更少,UI 也更现代化。
现在,UI 变成了这样:
我没有介绍 Stable Diffusion 的原理,以及采样器的各种设置,因为我对它们也不太熟悉。可以通过网上的各种教程来学习它们。
关于 SDXL 模型的推荐分辨率,可以参考:https://www.reddit.com/r/StableDiffusion/comments/15c3rf6/sdxl_resolution_cheat_sheet/
安装插件
ComfyUI 插件的安装流程都差不多:把插件仓库克隆到 ComfyUI/custom_nodes
目录中,然后重启 ComfyUI。如果有些插件需要额外的 Python 依赖,则在克隆之后应当安装它们。
首推的就是 ComfyUI-Manager:https://github.com/ltdrdata/ComfyUI-Manager 是一个集中管理各类插件和模型的工具。
其他我正在使用的插件:
- extended-saveimage-comfyui:提供一个扩展的保存图像组件,可以将图像保存为 JPEG 或 WEBP 格式,节省空间。
- ComfyUI-Inspire-Pack:功能挺多的,我主要使用该插件提供的从一个目录中批量读取图像的功能。
- ComfyUI-Custom-Scripts:同样是一个功能比较多的插件,我主要使用该插件提供的提示词补全和 Image Feed 功能。
- ComfyUI-Lora-Auto-Trigger-Words:这个插件支持从 Civitai 抓取 LoRA 模型的触发词。
这里介绍一下 ComfyUI-Custom-Scripts 插件的提示词补全功能。安装该插件后,打开 ComfyUI 设置,找到“
标签:插件,ComfyUI,模型,基础,score,https,使用,安装 From: https://www.cnblogs.com/eslzzyl/p/18358393