工事現場備忘録

私の備忘録を私がどう書こうが私の自由であるとの信念に基づき自由に書いています

stable-diffusionをwindowsかつNvidia製GPU無しの環境でGUI付きで動かしたい

※追記 こっちでやったほうが楽かもしれない.

koji-genba.hateblo.jp ただAUTOMATIC1111版を使うやり方はすごくVRAM食うからこっちのやり方のほうがいい時もある.両方使うこともできるし好きに選べばいい.
==追記ここまで==

先駆者が無限にいるのにこれ書く必要ある?
novelAIではない

環境

windows11 22H2
Radeon RX6800XT
※wslではない

理屈上ではintelGPUでもGPU無し環境でも動くとは思うけど未確認.

準備

python3.10.8
git
をインストール
適当な作業ディレクトリを用意して github.com をgit cloneする

Hugging Face – The AI community building the future.
にアカウント作成

OnnxDiffusersのセットアップ

適当に作業用のディレクトリを用意して さっきcloneしたやつのsetup.batを実行.仮想環境作成とかパッケージのインストールとか走るからしばらく待つ.
終わったら

.\virtualenv\Scripts\activate

ターミナルの最初に(virtualenv)って出ればおk

ort-nightly-directmlインストール

ちょくちょくアプデされるからなるたけ新しいバージョンのやつ使ってください.
https://aiinfra.visualstudio.com/PublicPackages/_artifacts/feed/ORT-Nightly/PyPI/ort-nightly-directml/overview/1.15.0.dev20230126004
から
ort_nightly_directml-1.15.0.dev20230126004-cp310-cp310-win_amd64
をDLして

pip install ".\ort_nightly_directml-1.15.0.dev20230126004-cp310-cp310-win_amd64.whl" --force-reinstall

する.

huggingfaceログイン

https://huggingface.co/でSetting>Access TokensからToken作る.
そしたらターミナルで

huggingface-cli.exe login

してさっき作ったTokenを貼る.git credintialはnでいい.Login succesfulになればおk.

モデル用意

python convert_stable_diffusion_checkpoint_to_onnx.py --model_path="Linaqruf/anything-v3.0" --output_path="model/anything-v3.0_onnx"
python convert_stable_diffusion_checkpoint_to_onnx.py --model_path="CompVis/stable-diffusion-v1-4" --output_path="model/stable-diffusion-v1-4_onnx"
python convert_stable_diffusion_checkpoint_to_onnx.py --model_path="runwayml/stable-diffusion-v1-5" --output_path="model/stable_diffusion-v1-5_onnx"

全部やる必要はない.使いたいモデルだけでいい.ほかに使いたいモデルあるならそっちでいいし.
huggingfaceにあるモデルならおk.外の世界のモデルは知らん.
huggingface外のckptもonnxコンバートはできるはずだけど未確認.
モデルダウンロードしてckptからonnxコンバートするから非常に時間がかかる.昼飯でも食いながらゆっくり待つ.

テスト実行

txt2img_onnx.pyの29行目

    "--model", dest="model_path", default="model/stable_diffusion_onnx", help="path to the model directory")

    "--model", dest="model_path", default="model/anything-v3.0_onnx", help="path to the model directory")

みたいにさっき用意したモデルに合わせて書き換える.
そしたら

python txt2img_onnx.py --prompt="tire swing hanging from a tree" --height=512 --width=512

とかして適当に画像生成してみる.分かると思うけどpromptが生成内容指定プロンプト,heightとwidthが画像サイズ
初回はモデルデータの読み込みがあるため時間がかかる.outputフォルダにそれっぽい画像が出力されればおk.されなかったらどっかおかしいから頑張って何とかする.

GUI

python onnxUI.py

して表示されたURLをブラウザから開く.
あとは好きにやってください.

終わったらターミナルでCtrl+Cして終了.

2回目以降

#作業用フォルダの中でターミナル開いて#
.\virtualenv\Scripts\activate
python onnxUI.py

これだけ

その他

CPUonly

python txt2img_onnx.py --cpu-only --prompt="tire swing hanging from a tree" --height=512 --width=512

でCPUのみで実行.遅い.

アプデ

github.comからsetup.batだけDLして上書きして

.\setup.bat -update

でなんかアップデートできるらしいです.