2023年3月8日水曜日

AUTOMATIC webuiをGoogleColaboratoryで動かす

前回の記事で最近AIの画像生成をするときは
AUTOMATIC1111のwebuiを使っていると書いたのですが、
環境はGoogleColaboratoryで動かしてました。


自宅PCではつい先日環境を整えて、
こちらでもwebuiを使って画像生成できるようになったのですが、
とある詰まりポイントがあって、この前まで上手くできなかったんですよね。
それについては後日、書くことにしましょ。


自宅でwebuiを使うことが出来るようになったので、
GoogleColaboratoryで無料枠を気にして使う必要性はなくなりそうなんですが、
まとめておいたら、なんかの役に立つんじゃないでしょうか、そのうち(適当)




前回のコレに関して

AUTOMATIC1111web_uiが動かなくなったので

最新のバージョンでやってみたら
requirements_versions.txtに既に「fastapi==0.90.1」は
git pullした段階で入っていました。
対応早くて助かる~


最新版を取れば問題なく使用できると思います。
簡単にまとめておこうと思います。


各種手順を説明していってますが、
一番最後にGithubにアップロードしたGoogleColaboratoryで使える
NotebookのURLを紹介しています。
これをコピーして使用して頂いてもいいです。



1.Googleドライブと連携


先ずはこれまで通り、Googleドライブとの連携ですね。
Colaboratory内で出直していると、GPU使用量制限で切断された時に
出力したデータがパーになってしまいます。

出力した都度、ドライブやローカルに保存する…というのも面倒なので
はじめっからGoogleドライブと連携して、
WebUIの出力先をGoogleドライブに指定しておくといいです。


#@title Googleドライブと連携
from google.colab import drive
drive.mount('./gdrive')

 


2.AUTOMATIC1111web_uiの取得


次に、今回のメインであるWebUIの取得ですね。
下記のGithubページのをダウンロードします。

AUTOMATIC1111 / stable-diffusion-webui


#@title WebUIの取得 (https://github.com/AUTOMATIC1111/stable-diffusion-webui)
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git


3.モデルデータの取得

WebUI単品ですと、StableDiffusion処理部分とWebのUIの部分のみなので
この段階ですと、使用するモデルデータがありません。
ですので、なにかしらAI画像生成のモデルデータを取得してきます。

自分はよくACertainModelを使用しているので、
その場合の記述は下記のような感じです。

注意としては、
モデルデータ(ckptやsafetensors)は「models/Stable-diffusion」に置き、
VAEデータは「models/VAE」に置く必要があるということです。
今回はダウンロードした後に、mvのコマンドで指定の場所に移動させています。


#@title (モデルデータ)ACertainModelの取得(https://huggingface.co/JosephusCheung/ACertainModel)
!git lfs install

!wget https://huggingface.co/JosephusCheung/ACertainModel/resolve/main/ACertainModel-half.ckpt
!mv ACertainModel-half.ckpt /content/stable-diffusion-webui/models/Stable-diffusion/ACertainModel-half.ckpt

!wget https://huggingface.co/JosephusCheung/ACertainModel/resolve/main/vae/diffusion_pytorch_model.bin
!mv diffusion_pytorch_model.bin /content/stable-diffusion-webui/models/VAE/ACertainModel-half.vae.pt


実行後にファイルの方で下記のような感じになっていれば大丈夫だと思います。




後述の操作で生成時に使用するモデルデータやVAEデータを
簡単に切り替えることが出来るんですが、
最近のモデルデータは結構重いので、GoogleColaboratoryの無料枠(15G)だと
良くて3~4つのモデルデータを置けるかどうか位ですね。

どうせGoogleColaboratoryだと、
再起動時にまたダウンロードしなおしになってしまうので、
今回使用したいモデルデータだけに絞ってダウンロードするのがいいと思います。



4.WebUIの起動

これで、StableDiffusionと
UI部分(WebUI)とモデルデータが揃ったので、WebUIを起動します。

Githubで取得したコード群の中にlaunch.pyというモノがあるので、
それを起動する感じですね。


%cd /content/stable-diffusion-webui
!python launch.py --precision full --no-half --share --xformers --medvram --enable-insecure-extension-access


幾つか起動時の引数パラメータを入れてしますが、
「--precision full」と「--no-half」
出力時に部分的に黒くなったり、緑になったりというのを防ぐものです。
「--xformers」
どうもStableDiffusionを高速動作できるxformersで動かすモードの指定らしいです。
「--medvram」
GPUメモリが中程度(4~8G)でも1024x1024等のサイズが作れるようになる
省メモリモードで動作できるオプション。
ただし動作が少し遅くなったり、作成される画像がちょっと変わるらしい?
「--share」
「--enable-insecure-extension-access」
起動したWebUIをローカルURLだけでなく、
他方からアクセスできるURLを発行することが出来る指定。
GoogleColaboratoryだとローカルURLを出されても、
動かしてるブラウザからそこへはアクセスできないので、この指定は必須です。


動かすと、下記のような出力が出てきます。
「Running on public URL」は毎回異なるURLになるはず。



この「Running on public URL」のURL先をクリックして、別タブなどで開きます。
下記のような画面が表示されれば成功です。



後は、少し設定を行えば、
この画面からAI画像生成を行うことが出来ます。



5.初期設定


始めに、生成した画像の出力先を設定します。
起動直後だとGoogleColaboratory内のlaunch.py起動直下の位置になっているので、
これを手順1で連携したGoogleドライブの指定にします。
こうすることで、生成した画像はGoogleドライブの方に出力されるようになります。


「Settings>Paths for saving>Output directory...」から出力先を指定します。




次に
「Settings>User Interface>Quicksettings list」の項を
「sd_model_checkpoint」から
「sd_model_checkpoint,sd_vae,CLIP_stop_at_last_layers」に変更します。



変更したら、画面の上にある
「Apply settings」のボタンと「Reload UI」のボタンを順に押してください。



WebUIが再読み込みされ、下記のように
モデルデータ、VAE、ClipSkipの指定UIが出ていれば成功です。



6.画像生成してみる


ようやく準備が出来たので、適当なpromptを入力して画像を生成してみましょう。
今回は下記のようなpromptで生成してます。Negativeはなしです。


highres, extremely detailed 8k wallpaper, a perfect beautiful kawaii girl,


画面右上にあるオレンジ色の「Generate」ボタンを押すと生成が開始します。
しばらく経つと、生成された画像が画面に表示されます。




うん、出てきましたね。
かわいい!(小並)


もし、複数モデルデータをダウンロードしていて、
切り替えたい場合は、画面上部の「Stable Diffusion checkpoint」から
モデルデータを選択して切り替えられます。
VAEについても「SD VAE」から選択して切り替えることが出来ます。


別タブですが、「img2img」や
PNG画像内に含めているprompt情報を解析する「PNG info」
「Extensions」で追加すればCongrolNet等の機能も簡単に使えて、
すごい便利!



おわり


一応自作でWebサービス的に作ってましたけど、
ここまで至れり尽くせりのものがあるんですね。
いやすごい、恐ろしい。


最後に、今回の手順をまとめたnotebookをgitに上げてみました。
これを自身のGoogleドライブにコピーして使用して頂いてもいいです。
「ファイル>ドライブにコピーを保存」でコピーできます。

googlecolaboratory_notebook


今はローカルでWebUIを動かせる環境があるので、
GoogleColaboratoryで動かす機会は減るかな~とは思うのですが、
自宅環境を汚さずに試したり、
電気代を抑える際には有用そうなので、
一旦、自分用としてもやり方をまとめてみました。


今回は以上です。
ではでは。








0 件のコメント:

コメントを投稿