首页 > 其他分享 >ComfyUI的安装和基础使用

ComfyUI的安装和基础使用

时间:2024-08-14 10:38:56浏览次数:11  
标签:插件 ComfyUI 模型 基础 score https 使用 安装

简介

最近了解了一下 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 的安装命令。这个小工具还是很好用的:

img

由于后面的 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 了。

大概是这个样子的:

我装了一些插件,所以可能会和默认状态有微小的不同。

img

这是一个经典的 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 的图像:

img

注意到最右侧的 Save Image 组件,它会将传入的图像保存到 ComfyUI/outputs 目录中。如果你在调试提示词时不希望保存图像,那么可以使用 Preview Image 组件。

在空白处右键可以呼出菜单,并在其中添加组件。但更方便的方法是在空白处双击左键,在弹出的搜索框中直接搜索你想要的组件名称,然后点击添加。

注意到右上角的齿轮图标:

img

点击它可以打开 ComfyUI 的设置。我非常推荐使用目前还是 Beta 阶段的新版菜单。新版菜单位于屏幕的顶部或者底部,占用空间更少,UI 也更现代化。

现在,UI 变成了这样:

img

我没有介绍 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

相关文章

  • Mac下go安装
      https://go.dev/dl/查看是arm64,还是x86-64命令:-uname-a我的是DarwinokerdeMacBook-Pro.local23.5.0DarwinKernelVersion23.5.0:WedMay 120:13:18PDT2024;root:xnu-10063.121.3~5/RELEASE_ARM64_T6030arm64  安装后,重新打开终端  输入命令:go......
  • 8.14 为某人的言论提供一点理论基础
    看了8.13朋友的愿景,我不由联想起PMBOK中定义的高绩效项目团队。所有人都喜欢高绩效项目团队,因为协作者有动力,领导者很放心。怎么打造一个高绩效项目团队?PMBOK中给出了九个有关因素。开诚布公的沟通、共识、共享责任、信任、协作、适应性、韧性、赋能、认可(需要指出:这九......
  • centos7 安装docker 并运行es、rabbitmq 服务 记录
    部署docker当执行 yuminstall-ydocker-cedocker-ce-clicontainerd.iodocker-buildx-plugindocker-compose-plugin出现  “[Errno14]curl#7-“Failedtoconnectto2a03:2880:f10e:83:face:b00c:0:25de:网络不可达”修改其下载源:yum-config-manager--add-repo......
  • 【零基础必看的Linux教程】——Linux 简介
    现如今有个现象,在这几年的大裁员过后,带来了一系列的人员变动,常常面临着不受宠的被辞退了,能干的人跑了,剩下的人在努力维护着项目。于是乎老板们才发现人好像又不够了,然后又开始各种招人。不知道看到此篇文章的你是准备求职的大学生,还是想要转行的咸鱼,亦或是单纯工作需要翻到此篇......
  • WPBT (Windows Platform Binary Table) 是一种用于在Windows启动时传递信息的结构。它
    WPBT(WindowsPlatformBinaryTable)的起源可以追溯到Windows操作系统对ACPI(AdvancedConfigurationandPowerInterface)规范的扩展需求。ACPI是一个用于管理硬件配置和电源管理的标准,广泛用于操作系统与固件之间的通信。WPBT是这种规范的一部分,专门设计用于Windows环境。......
  • VMware安装centos8.5
    1、创建虚拟机镜像文件下载完成后,就可以打开VMwareWorkstation。单击“创建新的虚拟机”来新建虚拟机,默认推荐选择典型。 2、虚拟机设置进去之后点击新CD/DVD,在右边的使用iso镜像文件中找到下载的镜像文件  3、安装centos8.5在安装好虚拟机后,我们单击左侧的“开启......
  • selenium基础
    一、打开网址的方法(1)get打开网址a、get打开一个网址fromseleniumimportwebdriver#导入selenium第三方库中webdriverfromtimeimport*dx=webdriver.Chrome()#创建一个对象来来调用谷歌浏览器的对象dx.get("https://www.baidu.com/")#通过对象打b、get打开两个网......
  • 如何自学成为一名黑客?(非常详细)零基础入门到精通,收藏这篇就够了
    如何自学成为一名黑客?知道这4点,哪怕新手也能自学成为黑客大佬。第一,准备设备。光有手机是不行的,你得有一台电脑,并且电脑的配置起码得满足这两个条件,不然发起攻击时,目标没崩溃你先崩溃了。第二,熟读网络安全法。技术本身是没有罪的,但行为是可以判刑的,所以在学技术之前一......
  • 虚化引擎 C++基础 2 C++游戏架构,创建默认的c++类
    游戏模式一、游戏模式重载(GameModeOverride):设置游戏的基础玩法,包含玩家数量,关卡过度,玩家进入游戏方式等。二、默认Pawn类(DefaultPawnClass):玩家的默认角色,可以是带有复杂运动系统的character也可以是简单运动的Pawn。########Pawn和Character的区别:Pawn和Character的区别:P......
  • 【Java手写RPC框架系列-1】—— 基础知识准备:RPC+Netty
    代码随想录知识星球介绍https://articles.zsxq.com/id_m76jd72243bi.html基于Netty手写实现RPChttps://www.cnblogs.com/mic112/p/15565795.html项目背景与介绍RPC:远程过程调用协议:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应用程序......