如何在AMD GPU上運行優(yōu)化的Automatc1111 Stable Diffusion WebUI

【小熊在線訊】你知道嗎?你可以在Automatic1111(Xformer)下使用Microsoft Olive啟用Stable Diffusion,在Windows上通過Microsoft DirectML獲得顯著的加速。微軟和AMD一直在合作優(yōu)化AMD硬件上的Olive路徑,通過微軟DirectML平臺API和用于DirectML的AMD用戶模式驅(qū)動程序的ML(機器學習)層加速,允許用戶訪問AMD GPU的AI(人工智能)功能。

1.先決條件
?已安裝Git(適用于Windows的Git)
?已安裝Anaconda/Miniconda(適用于Windows的Miniconda)
o確保Anaconda/Miniconda目錄已添加到PATH
?具有AMD圖形處理單元(GPU)的平臺
o驅(qū)動程序:AMD軟件:Adrenalin版 23.7.2或更新版本(https://www.amd.com/en/support)
2. Microsoft Olive概述
Microsoft Olive是一個Python工具,可用于轉換、優(yōu)化、量化和自動調(diào)整模型,以通過DirectML等ONNX Runtime執(zhí)行提供程序獲得最佳推理性能。Olive通過提供單一的工具鏈來組合優(yōu)化技術,極大地簡化了模型處理,這對于像Stable Diffusion這樣對優(yōu)化技術排序敏感的更復雜的模型尤其重要。Stable Diffusion的DirectML示例應用以下技術:
?模型轉換:將基本模型從PyTorch轉換為ONNX。
?Transformer圖優(yōu)化:融合子圖到多頭注意力算子和消除轉換效率低下。
?量化:將大多數(shù)層從FP32轉換為FP16,以減少模型的GPU內(nèi)存占用并提高性能。
綜上所述,上述優(yōu)化使DirectML能夠利用AMD GPU,在使用Stable Diffusion等Transformer模型執(zhí)行推理時,大大提高性能。
3.使用Microsoft Olive生成優(yōu)化的Stable Diffusion模型
創(chuàng)建優(yōu)化模型
(按照Olive的指示,我們可以使用Olive生成優(yōu)化的Stable Diffusion模型)
1.打開Anaconda/Miniconda終端
2.通過在終端中依次輸入以下命令,然后按enter鍵,創(chuàng)建一個新環(huán)境。需要注意的是,Python 3.9是必需的。
conda create --name olive python=3.9conda activate olive pip install olive-ai[directml]==0.2.1git clone?https://github.com/microsoft/olive --branch v0.2.1cd olive\examples\directml\stable_diffusionpip install -r requirements.txtpip install pydantic==1.10.12
3.生成ONNX模型并在運行時對其進行優(yōu)化。這可能需要很長時間。
python stable_diffusion.py --optimize
優(yōu)化后的模型將存儲在以下目錄中,保持打開狀態(tài)以備以后使用:olive\examples\directml\stable_diffusion\models\optimized\runwayml. 模型文件夾命名為“stable-diffusion-v1-5”。使用以下命令查看支持的其他模型:python stable_diffusion.py –help
測試優(yōu)化后的模型
1.?測試優(yōu)化后的模型,執(zhí)行如下命令:
python stable_diffusion.py --interactive --num_images 2

4.安裝并運行Automatc1111 Stable Diffusion WebUI
按照這里的說明,安裝沒有優(yōu)化模型的Automatic1111 Stable Diffusion WebUI。它將使用默認的未優(yōu)化PyTorch路徑。在新的終端窗口中依次輸入以下命令。
1.打開Anaconda/Miniconda終端。
2.在終端中輸入以下命令,然后輸入回車鍵,以安裝Automatc1111 WebUI
conda create --name Automatic1111 python=3.10.6conda activate Automatic1111git clone?https://github.com/lshqqytiger/stable-diffusion-webui-directmlcd stable-diffusion-webui-directmlgit submodule update --init --recursivewebui-user.bat
3.按住CTRL鍵并單擊“Running on local URL:”之后的URL以運行WebUI

5. 在AMD Radeon上啟用Olive優(yōu)化路徑
集成優(yōu)化模型
將生成的優(yōu)化模型(“stable-diffusion-v1-5”文件夾)從優(yōu)化模型文件夾復制到目錄stable-diffusion-web -directml\models\ONNX中??赡苄枰獮槟承┯脩魟?chuàng)建ONNX文件夾。
使用優(yōu)化模型運行Automatc1111 WebUI
1. 啟動一個新的Anaconda/Miniconda終端窗口
2. 使用“webui.bat”進入目錄,輸入如下命令,以ONNX路徑和DirectML方式運行WebUI。這將使用我們在第3節(jié)中創(chuàng)建的優(yōu)化模型。
webui.bat --onnx --backend directml
3. 按住CTRL鍵并單擊“Running on local URL:”之后的URL以運行WebUI

從下拉列表中選擇“stable-diffusion-v1-5”

6.結論
AMD Radeon RX 7900 XTX在默認PyTorch路徑上運行,每秒可提供1.87次迭代。
AMD Radeon RX 7900 XTX在Microsoft Olive的優(yōu)化模型上運行,每秒可提供18.59次迭代。

最終結果是AMD Radeon RX 7900 XTX性能提升至高可達9.9倍。