ComfyUI实战_虚拟机
ComfyUI实战_虚拟机
如果是 Windows 的话,ComfyUI官方和秋叶大佬都有整合包
虚拟机环境 (Vagrant+VirtaulBox)
这里我用虚拟机试:
Vagrant:
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# 镜像设置。这里使用了镜像。若链接失效则到该链接更新:
# https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cloud-images/jammy/
config.vm.box = "ubuntu/jammy64"
config.vm.box_url = "https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cloud-images/jammy/20240912/jammy-server-cloudimg-amd64-vagrant.box"
# 设置内存和CPU数量等
config.vm.network "private_network", ip: "192.168.56.2"
config.vm.provider "virtualbox" do |vb|
vb.memory = "2048"
vb.cpus = 2
end
# 在虚拟机启动时运行的 shell 命令
config.vm.provision "shell", inline: <<-SHELL
# 环境安装 - 基本
apt-get update -y # 更新包列表
apt-get install -y software-properties-common # 安装基础工具
apt-get install -y git
# 环境安装 - python
# miniconda部分参考:https://docs.anaconda.com/miniconda/index.html#latest-miniconda-installer-links
# 目前我这个版本的conda会自动安装python3.12
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm ~/miniconda3/miniconda.sh
# PPA方案: https://www.sysgeek.cn/install-python-ubuntu/#0-%E7%AC%AC-1-%E6%AD%A5%EF%BC%9A%E9%80%9A%E8%BF%87-ppa-%E5%AE%89%E8%A3%85-python-312
# sudo add-apt-repository ppa:deadsnakes/ppa # 导入PPA - 仅稳定版本
# sudo apt update # 更新APT缓存
# sudo apt install -y python3.12 python3-pip
# 环境安装 - python常用包
pip3 install jupyter # 这个的时间也挺长的
# pip3 install torch
# 环境安装 - 前端
# PPA方案
# 为什么要执行这里的PPA:ubuntu到22也无法直接通过apt安装高版本,最多就到node12,而前端环境一般最少要node18,新一点甚至要node20。将PPA添加到配置中,就可以安装更高的版本
# 链接失效则到该链接更新: https://deb.nodesource.com/、https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-22-04
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash -
sudo apt install -y nodejs
sudo apt install -y npm
sudo npm install -g pnpm
# 环境检查 - 版本打印
echo "-------------- env version check --------------"
cat /etc/issue # Ubuntu 22.04.5 LTS
apt --version # apt 2.4.13 (amd64)
git --version # git version 2.34.1
conda --version # (这个好像不行)
~/miniconda3/bin/conda --version # conda 24.7.1
python3 --version # (默认的,好像是内置的) Python 3.10.12
python3.12 --version # Python 3.12.7
pip --version # pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)
jupyter --version # 这里一串 (IPython 8.28.0 jupyter_core 5.7.2 notebook 7.2.2)
node --version # v20.17.0 (注意默认只有12.22.9,完全不够用,要用PPA等方案)
npm --version # 10.8.2
pnpm --version # 9.12.0 # 这里似乎有问题
# 环境检查 - 网络打印
ping -c 4 www.baidu.com
SHELL
end
bash(如果没安装环境,先去看Vagrant笔记)
$ vagrant up
$ vagrant ssh
手动
$ sudo passwd root # 创建root账户
$ su root
# 未开启ssh时可用的几种连接方式:
$ ssh vagrant@localhost -p 2222 -i .vagrant/machines/default/virtualbox/private_key
$ ssh vagrant@192.168.56.20 -i .vagrant/machines/default/virtualbox/private_key
# conda环境
$ vim ~/.bashrc # 如果使用bash
$ vim ~/.zshrc # 如果使用zsh
在文件末尾添加以下行,将路径替换为你的实际安装路径:
export PATH=~/miniconda3/bin:$PATH
$ source ~/.bashrc # 或 source ~/.zshrc,使之生效
$ conda --version # 验证
$ pip list
安装ComfyUI - Jupyter方案
(先别急着操作,看完下面的 “优化” 一节再操作)
这里试一下JupyterNotebook方案
- 脚本准备。先下载链接中对应的
.ipynb
文件到共享文件夹的./jupyter
中
https://github.com/comfyanonymous/ComfyUI?tab=readme-ov-file#jupyter-notebook
- 运行JupyterNotebook
$ cd /vagrant/jupyter
$ jupyter notebook --ip=0.0.0.0 # 我这里是虚拟机,所以为了让主机访问加上了--ip参数
# 然后注意这里会给出带token的令牌,主机访问时要带上token
- 依次运行Jupyter中的脚本
脚本分析
其中Jupyte脚本一共分为三个环节:
- 克隆仓库、安装依赖、编译
- 下载模型、checkpoints、vae
- 运行ComfyUI (三选一)
- cloudflared 方式 (官方推荐)
- localtunnel 方式
- colab iframe 方式 (仅在先前使用localtunnel的方式不起作用时使用)
可选流程优化
conda虚拟环境优化
$ conda create -n comfyenv # 还可追加:python=x.x
# $ conda activate comfyenv # windows
$ source activate comfyenv # linux/macOS
$ conda env list
然后需要注意,在控制台显示在某个环境的时候再进jupyter
(base) vagrant@ubuntu-jammy:/vagrant/jupyter$ source activate comfyenv
(comfyenv) vagrant@ubuntu-jammy:/vagrant/jupyter$ jupyter
# 然后进去后就可以用 `!conda env list` 来验证一下是否成功:(不建议在jupyter内部切换conda环境)
# conda environments:
#
base /home/vagrant/miniconda3
comfyenv * /home/vagrant/miniconda3/envs/comfyenv # 这里有个 `*` 号表示成功
环境检查
!conda env list
!pwd
!ls -a
!pip list
# 结果demo:
# conda environments:
#
base /home/vagrant/miniconda3
comfyenv * /home/vagrant/miniconda3/envs/comfyenv # 这里有个 `*` 号表示现在在这个虚拟环境下
/vagrant/jupyter
. .. .ipynb_checkpoints ComfyUI ComfyUI2 comfyui_colab.ipynb
Package Version
----------------- ----------- # 这里东西比较少,因为这里是刚刚创建的虚拟环境,很多torch什么的都还没装
asttokens 2.0.5
comm 0.2.1
debugpy 1.6.7
decorator 5.1.1
executing 0.8.3
ipykernel 6.28.0
ipython 8.27.0
jedi 0.19.1
jupyter_client 8.6.0
jupyter_core 5.7.2
matplotlib-inline 0.1.6
nest-asyncio 1.6.0
packaging 24.1
parso 0.8.3
pexpect 4.8.0
pip 24.2
platformdirs 3.10.0
prompt-toolkit 3.0.43
psutil 5.9.0
ptyprocess 0.7.0
pure-eval 0.2.2
Pygments 2.15.1
python-dateutil 2.9.0.post0
pyzmq 25.1.2
setuptools 75.1.0
six 1.16.0
stack-data 0.2.0
tornado 6.4.1
traitlets 5.14.3
wcwidth 0.2.5
wheel 0.44.0
路径和权限问题
注意:在root/其他用户环境下,python
、conda
指向的目标有可能是不同的……
然后上下调试时要随时注意路径的变化,随时 !pwd
调试查看,如果不对则用 %cd $WORKSPACE
、%cd /
返回去 (不能是 !cd
)
虚拟机显卡问题
(显卡问题:见踩坑流程三,那会会遇到报错)
一方面,需要先将虚拟机关机,然后在virtualBox设置那边将 设置>显示>3D加速 打开
另一方面,需要有显卡驱动。见:https://docs.comfy.org/get_started/manual_install#nvidia
(不过不知道虚拟机这里能不能用)
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu121
# 或者
pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu124
第三点,需要在虚拟机内识别到显卡……
我找了很多资料,但主要是VMWare和Hyper-V的比较多……VirtualBox的显卡直通教程几乎没有
检查:nvidia-smi
Bug踩坑
流程一(克隆仓库、安装依赖、编译)
一开始报错
-= Initial setup ComfyUI =-
Cloning into 'ComfyUI'...
fatal: unable to access 'https://github.com/comfyanonymous/ComfyUI/': GnuTLS recv error (-110): The TLS connection was non-properly terminated.
[Errno 2] No such file or directory: 'ComfyUI'
/vagrant/jupyter
-= Updating ComfyUI =-
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
/usr/local/lib/python3.10/dist-packages/IPython/core/magics/osm.py:393: UserWarning: This is now an optional IPython functionality, using bookmarks requires you to install the `pickleshare` library.
bkms = self.shell.db.get('bookmarks', {})
-= Install dependencies =-
Defaulting to user installation because normal site-packages is not writeable
ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'
解决:可能刚刚网不好,重新再运行一遍就OK了
- 注意:这一步非常慢。
例如下载 torch 时,以两百KB的速度下载800MB的东西,这里就一个小时了 - 注意:执行完后可以检查一下安装了什么东西,和他那个 requirements.txt 内容对比下。主要看看torch在不在
- 注意:这里执行完后,路径修改了,到了进一层的 ComfyUI 路径里的,不要重复执行第一步了
流程二(下载模型、检查点、vae)
这里是从 huggingface 上面下载的,默认会下载一个 SD1.5(checkpoints) 和一个 VAE
(注意这里是1.5版本,见 Why many people choose SD1.5 instead of SD2.0? SD2.0 really unstable? )
如果存在问题手动下载就是了,我这里就是下载不了,用主机的浏览器下载的
流程三(运行ComfyUI)
需要注意一下路径有没有问题
!sudo dpkg -i cloudflared-linux-amd64.deb # 这里要加sudo
!python3 main.py --dont-print-server # 这里的 python 修改成 python3
部分 !
开头的jupyter命令如果运行不了,可以跳过并直接在终端运行
然后就是一个驱动报错:(解决:前面部分有说怎么安装驱动)
(Reading database ... 76940 files and directories currently installed.)
Preparing to unpack cloudflared-linux-amd64.deb ...
Unpacking cloudflared (2024.9.1) over (2024.9.1) ...
Setting up cloudflared (2024.9.1) ...
Processing triggers for man-db (2.10.2-1) ...
Traceback (most recent call last):
File "/vagrant/jupyter/ComfyUI/main.py", line 90, in <module>
import execution
File "/vagrant/jupyter/ComfyUI/execution.py", line 13, in <module>
import nodes
File "/vagrant/jupyter/ComfyUI/nodes.py", line 21, in <module>
import comfy.diffusers_load
File "/vagrant/jupyter/ComfyUI/comfy/diffusers_load.py", line 3, in <module>
import comfy.sd
File "/vagrant/jupyter/ComfyUI/comfy/sd.py", line 5, in <module>
from comfy import model_management
File "/vagrant/jupyter/ComfyUI/comfy/model_management.py", line 143, in <module>
total_vram = get_total_memory(get_torch_device()) / (1024 * 1024)
^^^^^^^^^^^^^^^^^^
File "/vagrant/jupyter/ComfyUI/comfy/model_management.py", line 112, in get_torch_device
return torch.device(torch.cuda.current_device())
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/vagrant/miniconda3/lib/python3.12/site-packages/torch/cuda/__init__.py", line 878, in current_device
_lazy_init()
File "/home/vagrant/miniconda3/lib/python3.12/site-packages/torch/cuda/__init__.py", line 314, in _lazy_init
torch._C._cuda_init()
RuntimeError: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx
然后安装驱动后,找不到GPU报错:(GPU没有直同虚拟机)
(Reading database ... 106679 files and directories currently installed.)
Preparing to unpack cloudflared-linux-amd64.deb ...
Unpacking cloudflared (2024.9.1) over (2024.9.1) ...
Setting up cloudflared (2024.9.1) ...
Processing triggers for man-db (2.10.2-1) ...
Traceback (most recent call last):
File "/vagrant/jupyter/ComfyUI/main.py", line 90, in <module>
import execution
File "/vagrant/jupyter/ComfyUI/execution.py", line 13, in <module>
import nodes
File "/vagrant/jupyter/ComfyUI/nodes.py", line 21, in <module>
import comfy.diffusers_load
File "/vagrant/jupyter/ComfyUI/comfy/diffusers_load.py", line 3, in <module>
import comfy.sd
File "/vagrant/jupyter/ComfyUI/comfy/sd.py", line 5, in <module>
from comfy import model_management
File "/vagrant/jupyter/ComfyUI/comfy/model_management.py", line 143, in <module>
total_vram = get_total_memory(get_torch_device()) / (1024 * 1024)
^^^^^^^^^^^^^^^^^^
File "/vagrant/jupyter/ComfyUI/comfy/model_management.py", line 112, in get_torch_device
return torch.device(torch.cuda.current_device())
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/vagrant/miniconda3/envs/comfyenv/lib/python3.12/site-packages/torch/cuda/__init__.py", line 878, in current_device
_lazy_init()
File "/home/vagrant/miniconda3/envs/comfyenv/lib/python3.12/site-packages/torch/cuda/__init__.py", line 314, in _lazy_init
torch._C._cuda_init()
RuntimeError: No CUDA GPUs are available
虚拟机环境2 (Vagrant+HyperV)
HyperV的Box镜像没有国内源,下载好慢……
虚拟机环境3 (Windows11+VyperV)
手动安装了
Windows 用的秋叶大佬的整合包……这个下载也好慢