ComfyUI安装配置

起因

因为听说Stable Diffusion的创始人和公司闹翻,另起炉灶搞了个Flux,想装个试试,看了一下官方文档,推荐的UI里有这个ComfyUI,号称支持多种后端模型的新型UI,感觉比原来用的SDWebUI好一些,于是装一下试试。

安装

先是在AMD 5300U的机器上装,因为这个模型太大了,没有大显存的显卡,只能先拿CPU试试。

碰到的第一个问题就是系统版略低,自带的Python是3.9的,但Flux要3.10,于是只能docker伺候了。用了官方的python:3.10-bullseye镜像。docker-compose文件如下:

version: '3.3'
services:
  comfyui:
    image: python:3.10-bullseye
    container_name: comfyui
    restart: unless-stopped
    ports:
      - 127.0.0.1:8188:8188
    volumes:
      - /path_to_comfyui:/opt/ComfyUI
    command: /opt/ComfyUI/docker-entry.sh

其中的docker-entry.sh文件如下,其中listen是为了能在docker之外访问:

cd /opt/ComfyUI
. /opt/ComfyUI/venv/bin/activate
python3 main.py --cpu --listen 0.0.0.0

在启动之前先初始化一下运行环境:

docker run -it --rm -v /path_to_comfyui:/opt/ComfyUI python:3.10-bullseye bash
# 之后在docker环境里安装:
cd /opt/ComfyUI
python3 -m venv venv
. venv/bin/activate
pip install -U pip
pip install -r requirements.txt

现在就可以跑一下看看了:

docker-compose up -d

然后用浏览器访问:http://localhost:8188,当然现在没有模型还跑不了

模型下载

参考ComfyUI官方文档之Flux,需要先在这里下载:t5xxl_fp16.safetensorsclip_l.safetensors,内存不足(少于32G)的话也可以用t5xxl_fp8_e4m3fn.safetensors。这两个下载后放到:ComfyUI/models/clip/

然后是下载Flux的两个模型(以免费的Schnell版本为例):

  • 基本模型flux1-schnell,下载后放到ComfyUI/models/unet/
  • VAE模型,下载后放到ComfyUI/models/vae/
  • fp8模型flux1-schnell-fp8,内存不足使用这个模型替换上面那个基本模型,注意这个是checkpoint模型,要放到ComfyUI/models/checkpoints/,另外,这个就不需要上面的VAE模型了,具体看例子工作流。

之后重启ComfyUI就可以使用了。

使用方法可以试试把ComfyUI官方的示例图加载进去,即可调出例子工作流。

实测在5300U的CPU上跑fp8模型生成512x512的示例图需要消耗60G内存(含交换空间),耗时约半小时,完全没有实用性,但生成效果确实比SD强太多了。

小显存测试

因为CPU实在太慢,于是又想到小显存的机器上测试一下,因为需要升级CUDA,又折腾了一番。得到几点经验教训:

  • 不要安装local版本的CUDA,要安装网络版
  • 显卡驱动要安装推荐版本,最新版可能不一定行

因为local版本的CUDA是打包好的,会自动装上最新版本的驱动,网络版安装则是根据版依赖处理,只要已安装的驱动能支持,就不会动。我这边的显卡驱动只能用535版本,而最新版是560,为了装个CUDA,我测试了530,535,545,550,560,只有535能正常工作,而且推荐使用系统的驱动安装工具来安装,比如我的LinuxMint自带的驱动管理器。

驱动安装完需要重启一下,然后测试看看:

nvidia-smi

不报错就说明安装成功。然后安装网络版的CUDA,我装的是12.4,只要没有出错就可以了。

同样需要先初始一下环境:

cd ~/ComfyUI
python3 -m venv venv
. venv/bin/activate
pip install -U pip
pip install -r requirements.txt

然后启动之(listen是为了能通过网络访问):

venv/bin/python3 main.py --listen 0.0.0.0 --lowvram

然后用浏览器访问 http://localhost:8188 就可以使用了。

虽然这样也可以跑,但小显存跑起来确实也慢,一张图要15分钟,比SD的3分钟慢多了,这还是fp8的模型……

推送到[go4pro.org]