Stable Diffusion 配置最佳化

最新版的 Stable Diffusion 1.7 已經預設使用 Torch 2.0 + cuda11 和 xformers 0.2, 只需簡單加上 xformers 參數就己經有很好效果。下面將會升級各主要部件以達到最佳化效果,注意有關設定非官方推薦會存在一定風險。

升級后的樣子:

安裝 Python 3.11.7

Stable Diffusion WebUI 1.7 依賴 Python 3.10, 經測試在 Python 3.11 上運行沒大問題。3.11 比 3.10 速度有提升,安裝時勾選 Precompile standard library

然后重新安裝一次 Stable Diffusion。

優化參數

打開 webui-user.bat, 加入以下內容:

set COMMANDLINE_ARGS=--xformers --no-half-vae
set PYTORCH_CUDA_ALLOC_CONF=garbage_collection_threshold:0.9,max_split_size_mb:512

第一次運行會自動安裝 xformers 0.2.0 和 torch 2.0,安裝完先算圖看看有沒有問題。

升級 xformers 和 Torch 2.1.1, CUDA 12

在 venv\Scripts 目錄中執行 activate.bat :

pip install -U accelerate==0.25.0
pip install xformers==0.0.23
pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 --index-url https://download.pytorch.org/whl/cu121

下載 CUDA 12.0 (nvidia.com) 复制 bin 文件到 venv\Lib\site-packages\torch\lib,重新啟動 stable diffusion 完成。

在 RTX2070 上算圖 512×512 記憶體佔用有下降:

Cross-attention optimization options

當有–xformers 啟動參數時會優先選用 xformers。 若要只使用 Pytorch 則加上–opt-sdp-attention 參數,算圖時就會進行 SDP 優化,速度會比xformers快一點點。

主要優化選項 Doggettx, SDP 和 xformers。

–opt-split-attention強制啟用Doggettx的cross-attention layer最佳化。有CUDA的系統預設啟用此選項。
–opt-sdp-attention在Torch 2.0 使用某些情形下比 xFormers 速度快,與 xformers 并用沒有沖突。
–xformers使用 xFormers 可減少記憶體消耗和提升出圖速度。
–no-half-vae不使用半精度VAE。

另外設置 Negative Guidance minimum sigma 和 Token merging ratio。


Posted

in

by

Tags:

Comments

發表留言