簡要紀錄一下目前測試過的 Stable Diffusion 加速方法。之後如果有再看到其他通用的作法,也會視情況再紀錄過來這篇文章。
- xformer
- cuDNN
目前這裡紀錄的時間,會用以下的環境設定來測試時間。至於為什麼用這個呢?其實沒什麼原因,就隨便找一個 XD。
- Windows 11
- Stable Diffusion webui 1.8.0
- checkpoint 模型:
Mistoon_Anime v3.0
- 正向提示詞:
masterpiece,best quality,1girl,solo,girls und panzer,messy hair,smallbreasts,brown hair,long hair,orange eyes,side pony tail,beach,swimsuit,swim suit,smug,full body,
- 反向提示詞:
EasyNegative,(worst quality:1.4),(low quality:1.4),
- batch size:4
啟用 xformer
這個選項目前還不太清楚傷害是什麼,似乎基本是無害的,不過有看到像是 openpose
會建議記憶體較低的話可以開,有可能實際上是對成品有點傷害。但對 Stable Diffusion 生圖的效能影響很大,所以如果手上的顯卡不是那麼強大的話,推薦可以考慮。具體來說,我自己的簡單測試結果是啟用後,生圖的時間大約減少了 48%
(33.2s
-> 17.3s
),也就是減少將近一半!
啟用方法在現在很簡單,因為 xformer
已經變成 Stable Diffusion webui 的內建套件了,只是預設沒有啟用而已,所以只需要在 webui-user.bat
裡的 call webui.bat
後面加上 --xformers
就可以了。詳細的說明可以參考 Stable Diffusion webui 的 wiki 中關於 xformer 的說明。
call webui.bat --xformers
安裝 cuDNN
這個部份可以參考 reddit 的討論,不過我自己實際測試的結果,cuDNN 有沒有裝好像沒有差別,cuDNN 單獨測試、跟同時啟用 xformer
都有測過,但結果都沒有顯著差異。測試出來的數據如下:
features | time |
---|---|
vanilla | 33.2s |
cudnn | 33.2s |
xformer | 17.3s |
cudnn + xformer | 17.6s |
不過實際上這好像是要去更新 Stable Diffusion 裡的 PyTorch 使用到的 cuDNN 函式庫,因為裡面本來就已經有那 7 個 DLL 檔案了,安裝過程是要把下載下來的 cuDNN 裡的 DLL 覆蓋進去 PyTorch 的資料夾。所以也有可能純粹是因為我用 Stable Diffusion 1.8.0,裡面的 PyTorch 已經更新了它的 cuDNN,所以我測起來才測不出差別。
安裝方法的部份,由於這裡安裝的目的是要給 Stable Diffusion 使用,所以 nVidia 現在有提供的 Windows installer 好像是沒什麼用,因為它會把那些 DLL 裝進 Program Files 裡 XD。還有一點是 webui 1.8.0 的 PyTorch 使用的 cuDNN 似乎是 8.x
版,所以要注意不要下載到最新的 9.0
版,所以推薦是直接去官方的 archive 頁面下載,在我下載的這個時候,8.x
版中的最新版是 8.9.7.29
。如果下載錯的話,要把檔案複製到 PyTorch 裡的時候,會發現所有檔案都是新增進去,沒有覆蓋到任何一個檔案,這樣它就不會真的被使用到。下載完以後,把資料夾裡 \bin
裡的總共 7 個 DLL 檔案全部複製到 Stable Diffusion webui 裡的 \venv\Lib\site-packages\torch\lib
並取代裡面同樣檔名的檔案即可。