2024年3月18日 星期一

Stable Diffusion 加速

簡要紀錄一下目前測試過的 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 並取代裡面同樣檔名的檔案即可。

沒有留言: