目前測試預設的 SD v1.5 和 SD v1.4 可以正常的運行,而且算圖速度明顯快上不少;SD v2 可以跑最佳化,但是算圖時會發生錯誤。
以下為環境建置方式:
1. 於擴充功能頁籤從網址安裝:https://github.com/microsoft/Stable-Diffusion-WebUI-DirectML

2. 重啟UI完成安裝後,在[Settings 設定] –> [User Interface] 的 [Quicksettings list 快速設定列表],加入 “sd_unet”,套用設定並重新載入UI以啟用 SD Unet 選擇介面。


3. 目前 SD Unet 選單內還沒有模型可以選擇,請切換到 [DirectML] 頁籤,這裡是官方對於該擴充功能的說明,以及運行所需要的套件資訊。

4. 參考說明的 Getting Started 第 1. 點,照著說明便可對直接對官方選用的 SD v1.5 和 SD v1.4 模型進行最佳化。
5. 經過最佳化的模型放: \olive\examples\directml\stable_diffusion\models\optimized\runwayml\stable-diffusion-v1-5\unet\

6. 將其複製到 Stable Diffusion Web UI 的 \stable-diffusion-webui-directml\models\Unet-dml\ 目錄下,並將檔案重新命名成有代表性的名稱。

7. 點選 SD Unet 選單旁的重新整理按鈕,便能選取以運用之。

注意事項
- 如果在使用Olive的DirectML for Stable Diffusion範例最佳化模型時出現:
ERROR:onnxruntime.transformers.optimizer:There is no gpu for onnxruntime to do optimization
截至目前算是正常現象,因為Olive還沒支援在 DmlExecutionProvider 使用GPU跑最佳化。 - 如果是使用 Stable Diffusion Web UI DirectML,啟動參數的 –use-directml 必須拿掉,否則沒辦法正常執行。

Leave a comment