MacBook Pro部署Stable Diffusion筆記 (十)建立虛擬環(huán)境使ComfyUI提速
在ComfyUI的使用上,自己走了很大一圈的彎路。而且更要命的是,一開始還并沒(méi)有意識(shí)到有問(wèn)題的存在,還以為算圖比較慢是因?yàn)槎荚贑omfyUI上用SDXL模型的緣故,沒(méi)爆就行。下圖是提速之前跑一張1024x1024的圖在我的mac上需要花費(fèi)的時(shí)間,大約接近10分鐘。

后來(lái)在查找ComfyUI報(bào)錯(cuò)信息的時(shí)候發(fā)現(xiàn)我的ComfyUI啟動(dòng)命令和官方給的不太一樣,我當(dāng)時(shí)使用的是:
python main.py
而官方給mac用戶的是:
python main.py --force-fp16
這里的這個(gè)后綴是啥意思我是不懂的,不過(guò)我試著照做了一下,結(jié)果出問(wèn)題了。ComfyUI還是可以啟動(dòng),不過(guò)跑圖的時(shí)候會(huì)報(bào)錯(cuò)。

下圖里的報(bào)錯(cuò)信息分兩個(gè)部分:
藍(lán)色的部分是常規(guī)報(bào)錯(cuò),查過(guò)官方對(duì)此的回應(yīng)是可以忽略,那是debug用的。
紅色的部分是增加fp16后新出現(xiàn)的報(bào)錯(cuò),里面有一個(gè)包含了python3.11的信息。我開始的思路是去找這個(gè)python3.11是哪里來(lái)的,因?yàn)槲易约貉b的不是這個(gè)版本。后來(lái)發(fā)現(xiàn)這個(gè)是anaconda 安裝包里帶來(lái)的,我還試圖卸載這個(gè)python3.11,結(jié)果anaconda竟然拒絕了。

然后換了一個(gè)思路,把fp16改成了fp32。
python main.py --force-fp32
使用這個(gè)啟動(dòng)后,ComfyUI還是進(jìn)去,跑圖的時(shí)候也不會(huì)報(bào)錯(cuò)了。但是如下圖所示,跑圖的時(shí)間竟然變得更長(zhǎng)了。

又一通折磨之后,我才最終留意到venv的這個(gè)概念。原來(lái)這才是為ComfyUI搭建虛擬環(huán)境的核心要素。之前我用anaconda創(chuàng)建的pytorch環(huán)境對(duì)ComfyUI是沒(méi)有意義的!T_T
我之后才注意到webUI也是有venv的,目錄下同樣有個(gè)venv文件夾:

可能正是因?yàn)檫@個(gè)VENV,webUI的python才依然是我當(dāng)時(shí)安裝的3.10.6,而沒(méi)有受到后來(lái)anaconda帶來(lái)的Python3.11的影響。
☆ ★ ★ ★ ★ ★ ★ ☆? (筆記六和七的跳點(diǎn))
Get到這個(gè)點(diǎn)之后,糾錯(cuò)之路才終于走上了正軌。為ComfyUI搭建虛擬環(huán)境要在mac的comfyUI文件夾上右鍵選擇“新建位于文件夾位置的終端窗口”,在新窗口里輸入如下命令:
python -m venv venv
需要注意的是,執(zhí)行這個(gè)命令后,終端里不會(huì)有任何提示內(nèi)容。而是在comfyUI目錄里面會(huì)新出現(xiàn)一個(gè)venv文件夾。
然后繼續(xù)在ComfyUI文件夾位置的終端窗口里輸入如下命令:
./venv/bin/pip install torch torchvision torchaudio
這是打包已經(jīng)安裝好的pytorch到前面建好的venv文件夾里,要安裝pytorch可以參考我之前這個(gè)系列的里面專門寫pytorch的文章。我的原文地址:
https://www.bilibili.com/read/cv25604147/?spm_id_from=333.999.0.0
然后繼續(xù)在ComfyUI文件夾位置的終端窗口里輸入如下命令:
./venv/bin/pip install -r requirements.txt
這是把ComfyUI的需求文件都安裝到前面建好的venv文件夾里。在之前的安裝筆記里我是把這個(gè)requirements內(nèi)容裝在了ComfyUI目錄下,白搞了,應(yīng)該放到venv文件夾里?。?!完成安裝之后,繼續(xù)在ComfyUI文件夾位置的終端窗口里輸入如下命令啟動(dòng)ComfyUI:
./venv/bin/python main.py --force-fp16
可以看到這里在python main.py之前加上了路徑,只有這樣才能啟動(dòng)在虛擬環(huán)境里的ComfyUI。

我還測(cè)試了一下加和不加--force-fp16對(duì)跑圖速度的影響,跑圖沒(méi)有報(bào)錯(cuò),結(jié)果如下:


由此可見,疊了虛擬環(huán)境和--force-fp16兩個(gè)buff之后,相同流程的1024X1024跑圖速度雖然還有3分鐘,但是和原來(lái)的10分鐘一張相比,已經(jīng)快了很多。以我目前的能力,搞到這樣已經(jīng)是松了口氣了。
再橫向?qū)Ρ纫幌聎ebUI的跑圖速度,我隨便找了個(gè)基于1.5的大模型跑了張1024X1024,在我這mac上時(shí)間也差不多是3分鐘。所以SDXL配ComfyUI在我這里能在同一個(gè)速度水平上,我覺(jué)得可以接受了??吹接蠻P用SDXL在ComfyUI上跑一張1024X1024只要5秒,我只有淚慕啊。
