stable diffusionをgoogle colabで使用~生成できなかった時の記録

stable diffusionを使うのには、3つの方法がある。一つはローカル環境で使う。これはPCのスペックが重要になって来るので、もし今ハイスペックのPCが無ければ難しい。もしくは購入するのに初期投資がかかる。だけどそれさえ準備出来ればベストな環境が手に入ると言うのがローカル環境で使用でするやり方。ローカル環境ならネットに繋がっていなくてもOK、出先でどこでも作業が出来るのはかなり魅力的。
2つ目はgoogle colabでそのまま立ち上げる。3つ目は同じようにgoogle colabを使うが、googleドライブにいったんノートブックを保存して立ち上げる方法。ローカル環境で使う方法とgoogle colabを利用する方法の大きく分けて2つあるのだが、google colabを使う方法には更に2のやり方に分かれるからちょっとややこしい。
いろんなサイトで説明を読んでいると、どうやらこの2つの方法が混在している側面があるよう。サイトによっては分けて解説してくれている所もある。google colabで動かすと、どうしても「セッション切れの可能性」や「設定がリセットされる可能性があり都度インストールしないといけない」ものだと思っていたけれど、もしかするとそれはgoogle colab上でそのまま立ち上げる場合の話なのかもしれない。google driveに保存してから立ち上げる方法なら、そう言った問題は回避出来るのかもしれない。
サイトによっては、ちょっと遊ぶ程度なら「google colab上でそのまま立ち上げる」方法でもOK。がっつり使いたいなら「google driveに保存してから立ち上げる」方が良い、とある。ただどちらもフワッとしか理解できないから、まず一つずつ、とりあえず一番敷居の低そうな「google colab上でそのまま立ち上げる」のからやってみようと思ったのだった。
google colab上でそのまま立ち上げる
google colabとは、クラウドサービス上でPython言語を使ってプログラミングを行い、コマンドを実行できるサービス。stable diffusionもPythonで動いているから、google colab上で動かすことが出来ると言う事。google colabでstable diffusionを動かすためのコマンドを書く、起動させて使う、と言うもっともシンプルな方法。
一番最初にやることは、google colabで有料のProプランに課金するという事。stable diffusionを使う場合はProプランでないと、アカウント停止になる可能性があるようだ。
Proプランに課金
それではgoogle colabの有料プランに入ろうと思うが、その前に専用のgoogleアカウントを一つ作った。そのアカウントで始める。
まずは「google colab」で検索。「Colabへようこそ」をクリックする。

すると下のようなページに移行するので、初めから出ているウィンドウはキャンセルで閉じる。

ウィンドウを閉じたら、右上の歯車マークをクリック。

「Colab Pro」を選択。

「詳細」を選択。

今回は月額1,179円のColab Proを選択。

そのあと「同意する」を選択して、支払い方法を入力して購入ボタンを選択します。


そのあとアンケートが出てくるが、閉じてしまってOK。

次に出てくるウィンドウも「スキップ」でOK。

これでColab Proへの課金は完了。
コマンドを実行
いろんなサイトで、「このコマンドをコピペしてお使いください。」と、stable diffusionを起動させるためのソースコードを載せてくれている。だけど結局、これらのコードが使えなかったのだ。おそらくこれらのコードを記載して下さった時は問題なかったはず。だけどこの業界はあっという間に状況が変わっていく。例えば2年くらい前はgoogle colabが無料で使えていたけど今はPro版に課金しないといけない、などが最たる例だろう。内部のライブラリの依存関係が変わった云々の影響なのか、結局画像生成まではいけなかったのだった。
しかしとりあえず試したことを記録しておこうと思う。
パターン1
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui %cd /content/stable-diffusion-webui
!wget https://huggingface.co/nuigurumi/basil_mix/resolve/main/Basil_mix_fixed.safetensors -O /content/stable-diffusion-webui/models/Stable-diffusion/Basil_mix_fixed.safetensors
!wget https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors -O /content/stable-diffusion-webui/models/VAE/vae-ft-mse-840000-ema-pruned.safetensors
!wget https://huggingface.co/datasets/gsdf/EasyNegative/resolve/main/EasyNegative.safetensors -O /content/stable-diffusion-webui/embeddings/EasyNegative.safetensors
!python launch.py --share --xformers --enable-insecure-extension-access
上から
・Stable Diffusion Web UI立ち上げのコード
・モデルの導入コード
・VAE(画像の鮮明度を上げる)の導入コード
・xformers(生成速度を速める)の導入コード
コマンドライン因数について
–share | Google ColabでStable Diffusionを利用する時に必要なもの |
–enable-insecure-extension-access | 拡張機能を利用できるようにするもの |
–xformers | VRAM(映像をモニター出力することに特化した パーツ“GPU”に搭載されているメモリ)の消費量を抑え、画像生成を高速化するもの |
パターン2
!pip install -q torch==2.0.0+cu118 torchvision==0.15.1+cu118 torchaudio==2.0.1+cu118 torchtext==0.15.1 torchdata==0.6.0 --extra-index-url https://download.pytorch.org/whl/cu118 -U
!pip install -q xformers==0.0.19 triton==2.0.0 -U
#automatic1111 stable diffusion web uiのダウンロード !git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui %cd /content/stable-diffusion-webui
#AnyLoRA – Checkpoint !wget https://civitai.com/api/download/models/95489 -O /content/stable-diffusion-webui/models/Stable-diffusion/AnyLora.safetensors
#huggingfaceのサイトからvae-ft-mse-840000-ema-prunedのvaeをダウンロード !wget https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors -O /content/stable-diffusion-webui/models/VAE/vae-ft-mse-840000-ema-pruned.safetensors
#stable diffusion web uiの起動 !python launch.py --share --xformers --enable-insecure-extension-access
パターン3
#AUTOMATIC1111/stable-diffusion-webuiのリポジトリをGoogle colabに複製!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
#ディレクトリを移動した後に、Stable Diffuson Web UIのインストールおよび起動%cd /content/stable-diffusion-webui
!python launch.py --share --enable-insecure-extension-access
折角なのでコードを見ていて理解できたことも記録。共通しているのは冒頭の!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
と言う部分。
もう一ヵ所は最後の!python launch.py --share --enable-insecure-extension-access
と言うコード。
ここに「--xformers
」があったりなかったりするのは、生成速度を速めるコードらしいのでなるほどと理解。
中間のコードはcivitaiやhaggingfaceが確認できるので、何かしらのモデルなどだと思われる。無くてもStable Diffusionは起動できそうだ。
とりあえずまずは最初からいろいろ盛り込んでくれているパターン2のコードで動かしてみようと思う。パターン3などの基本っぽい方は、とりあえず遊んでからでも良いだろうと考えた。
新規ノートブックを作成
まずファイルタブから「ドライブの新しいノートブック」をクリック。

すると下のような新しいウィンドウタブが開く。

「ファイル」→「名前の変更」から、ノートブックの名前を変更しておこう。
もしくはここにマウスカーソルを持って行って直接変更できる。


GPUの設定
ノートを作れたらGPUの設定が必要。デフォルトではGPUの設定がされていないらしい。改めてgoogle Colabを開いた場合は、前回作ったノートを選択。

すると画像の様にノートが立ち上がる。

「編集」→「ノートブックの設定」を選択。

「A100 GPU」を選択して「保存」。

右上の「接続」を選択。

すると「接続中」となって

緑色のチェックマークに変わる。

ここまで来たらあとはコマンドを実行するだけ。図のところに下のコマンドをコピペする。
!pip install -q torch==2.0.0+cu118 torchvision==0.15.1+cu118 torchaudio==2.0.1+cu118 torchtext==0.15.1 torchdata==0.6.0 --extra-index-url https://download.pytorch.org/whl/cu118 -U
!pip install -q xformers==0.0.19 triton==2.0.0 -U
#automatic1111 stable diffusion web uiのダウンロード !git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui %cd /content/stable-diffusion-webui
#AnyLoRA – Checkpoint !wget https://civitai.com/api/download/models/95489 -O /content/stable-diffusion-webui/models/Stable-diffusion/AnyLora.safetensors
#huggingfaceのサイトからvae-ft-mse-840000-ema-prunedのvaeをダウンロード !wget https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors -O /content/stable-diffusion-webui/models/VAE/vae-ft-mse-840000-ema-pruned.safetensors
#stable diffusion web uiの起動 !python launch.py --share --xformers --enable-insecure-extension-access


コマンドを入力したら、[shift]+[enter]キーを押す。下の様なバーが動き始める。

しかしエラー。

理由は分からないので、別のコマンドを実行してみる。パターン1として記載していた下記のコマンドを入力、実行。
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui %cd /content/stable-diffusion-webui
!wget https://huggingface.co/nuigurumi/basil_mix/resolve/main/Basil_mix_fixed.safetensors -O /content/stable-diffusion-webui/models/Stable-diffusion/Basil_mix_fixed.safetensors
!wget https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors -O /content/stable-diffusion-webui/models/VAE/vae-ft-mse-840000-ema-pruned.safetensors
!wget https://huggingface.co/datasets/gsdf/EasyNegative/resolve/main/EasyNegative.safetensors -O /content/stable-diffusion-webui/embeddings/EasyNegative.safetensors
!python launch.py --share --xformers --enable-insecure-extension-access

するとまた上手くいかない。エラーじゃないが、どうやら「因数が多すぎる」と言われているみたい。

エラーではないので、改行してしまっていたから以下のように改行を無くしてもう一度実行してみる。
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
%cd /content/stable-diffusion-webui
!wget https://huggingface.co/nuigurumi/basil_mix/resolve/main/Basil_mix_fixed.safetensors -O /content/stable-diffusion-webui/models/Stable-diffusion/Basil_mix_fixed.safetensors
!wget https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors -O /content/stable-diffusion-webui/models/VAE/vae-ft-mse-840000-ema-pruned.safetensors
!wget https://huggingface.co/datasets/gsdf/EasyNegative/resolve/main/EasyNegative.safetensors -O /content/stable-diffusion-webui/embeddings/EasyNegative.safetensors
!python launch.py –share –xformers –enable-insecure-extension-access

すると今度はどうやら大丈夫そう。すぐにずらっとコードが出てくる。下の方までスクロールして、「Running on public URL:」の横のURLを選択する。

そうすると新しいタブが開き、ようやくstable diffusionを立ち上げる事が出来た。

しかしキーワードを入れて「Generate」ボタンを押すが、画像は生成できなかった。

まとめ
「google colabで直接立ち上げる方法」は方法的にはシンプルだが、結局提示してもらったコードが突然使えなくなってしまうケースがあるので、実質自分で修正を行えるコーディングスキルが必要になると理解。この機会にPythonのコーディングを学んでも良いのかもしれないが、あくまでも目的は画像生成、そして動画生成なので、別の手段に切り替えようと判断した。今日はここまで。
補足
ちなみにパターン3のコマンドを2つに分けて実行すると、無事Stable Diffusionを起動させることが出来た。ただこれから先LoRAなどを使っていくことを考えるとどこかでまた躓きそうなので、直接立ち上げるという方法は見送ることにする。