※ 2025/3/27 最初のバージョンを公開
まず最初に謝罪しておきます。申し訳ございません。
RX9070/XTでStable Diffusion WebUI ZLUDAが動く(かもしれない)記事です。
なぜ「かもしれない」なのかは私が実機を持ってないからです。
実機がありませんので、動作は確認しておりません。
しかし、多分動くでしょう。
テスト環境
- CPU:Core i7-13700K
- マザーボード:Asrock Z690M-ITX/ac
- メモリ:DDR4-3600 16GBx2=32GB
- SSD:NVMe Gen3 SSD 256GB
- OS:Windows 11 24H2
- GPU:Radeon Rx7900XTX 24GB
というわけでいつものテスト環境になります。
配布ファイル(ZLUDA_V30.zip) 216 MB (227,263,882 バイト)
※ クリックで新しいWindow・タブが開きますのでダウンロードしてください。
今回、ファイルサイズが大きいのは今までダウンロードしていたファイルを一部を除き中に収めたからです。
全てオープンソースで全部または一部を再配布可能もなことを確認しておりますが、何かありましたらご連絡ください。
迅速に対応いたします。
上のような変更で今まで以上にセットアップが高速になりました。
使い方
重要!!!!
事前準備です。
Radeonのドライバを最新にしてください。
AMD 公式 Radeon Driver ダウンロードページ
まず、HIP SDK6.2.4/6.1.2をインストールしてください。
HIP SDK6.1.2は直接使いませんがインストールされるファイルを使います。
インストールされていないと途中で止まります。
必ずインストールしてください。
インストール後以下を確認してください。
インストール後「設定」-「システム」-「バージョン情報」-「システムの詳細設定」
「システムのプロパティ」ウィンドウがポップアップしますので、「環境変数」をクリックしてください。
上の画像のように、HIP_PATH、HIP_PATH_61、HIP_PATH_62が設定されていことを確認してください。
上はデフォルトのインストール位置です。
デフォルトのインストール位置から変更した人は適宜読み替えてください。
※ わからない方はインストール位置を変更しないことをお勧めしておきます。
ダウンロードした「ZLUDA_V30.zip」を解凍してください。
好きな場所にコピペすればインストール可能です。
いつも通りポータブル版ですので、どの位置にインストールしても構いません。
できる限り「浅い階層の、2バイト文字やスペースの含まれていないフォルダ(パス)」にインストールすることをおすすめしておきます。
解凍すると上のようなファイルとフォルダが出てきます。
この中の「.\misc\downloads」に以下のファイルをダウンロードしてからコピーしてください。
1.5GBありますのでさすがに配布ファイルに含めるのは無理でした。
事前準備はこれで終わりです。
あとは「sd-wui.zip」をダブルクリックすれば自動でインストール・設定されます。
初回セットアップ時のみ、途中で管理者権限での動作の許可を求めるWindowsがポップアップし、許可するとHLCT=HIP Library Customization Toolが起動します。
メニューは2ページあり、自分のGPUに合ったカスタムライブラリをインストールしてください。
ミスをしても後で修正できますから、心配しなくてもよいです。
この記事の末尾にオマケとしてメニューナンバーとGPUの対応表をつけておきますので活用してください。
なお当然ながら、RX7900XTX以外は動作確認しておりませんので、ご了承ください。
ファイルをセットアップするだけで、動くかどうかの確認はしておりません。
動作確認する環境がございませんので、悪しからずご了承ください。
メインメニュー
さて、すべてが終わったら上のようなメニューが出ます。
メインメニューも2ページあります。
適宜必要なものを選択して使ってください。
さて、今回お詫びしなければならないのは、モデルデータのダウンロード機能がつけられなかったことです。
テストでダウンロードしたらCivitAIからAPI経由でのアクセスをBANされてしまいました。
動作の確認が取れていませんので今回は見送ります。
どのくらいの期間BANされるかわかりませんが、今後ダウンロード機能の実装は難しいかもしれません。
メニュー1-1を選択すると、初回のみStable Diffusionのセットアップが始まり、
使用しているGPUはRDNA3もしくはRDNA4ですか?
Are you using an RDNA3 or RDNA4 GPU?
初回セットアップ時のみ、上のようなメッセージが出ます。[Y,N]で答えてください。
Yを選ぶとFlash Attention V2をクロスアテンションに選択できる拡張機能をインストールします。
※ なぜか有効になりませんでしたので、WebUIが起動した後拡張機能(Extention)から有効にしてください。
旧版からのデータ移行について。
今回からSD2.xのデータは対応しておりません。
悪しからずご了承ください。
旧版からのモデルデータ引き次に関しては\ai_datをそのままコピペしてください。
※ 事前にSD2xのデータは移動もしくは削除しておいてください。
なお、データの引継ぎにあたっては上の画面のようにデータフォルダがSDXLになっていることを確認してください。
また、移行元のデータもSDXLにしておいてください。
これでそのまま使えるはずです。
データ移行される方は、操作ミスを防ぐ意味でも最初に上のメニューが立ち上がったらいったん上のメニュー画面を閉じことをお勧めします。
データフォルダは
旧版(現在のデータがSDXLの場合)
- sd
- sd2x
- sd1x
上の3つになっているはずです。
今回(現在のデータがSDXLの場合)
- sd
- sdpy
- sdil
- sd1x
仕組みを説明すると、sdの中身のフォルダに「sd-wui-zld」のモデルデータのフォルからジャンクションが張ってあります。
ジャンクションのターゲットは動かさずに、「フォルダ名」の方をsdに変更することによって、データフォルダの切り替えを実現しています。
実に単純な方法ですが、こんな方法でもちゃんとデータの切り替えが実現可能です。
そのため「現在のデータフォルダ」のフォルダ名がsdにリネームされます。
つまり、sdに変換され、存在しないものが現在のデータフォルダということになります。
デフォルトではsdxlがsdにリネームされています。
今回から、生成した画像データのフォルダ「outputs」もai_datの中に移動しました。
こちらもちょっと強引な方法で実現しています。
保存場所は「sd\images\outputs」になります。
「\misc\HLCT_r624_default.bat」を管理者権限で実行すると、HIP の中身をデフォルトに戻すことができます。
初回に起動したHIP Lib Customization Toolに関してはメニュー2-2からいつでも起動でき、間違ってインストールした場合でも再度起動して正しいGPU用のライブラリをインストールできます。新しいライブラリをインストールする前にいったん書き換えた部分をすべてを削除してからバックアップを取ったファイルからまっさにな状態にしてインストールしなおしますので、何度選びなおしても大丈夫です。
転売品が横行していますのでご注意ください。転売品は保証が受けられません。
おまけ:
HLCTのメニューと対応GPU、インストールする追加ファイルの内容
MENU No. | GFX No. | 世代 | GPU名 | Aditional Library | MIOpen (cudnn) | hipblaslt (cublaslt) |
1-1 | gfx1201 | RDNA4 | RX 9070/XT | 〇 | 〇 | 〇 |
1-2 | gfx1151 | RDNA3.5 | Radeon 8060S Radeon 8050S (Ryzen AI MAX 300 iGPU) | 〇 | × | 〇 |
1-3 | gfx1150 | RDNA3.5 | Radeon 890M Radeon 880M (Ryzen AI 300 iGPU) | 〇 | 〇 | 〇 |
1-4 | gfx1103 | RDNA3 | Radeon 780M Radeon 760M Radeon 740M (Ryzen 7040 iGPU) | 〇 | 〇 | 〇 |
1-5 | gfx1102 | RDNA3 | Radeon RX7600/XT | 〇 | 〇 | 〇 |
1-5 | gfx1101 | RDNA3 | Radeon RX7700/7800XT | 〇 | 〇 | 〇 |
1-5 | gfx1100 | RDNA3 | Radeon RX7900 GRE/XT/XTX | 〇 | 〇 | 〇 |
1-6 | gfx1036 | RDNA2 | Radeon Graphics 128SP (Ryzen 7000/9000 iGPU) | 〇 | × | × |
1-6 | gfx1035 | RDNA2 | Radeon 680M Radeon 660M (Ryzen 6000 U/H/HX/HS) | 〇 | × | × |
1-6 | gfx1034 | RDNA2 | RX6500XT RX6400 | 〇 | × | × |
1-7 | gfx1032 | RDNA2 | RX6650XT RX6600/XT | 〇 | 〇 | × |
1-8 | gfx1031 | RDNA2 | RX6750XT RX6700/XT | 〇 | 〇 | × |
1-9 | gfx1030 | RDNA2 | RX6950XT RX6900XT RX6800/XT | 〇 | 〇 | × |
2-1/2-3 | gfx1010 | RDNA1 | RX5700/XT | 〇 | 〇 | × |
2-2 | gfx1011 | RDNA1 | Radeon Pro V540/V520 | 〇 | × | × |
2-2,2-4 | gfx1012 | RDNA1 | Radeon 5500XT Radeon 5300/XT | 〇 | × | × |
2-5 | gfx90c | Enhanced Vega | Ryzen 5000G Ryzen 4000G iGPU | 〇 | × | × |
2-6 | gfx900 | Vega10 | RX Vega56/64 | 〇 | × | × |
2-6 | gfx803 | Polaris | RX500/400 | 〇 | × | × |
※ RDNA1世代のxnakとは・・・AMD GPU では、マネージド メモリを使用する HIP コードの実行、または統合共有メモリ (USM) を使用する SYCL コードの実行に、XNACK 機能が不可欠です。XNACK がないと、パフォーマンスが最大 4000% 低下する可能性があります。
技術的な話・・・など。
私が配布しているスクリプトにはpythonのembeddable版を使用しています。
pythonのポータブル版です。
このポータブル版は「pipが使えない」「venvが使えない」という欠点があります。
※ ほかにも様々な機能が使えません。
pipの有効化
pipに関してはネットにさまざまな情報がありますので比較的簡単にインストールできます。
python embeddableをインストールしたフォルダの中に「python310._pth」というファイルがあります。
これの5行目「#import site」を「import site」に書き換えます。
そのあと、
https://bootstrap.pypa.io/get-pip.py
からpython scriptをダウンロードしてきて実行すればpipがインストールされます。
私の配布している\misc\pre_r624.batのコードの該当部分は
ファイルの書き換え部分
sed -i 's/#import site/import site/g' .\system\python\python310._pth
get-pip.pyのダウンロード部分
curl -LOJ "https://bootstrap.pypa.io/get-pip.py"
となります。
sedはWindowsの標準のコマンドではなく、minGitに付属しているコマンドです。
minGitをインストールした上でpathが通っていないと使えませんので注意してください。
virtualenvのインストール
さて、python embeddableはインストールできましたが、このままではvenvが使えません。
python embeddableは環境ごとにpipをインストールするように作られているのでvenvの使用は考えられていないようです。
WebUIによってはvenv必須のものもあるため、困っている方もいるのではないでしょうか?
私も困りました。
いろいろと調べた結果、venvのもとになったvirtualenvというコマンドが現在も存在していることが分かりました。
上の手順でpipをインストールした後
pip install virtualenv
でインストールできます。
使い方は
python -m virtualenv [venv環境名]
です。
venvと違うのはvenv環境を作る上のコマンドだけで後は全く同一となります。
少なくとも私は今まで使用していて一度もvenv環境由来の不具合が起きたことはないです。
事実上のvenvといってもよいと思います。
何かものすごい苦労をしてpython embeddableにvenvと同じような機能を実装している方がいますが、こちらの方がごくわずかな労力で実現できますのでこちらを活用した方が良いと思います。
唯一の欠点は公式のvenvとvenv環境を作るコマンドが違いますので、かならずセットアップの過程でvenvを作成しなくてはなりません。
alias機能などを使って何とかできないかとやってみましたが、無理でした。
各WebUIでは大抵venv環境がなければ自動で作ってくれますが、virtualenvの場合、WebUIをgit gloneしたあとにディレクトリに入り、明示的に上のコマンドでvenv環境を作らなくてはいけません。
venv環境のactivateとdeactivate
venv環境を呼び出すときコマンドを実行すると思いますが、Windows版はactivateとdeactivateはバッチファイルになっているため
venv有効化
call .\venv\Scripts\activate.bat
venv終了
call .\venv\Scripts\deactivate.bat
上のようにcallしないとdeactivateを実行した瞬間にコマンドプロンプトが終了してしまいます。
私も少し悩みましたので、一応書いておきます。
実験環境などを作られている方は活用してみてください。
Python3.10.6の呪い?
Stable diffusion WebUIはpython3.10.6で使うのが良いとされています。
現在python3.10はpython3.10.13まで出て、更新が終了しています。
このうち、python3.10.12とpython3.10.13はソースのみの提供で実行できる形では配布されていません。
実行できる形で配布されているのはpython3.10はpython3.10.11が最後のバージョンになります。
python3.10.6が良いとされていたのは当時のpytorchが3.10.6でビルドされていたからだと思います。
※ ビルドされたpythonと違うバージョンのpythonを使うと警告が表示されることがあります。
その後pytorchも3.10.6以降のpythonでビルドされるようになり、特にこだわる理由はなくなったと思います。
python3.10自体がすでに更新が終わっていますので、現在は最新のpython3.10.11を使うのが正解だと思います。
他の理由をご存じの方がいましたらx.comのわたくしのアカウントまで教えていただけると幸いです。
pipコマンドのキャッシュ機能について
テストなどで何度もインストールと削除を繰り返している方は二度目以降のpip installはキャッシュからインストールしているのをご存じだと思います。
このpip chacheはデフォルトだと
%LocalAppData%\pip\Cache
で保存されています。
しかし、
PIP_CACHE_DIR
を設定することによって任意の位置に移動可能です。
「%LocalAppData%\pip\Cache」だとすべての環境でキャッシュを共有することができて、便利なのですが、ユーザーが意識することがありません。
pip cacheが消費する容量をユーザーが意識できる方が良いと思いますので、わたくしはWebUIのインストールフォルダの中にあえて移動しています。
これだとpython実行環境が複数ある場合、pip cacheの環境をまたいだ共有はできなくなり、容量が無駄になりますが、ユーザーが意識できる方が良いと思いますのであえて移動しています。
PS.
噂のROCm Windows版が出たらStability MatrixがRadeonに対応し、アナーキー(?)なZLUDAの役割も終わりだと思います。