Stable Diffusion 性能優(yōu)化 - xformers安裝問題

上節(jié)課中,訓(xùn)練營3期02,SD本地環(huán)境,有人出現(xiàn)xformers安裝問題:
xFormers was built for: PyTorch 2.0.0+cu118 with CUDA 1108 (you have 1.13.1+cu117)
xformers要求pytorch 2.0.0與cu118,而早一點安裝過SD webui本地版的,大部分都是pytorch 1.13.1+cu117,版本不匹配。
解決方式1,裝最新webui
最新的SD webui,已經(jīng)用上了pytorch 2.0.1 + cuda 11.8:

而xformers兩周前也已經(jīng)支持了 pytorch 2.0.1。https://github.com/facebookresearch/xformers/commit/a721581f01812eae2f184238b072969b0e04110a
這樣都用最新的版本,有助于發(fā)揮最高性能。
提示:
安裝新SD webui前,建議備份老版本的運行環(huán)境。
備份方法:
1. 之前是按SD webui官網(wǎng)最常規(guī)辦法裝的(沒有使用conda)
即上個教程里的安裝方式1或2:
???Stable Diffusion webui 本地安裝教程 Windows
則可以直接復(fù)制 stable-diffusion-webui 整個文件夾,重命名備份。
然后同樣的方法安裝,默認就是最新的SD webui。
2. 之前是用conda安裝
可以在當(dāng)前版本的環(huán)境基礎(chǔ)上復(fù)制一套新環(huán)境出來,再在新環(huán)境里升級pytorch。
conda create -n sd-pytorch2 --clone sd-pytorch1
其中?sd-pytorch2?是新環(huán)境的名稱示例,sd-pytorch1?是你當(dāng)前舊環(huán)境名稱示例。
然后在新環(huán)境sd-pytorch2?里通過conda安裝?PyTorch 2.0.0+cu118:
conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.8 -c pytorch -c nvidia
或者直接安裝最新的 pytorch 2.0.1(默認版本):
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
裝好 SD webui 最新版后,重裝xformers
辦法是直接添加啟動參數(shù):
--reinstall-xformers --xformers

添加后直接正常運行 webui-user.bat 即可。
解決方式2,改用其他優(yōu)化方式替換
有人測試結(jié)果比xformers還快(我4090沒測出明顯區(qū)別)。
github.com/AUTOMATIC1111/stable-diffusion-webui/issues/10494#issuecomment-1552882574

方法同樣是添加命令行參數(shù)即可:
--opt-sdp-attention --opt-sdp-no-mem-attention --opt-channelslast

添加后直接正常運行 webui-user.bat。
提示:
這些方法有的也需要安裝 Pytorch 2.0.x,詳細查詢參數(shù)文檔:
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Command-Line-Arguments-and-Settings
解決方式3,裝xformers舊版
當(dāng)前xformers最新是0.0.17,可以嘗試安裝老版本,以適應(yīng)舊版的pytorch和cuda。
此法適合SD環(huán)境相對穩(wěn)定,又不想輕易大改的情況。
僅改xformers版本,即使裝壞了,不影響SD webui運行,只是xformers不起作用。
可在xformers官方repo里找老版本:
https://github.com/facebookresearch/xformers
總結(jié)
安裝最新SD webui前,備份舊版本。
用其他優(yōu)化方式替換xformers。
高性能顯卡無需xformers。

對實驗編程會員,安裝過程遇到的任何問題,都可以在情報中心進行答疑。
訓(xùn)練營3期火熱進行中。
