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 並取代裡面同樣檔名的檔案即可。

2024年3月7日 星期四

Stable Diffusion 基本環境安裝

講到繪圖 AI,在初期最有名的應該就是 Midjourney (MJ) 和 Stable Diffusion (SD) 了。後來雖然有不少其他名字陸續冒出來,不過最開始的這兩個,還是依然維持著它們的名氣。因為 side project 的關係,想要試試看繪圖 AI,所以就簡單研究了一下這兩個,發現 Stable Diffusion 可以在自己電腦上面跑,不用買訂閱制的服務!所以就決定嘗試它了!

說是這麼說,但簡單嘗試後發現一個很大的問題,Stable Diffusion 對非 nVidia 顯示卡的使用者相當不友善 😓。雖然不是完全不能用,但就圖片產生速度非常慢,而且環境準備也很麻煩。因為我的顯示卡是 AMD 的大概七年前的中階顯卡,搜尋了一下發現要用 AMD 算圖的環境設定超麻煩,所以立刻就放棄了 😆。試完了一下用 CPU 算圖,不過使用經驗是很多 model 都會有問題,而能用的又很慢,跑一張圖要跑 10 幾分鐘,所以試玩一下後就決定還是要去買新的顯示卡了。於是這篇就會簡單紀錄一下在 Windows 10 的 nVidia 顯卡以及 Stable Diffusion 的基本準備。

準備 NVIDIA 環境

NVIDIA 環境具體來說,就是顯示卡的驅動程式跟 CUDA 相關的東西。這個步驟不算太難,主要要安裝的是以下幾個東西:

  • NVIDIA Geforece Experience
  • CUDA Toolkit
  • NVIDIA cuDNN

其中 Geforece Experience 其實本來不是必要的,不過因為顯示卡驅動程式好像都跟在這裡面,所以多半會一起裝進去。至於 cuDNN 真的就是非必要的,我自己的實際實驗是沒裝它也可以正常使用 Stable Diffusion,不過看官方的說明,感覺這個應該是對計算會有加速的效果之類的,所以還是裝一裝會比較好(但我現在還沒裝 😆)。

CUDA Toolkit 跟 cuDNN 安裝的版本都應該要參考自己的顯示卡和驅動程式對應的版本,可以分別參考官方網站的 CUDA GPUCUDA Driver。我的顯示卡有支援最新版,而在寫這篇文章的時候,CUDA Toolkit 最新版是 12.3,不過有個超級重要的經驗是,不要安裝 12.3 版 😆。我試過各種方法都沒辦法成功把 12.3 裝進去,安裝程式會一直顯示安裝失敗,但又不明確提示為什麼失敗。查了 NVIDIA 官方論壇以及 Reddit 的文章後,最後發現改安裝 12.2 (下載位置) 就可以順利安裝完成。

至於 cuDNN,因為我自己沒裝,所以如果之後有裝了再回來補充,可以先參考官方網站的說明

準備 Stable Diffusion 環境

Stable Diffusion 環境有超多文章和影片在教了,例如這篇,這裡就簡單紀錄了 😆。也可以參考這個影片

  1. 安裝 Windows Store 的 Python 3.7。
  2. 下載 Stable Diffusion webui
  3. 在 webui-user.bat 裡面設定 Python 位置。
  4. 執行 webui-user.bat,它會在 venv 資料夾裡建出環境。因為要下載不少東西,會需要一段時間。

到這裡其實 Stable Diffusion 就弄好了。不過聽說 Stable Diffusion 還有必裝外掛,裝了以後它才有實用價值。所以下面還會再紀錄一些外掛的基本資訊。

Stable Diffusion 外掛

外掛們據說是 Stable Diffusion 非常重要的東西,有些外掛沒裝,會讓 Stable Diffusion 很難控制,所以會有常見的一些必裝外掛。這裡逐步紀錄一些我自己找到的資訊,不過使用細節等到我有更多經驗後,再看要不要寫點文章紀錄吧~。

  • 翻譯
  • 提示詞
    • sd-webui-prompt-all-in-one - 可以直接從 webui 介面裡安裝。主要功能是提供不少類型的正向和負向提示詞,另外也可以自動幫忙將提示詞翻譯成英文。對於英文詞彙沒那麼熟悉的話,會非常有幫助。
  • ControlNet - 可以直接從 webui 介面裡安裝。主要用來提昇對圖的控制,必裝,否則 Stable Diffusion 產生的圖太隨機了很難控制。

另外紀錄有討論到各種外掛以及提示詞的文章: