背景:
戴爾R740服務器,安裝了proxmox操作系統,配置了顯卡直通。創建了一個ubuntu 22.04 VM虛擬機實例,并安裝了顯卡驅動與cuda等相關配置:
接下來準備搭建一套comfyui的環境,前段時間B站,抖音各種刷到相關視頻,自己也想玩一下!
ubuntu 22.04 anaconda comfyui
可以參考官方網站:https://docs.comfy.org/zh-CN/installation/manual_install
對于 ComfyUI 的安裝, 主要分為幾個步驟
- 創建一個虛擬環境(避免污染系統級 Python 環境)
- 克隆 ComfyUI 代碼倉庫
- 安裝依賴
- 啟動 ComfyUI
安裝anaconda并配置虛擬環境
獨立的虛擬環境是必要的,因為 ComfyUI 的依賴可能會與系統上的其他依賴沖突,也可以避免對系統級 Python 環境的污染。這里選擇了使用anaconda安裝python環境:
下載安裝anaconda
通過訪問:https://repo.anaconda.com/archive/ 選擇對應安裝程序:
下載并運行安裝腳本:(在ubuntu 22.04 VM虛擬機實例上,這里使用了xshell遠程連接)
wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh
bash Anaconda3-2024.10-1-Linux-x86_64.sh
全部默認yes yes 一路回車:
anaconda加入系統環境變量:
其實這里已經加入了 <font style="color:rgb(77, 77, 77);">~/.bashrc</font>
文件來激活安裝
source ~/.bashrc
conda list
安裝后的一些配置:
鑒于源的訪問問題,配置源為清華源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/conda config --set show_channel_urls yespip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
創建comfyui的 python虛擬環境:
創建python 3.12的comfyui的運行環境,并進入該運行環境:
conda create -n comfyui python=3.12
conda activate comfyui
驗證python的版本:
ubuntu系統的一些其他配置:
使用如下命令查看當前的分區狀況:
lsblk
我在創建VM實例的時候明明分配了1.5T這里的根/默認的只有100G,需要處理一下(估計后續1.5T也不夠需要擴容磁盤):
查看當前PV配置:
使用**pvdisplay **查看當前PV配置:
pvdisplay
分配剩余空間給根目錄:
將卷組ubuntu-vg(VG)中所有剩余空間(+100%FREE
)分配給名為ubuntu-lv
的邏輯卷(LV),并使用r**esize2fs **命令調整文件系統以匹配新容量:
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
df -Th /
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
驗證擴容:
使用如下命令驗證lv擴容成功:
df -h
lsblk
comfyui的安裝
參照官方網站:https://docs.comfy.org/zh-CN/installation/manual_install.
克隆倉庫:
這里使用git克隆的方式安裝(默認git已經安裝),個人喜歡目錄使用/data安裝軟件:
mkdir /data
cd /data
git clone https://github.com/comfyanonymous/ComfyUI.git
安裝GPU 及 ComfyUI 依賴
可以參照github倉庫README.md,安裝GPU依賴:
cd /data/ComfyUI
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu128
安裝 ComfyUI 依賴:
pip install -r requirements.txt
注意:執行命令的目錄,必須是comfyui 的相對路徑下,如我的目錄絕對路徑是/data/ComfyUI!
啟動 ComfyUI
進入ComfyUI目錄,執行如下啟動命令,等待comfyui啟動:
cd /data/ComfyUI
python main.py --port 15070 --listen 0.0.0.0
通過瀏覽器訪問安裝comfyui應用的VM實例主機的15070端口,可以看到如下頁面:
運行默認的工作流,會報如下錯誤:
模型缺失,需要下載該模型到 models目錄下,我這里直接使用了魔搭社區
通過該社區這里下載了模型:https://www.modelscope.cn/models/stabilityai/stable-diffusion-2-inpainting/files(否則就要通過科學上網,這里就偷懶了)
右擊模型文件右側下載,復制連接。獲得下載地址,下載模型到Comfyui模型目錄下:
cd /data/ComfyUI/models/checkpoints/
wget https://www.modelscope.cn/models/stabilityai/stable-diffusion-2-inpainting/resolve/master/512-inpainting-ema.ckpt
kill掉comfyui進程 ,重啟comfyui程序:
一般的方式是ps -aux獲取進程號,然后kill -9殺掉進程
也可以通過下面的方式殺死進程:
kill -9 $(ps aux | grep 'python main.py --port 15070 --listen 0.0.0.0' | grep -v grep | awk '{print $2}')
然后重新啟動comfyui:
python main.py --port 15070 --listen 0.0.0.0
刷新瀏覽器重新運行工作量可以正常運行:
其他的一些配置
將comfyui注冊為系統服務
每次使用命令啟動comfyui的方式很不方便對服務的管理與維護,現在我們將comfyui注冊為系統服務,通過systemctl管理comfyui:
vi /etc/systemd/system/comfyui.service
[Unit]
Description=ComfyUI Stable Diffusion Service
After=network.target
StartLimitIntervalSec=60[Service]
Type=simple
User=root
WorkingDirectory=/data/ComfyUI
Environment="PATH=/root/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
ExecStart=/bin/bash -c 'source /root/anaconda3/etc/profile.d/conda.sh && conda activate comfyui && exec python main.py --port 15070 --listen 0.0.0.0'
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
SyslogIdentifier=comfyui
ProtectSystem=full
PrivateTmp=true
NoNewPrivileges=true
LimitNOFILE=65536[Install]
WantedBy=multi-user.target
重新加載 systemd 管理的服務單元文件,并嘗試啟動comfyui:
systemctl daemon-reload
systemctl start comfyui.service
通過如下命令確認服務正常啟動:
ps -aux|grep python
systemctl status comfyui.service
并進一步使用瀏覽器可以正常訪問服務:
注意:這里的15070端口可以通過個人喜好修改service文件中中啟動命令的端口!
comfyui安裝常用插件:
為了方便使用comfyui,需要安裝一些常用的插件,如:comfyui-manager ComfyUI-Custom-Scripts等插件,請注意:插件的安裝目錄是ComfyUI 目錄下的custom_nodes目錄,ComfyUI-Manager 下載到本地目錄名需要替換成小寫,具體可以參照github文檔!
cd /data/ComfyUI/custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Manager comfyui-manager
git clone https://github.com/pythongosssss/ComfyUI-Custom-Scripts.git
重啟comfyui服務,等待服務重啟:
systemctl restart comfyui.service
systemctl status comfyui.service
journalctl -u comfyui -f
通過瀏覽器訪問comfyui,主要看ComfyUI-Manager這個插件,后續的插件模型可以通過這里去下載:
點擊Costom Nodes manager 可以搜索下載插件,其他英文名詞可以自行翻譯:
代理相關
由于comfyui下載插件很多插件要放我github,模型的下載也需要訪問HuggingFace。我局域網有一臺cvm安裝了科學上網工具,就在安裝comfyui的設備上面需要加入變量的方式科學上網:
export http_proxy=http://192.168.0.31:20171export http_proxys=http://192.168.0.31:20171
不使用了 還要unset 。直接將其封裝了一個service:
cat /etc/systemd/system/proxy.service
[Unit]
Description=Proxy Environment Variables Service
Documentation=https://example.com
After=network.target[Service]
Type=oneshot
RemainAfterExit=yes
Environment="PROXY_URL=http://192.168.0.31:20171"ExecStart=/bin/sh -c "\systemctl set-environment http_proxy=${PROXY_URL} && \systemctl set-environment https_proxy=${PROXY_URL} && \systemctl set-environment HTTP_PROXY=${PROXY_URL} && \systemctl set-environment HTTPS_PROXY=${PROXY_URL} && \echo 'Proxy enabled: ${PROXY_URL}'"ExecStop=/bin/sh -c "\systemctl unset-environment http_proxy && \systemctl unset-environment https_proxy && \systemctl unset-environment HTTP_PROXY && \systemctl unset-environment HTTPS_PROXY && \echo 'Proxy disabled'"ExecReload=/bin/sh -c "\systemctl set-environment http_proxy=${PROXY_URL} && \systemctl set-environment https_proxy=${PROXY_URL} && \systemctl set-environment HTTP_PROXY=${PROXY_URL} && \systemctl set-environment HTTPS_PROXY=${PROXY_URL} && \echo 'Proxy reloaded: ${PROXY_URL}'"# 解決status卡住問題的配置
StandardOutput=journal
TimeoutStopSec=5[Install]
WantedBy=multi-user.target
重新加載 systemd 管理的服務單元文件,并嘗試啟動proxy:
systemctl daemon-reload
systemctl start proxy.service
通過如下命令確認服務正常啟動:
systemctl status proxy.service
關閉代理服務則輸入stop 關閉proxy服務:
systemctl stop proxy.service
systemctl status proxy.service
當然關于模型的下載也可以使用ModelScope魔搭社區等實現。