2024年5月6日月曜日

Windows + AMD-GPU(Radeon)で 始める Stable-diffusion-webui(AUTOMATIC1111)

AMD GPU で AI 絵を生成してみよう

AI で生成するのが一般的になってきている。
ここでは AI に不利とされている AMD GPU で AI 絵を生成してみる。
環境をローカルのPCに構築してみて、実際に生成してみよう。
※なぜ AMD GPU が不利かというと、理由は色々があるが、
一言でいえばシェア率があげられるだろう。

準備

AUTOMATIC1111 の公式では AMD GPU は利用できない。

AMD GPU 用には、派生となっている DirectML 版を利用する必要がある。

まずは必要なアプリを入れる必要がある。

上記のページの Automatic Installation on Windows に書かれている通りで大丈夫。

Python 3.10.6 のインストール

まずは Python 3.10.6 のインストールが必要になる。
既にインストールされている場合でも、
これより新しいバージョンでは NG (torch をサポートしていない)なので、
必要に応じて入れ替えるなり、任意の方法でバージョンを切り替えるなどが必要になる。
また、Path を通す必要があるので、
インストール時のダイアログで「"Add Python to PATH"」にチェックを入れる必要がある。
無事にインストールが完了したら、確認してみるといいだろう。
コマンドプロンプトを起動して、下記コマンドでバージョンが確認できる。
C:\Users\(name)>python --version

"Python 3.10.6" となったら成功だ。

Git のインストール

後に紹介する AUTOMATIC1111 本体の取得に Git が必要になる。
Zip で取得できないこともないが、更新を楽にするために入れておいたほうがいいだろう。
Git 公式からダウンロードしてインストールする。
インストールダイアログは基本的に次へでOKなはずだ。

stable-diffusion-webui-directml の取得

ここでやっと本命の取得をしていく。
ちなみに、今後もモデルや生成結果などで容量が必要になるため、
SSD(HDD)に余裕がある場所が必要になる。
ここでは説明のために、Cドライブのユーザーディレクトリ直下を想定して進めていく。
まずはユーザーディレクトリ直下でコマンドプロンプトを起動する。
C:\Users\(name)>

 ここで Git を用いて取得する。下記コマンドをコピペしてエンターを押すと取得できる。

C:\Users\(name)>git clone https://github.com/lshqqytiger/stable-diffusion-webui-directml.git

 エラーなどが出ずに取得できたら、コマンドプロンプトは閉じてOK。

何かエラーが起きたら、python のバージョンや

Git がうまくインストールできていない可能性がある。

stable-diffusion-webui-directml の設定

無事に取得できたら、stable-diffusion-webui-directml をいうディレクトリがあり、
その中に色々ファイルがあることが確認できる。
C:\Users\(name)\stable-diffusion-webui-directml
この中にある、"webui-user.bat" をメモ帳などのテキストエディタで開く。
まだ起動してはいけない。
開くと以下のようになっていることが確認できるはずだ。
(もしかしたら取得したバージョンで異なっている可能性もある)
@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=

call webui.bat

ここの、"COMMANDLINE_ARGS="の横に、"--use-directml"を追記する。

@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--use-directml

call webui.bat

"COMMANDLINE_ARGS" は様々なオプションを設定できるパラメータになるので、

今後も追記する可能性がある。

追記したら開いているテキストエディタを閉じてもOK。

"webui-user.bat"をダブルクリックで起動する。

初回起動時は、色々ダウンロードや設定がされるため、少し時間が掛かるので待とう。

エラーが起こらなければ、AUTOMATIC1111 がブラウザ上で起動される。

生成してみる(ハローアスカベンチマーク)

うまく起動したら早速生成してみよう。

ここでは AMD GPU の性能を見つつ生成できるかどうかを見るために、ハローアスカベンチマーク をやってみる。

設定は上記リンクを参考にした。

筆者のPC環境は以下のようになる。

  • CPU: Intel(R) Core(TM) i5-12400F
  • RAM: 32GB
  • GPU: Radeon RX 6600 XT
stable-diffusion-webui-directml のハッシュは e2cbdab になる。

これでもメモリ不足になったので、”COMMANDLINE_ARGS" は以下の通りにした。
COMMANDLINE_ARGS=--use-directml --update-all-extensions --medvram --opt-sub-quad-attention --opt-split-attention --no-half --upcast-sampling --update-check

 結果は以下の通り。(画像は省略する)

100%| ... 28/28 [00:44<00:00,  1.59s/it]

100%| ... 28/28 [00:41<00:00,  1.50s/it]

100%| ... 28/28 [00:42<00:00,  1.52s/it]

100%| ... 28/28 [00:41<00:00,  1.49s/it]

100%| ... 28/28 [00:41<00:00,  1.49s/it]

100%| ... 28/28 [00:40<00:00,  1.46s/it]

100%| ... 28/28 [00:41<00:00,  1.49s/it]

100%| ... 28/28 [00:41<00:00,  1.50s/it]

100%| ... 28/28 [00:41<00:00,  1.48s/it]

100%| ... 28/28 [00:42<00:00,  1.52s/it]

Total progress: 100%| ... 280/280 [07:21<00:00,  1.58s/it]

Total progress: 100%| ... 280/280 [07:21<00:00,  1.52s/it]

検索していないが、GeForece と比べると、遅いのだろう...。

でも生成はできたので良き。 

トラブルシューティング

何かしたらエラーが起こった場合、そのエラーをコピペしておく。

そして、stable-diffusion-webui-directml で検索してみることをお勧めする。

普通のネット検索でも解決する可能性はあるが、

  • 情報が古い
  • 環境が違う
などの理由で解決しない可能性がある。
その点、Git で検索すれば適切なエラーケースへの対処ができる可能性がある。
「おすすめの設定はこれだぜ!」というのもある。
検索して出てきた解決済の "Issue" などを見れば、解決策が見つかる可能性が高い。
全部英語ではあるが、各種翻訳サービスも豊富なので困らないだろう。
以下に一例のエラーを紹介する。

RuntimeError: Could not allocate tensor with XXXXXXX bytes. There is not enough GPU video memory available!

画像生成時に発生する。ようは、メモリ不足。
これに限らず、大抵は "COMMANDLINE_ARGS" などの
"webui-user.bat" に記述で解決する場合が多い。
この場合は、引用形式でコメントしてくれているので、英語でも見つけやすいだろう。
探してみると、こんな設定があったのでコピペしたらエラーは遭遇しなくなった。
COMMANDLINE_ARGS=--use-directml --update-all-extensions --medvram --opt-sub-quad-attention --opt-split-attention --no-half --upcast-sampling --update-check

0 件のコメント:

コメントを投稿

[メモ] キャライラスト参考

キャラクター三面図を描く上で、そもそものキャライラストの参考にするメモ。 個人的に参考にする・なったものを備忘録がてらメモとしてまとめておく。