今更RadeonでStable Diffusion web UIを使う

何番煎じかわからないぐらい今更感ある記事ですが、あまり色々なPythonバージョンが入っている環境の記事が無かった気がするので備忘録ついでに環境構築の話を書いておきます。

一応環境ですが、GPU的には1世代前のハイエンド構成という感じで、

  • Ryzen 9 3900X
  • Radeon RX6800 XT
  • RAM: 64GB
  • Windows 11 Pro

こんな環境のマシンでStabele Diffusion web UIを使っていこうという話になります。

背景的には、Pythonの仕様が微妙すぎてバージョンが違うと動かないものが多く、その部分で沼ることが多いのかなと思って書いておこうと思ったというのがあります。現に、私も適当に動かそうと思ったら動かず、バージョン指定をして動かさないと駄目な環境でした。

というわけで導入を紹介しますが、始めにGitPython 3.10系の導入が必須なので入れておきます。Pythonを入れるときは必ずパスを通しましょう。私は当時は最新だったPython 3.10.11を入れています。Stable Diffusion web UIのページによると3.10.6を推奨していたりしますが、変なことをしなければとりあえず問題なく使えるので3.10系を導入している人はとりあえずそのままでも動くと思います。どうしても動かないシーンが出たらバージョンを落とすぐらいでいいと思います。落としても動かないことがあるのがRadeonでもありますが…

Pythonは3系と2系で関数等の仕様が違うのは当然あるのですが、3.10と3.12なんかでも違うという中々面倒な仕様になっているので、間違えず3.10.xを入れましょう。

何も知らない人が一番躓く部分は、違うバージョンのPythonが入っている場合でしょう。何かしらで別バージョンのPythonを入れていると3.10系を入れても正しく動かなくて「なぜ?」となる方もいるかもしれません。簡単に言うと、「Python」というものを呼び出すときに、例えばPythonの3.10と3.12の両方が入っていると3.12の方を呼び出してしまい正しく動かないということが発生するのです。

こういったところはPythonのいいところのような悪いところのような気もする部分で、他人の作った複雑なPythonプログラムだとバージョン管理はどうしたら良いのかわからなかったりすることもあるわけです。エラーが出てもバージョンが違うことが原因とぱっと見ではわからないことが多いというのも厄介な点です。

少し話が逸れましたが、私の環境だとPythonの2.7、3.6、3.10、3.11が共存しています。同じように他の環境が共存している場合はStable Diffusion web UIを起動するときに正しく指定してあげないと動かないという事態が発生します。

環境を使いわける方法としてはvenvやらpyenvやら色々あるのですが、Stable Diffusion web UIでは見た感じだとvenvを使うことを想定している感じです。そんなことしなくても動かせるので今回はそちらの方法を紹介しておきます。

GitとPythonを入れている前提で、以下のコマンドを入れます。git cloneコマンドは実行するとその場所にレポジトリをクローンするコマンドなので、始めに任意の場所にcdコマンドで移動しておきましょう。

cd 任意のディレクトリ
git clone https://github.com/lshqqytiger/stable-diffusion-webui-directml && cd stable-diffusion-webui-directml && git submodule init && git submodule update

一つしかPyuthonしかない環境であればクローンしたフォルダ内の「webui-user.bat」というファイルを実行すれば問題なくweb Uiが起動するところまで行くと思います。複数のPython環境がある場合はそのファイルを編集します。メモ帳等で開いてset PYTHONの行を以下のような形にします。

@echo off

set PYTHON=py -3.10
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=

call webui.bat

このファイルを実行すれば問題なく起動できるかと思います。複数の環境がある場合、このように変数で使用するバージョンを指定しないと違うバージョンを呼び出してしまうことがあるのでこのように明確に指定する必要があります。

ちなみに、VRAMの容量が16GBあるRX6800XTですが、これでもメモリ容量に不安を覚えるので、COMMANDLINE_ARGSのところを変更して以下の様にしておくと少しは生成できる幅が広がるかもしれません。

@echo off

set PYTHON=py -3.10
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS= --opt-sdp-attention

call webui.bat

web UIを使用する場合はこの「webui-user.bat」を起動すれば問題ないです。

後は適当なモデルデータを入れて動作確認をしてみましょう。よく紹介されているのが以下のサイトですね。それ以外にも色々ありますが、代表で一つだけ紹介しておくにとどめておきます。

CIVITAI
https://civitai.com/

この中好きなモデルを探します。最初は何がなんやらだと思うので、赤で囲んでいる部分のTypeが「CHECKPOINT TRAINED」になっているものを用意してみてください。

CHECKPOINT TRAINEDのもの

その上の部分のDownloadを押したら「.safetensors」という拡張子のファイルが保存されていると思うので、それを「stable-diffusion-webui-directml」フォルダの「models」の中にある「Stable-diffusion」フォルダに保存します。

これが基本となるモデルでそれ以外にもそれらをもとにフィルタをかけることができるLoraをいれたりできます。細かい使い方は他のサイトの方が詳しいので割愛します。

モデルを入れたらweb UIを開きましょう。実行したときに自動で開いていると思いますが、開いてなければ、ブラウザで「127.0.0.1:7860」へアクセス。当然Stable Diffusion web UIの黒い画面が開いていないと起動はしませんのでお忘れなく。

web UIを起動したら、赤丸を付けている左上のタブで自分が入れたモデルがあるかを確認してそれを選びます。画像は圧縮しているので何がなんやらわからないかもしれませんが、雰囲気で大体わかるかと。

Stable Diffusion web UIの画面

txt2imgのpromptに適当にキーワードを入れてみます。コンマ区切りでいくつかの言葉を入れます。例えば上のAnimeKawaでそれっぽいワードを入れます。英語でしか対応していないので英語で入れます。こんな感じですね。

cute,sister,long hair,nebula

複数単語をキーワードとするとこんな感じですね。あとはLoraを使う場合は、Loraタブで使うやつを選ぶと勝手にプロンプトに反映されます。以下の様になります。ここらへんの詳しい導入は他を当たってもらえたらという感じですが、ざっくりと書くと、先ほどモデルデータをダウンロードしたサイトのTypeが「Lora」のものを探しそのファイルを「Stabele-Diffusion」ではなく、「Lora」のフォルダに入れる感じです。

 <lora:64x64v3:1> ,cute,sister,long hair,nebula

実際にこれで「Generate」ボタンを押すと何か出てくると思います。私の場合はこんな感じで出てきました。

上記プロンプトで出力したもの

今回はLoraでピクセルアートっぽくなるものを選んだのですが、その通りになりました。余談ですが、promptに人関係ありそうなもの以外に意図的に背景になりそうな「nebula(星雲)」という単語を気分で入れてみましたが狙った通り背景が星雲っぽくなりました。毎回生成する画像は変わりますが、nebulaという単語を抜いて適当に単語を変えて生成してみました。

このようにプロンプトを駆使することで思ったような画像を作っていきます。どんな画像を生成するかを決める基本のモデルデータ、それをさらにモディファイアするようなLoraを使って動作確認ができました。

基本的な動作確認や導入は以上となります。

詳細な使い方は他を当たっていただければと思いますが、十分この状態でも遊べると思うので、そこから始めると色々な発見があって楽しいかもしれませんね。

ちなみに、エラーで動かない部分もあったりするのでそこらへんはやはりRadeonだなという感じもします。本気で使いたいならNvidiaのグラボを買うのが無難です。遊ぶだけならRadeonでも十分遊べるように感じました。

以上となります。お読みいただきありがとうございました。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です