記事一覧

Google Colabの無料アカウントではStable Diffusion WebUIが使えなくなりました
2023/4/末~Google Colabの無料アカウントではStable Diffusion WebUIが使えなくなってしまいました
(起動しようとすると警告画面が表示される様になりました。無理に使い続けるとColabが使えなくなる可能性があるみたいです)
有料版のGoogle Colab Pro(月額1,179円)やColab Pro+(月額5,767円)では警告画面が出ないらしいので有料版のColab Proを使う方法もありますが、デスクトップPCでビデオカードを持っている場合は「ローカルPCでAI画像の作成をする方法」もあります
Google Colab版のStable Diffusionでモデルを設定する原理について
これまでは「おまじない」の様に下記のコードをコピペして使う形で説明していましたが、今回は「Google Colab上でStable Diffusionのコードが何をしているのか?」「モデルの変更はどうやるのか?」について説明したいと思います
0、まずはGoogle Colabを表示して、作成済みのノートブックを開きます



(※)今回の話は少し難しいかもですが、今後「モデルを自分で色々変更する」際の基本的な考え方になります
1、下記はモデルとして「Anything V4.5」(モデルとVAEが1つになったファイル)を使った例です
ソースコード中の(1)(2)(3)(4)の説明の順番で動きます
(1)(2)(4)は「おまじない」のままの理解で構わないのですが、今後重要になるのは(3)の部分になります。「モデルをどう使うのか?」、「モデルをどこにダウンロードするのか?」、「ダウンロードする方法は何種類あるのか?」なのかの理解が必要になります
#Google Colab環境のStable DiffusionでモデルとしてAnything V4.5を使う例
#モデルは公開されたモデルを直接読み込む例
#(1)モデルを読み込んだり作成した画像を保存する為にGoogleドライブをマウントします
from google.colab import drive
drive.mount('/content/drive/')
#(2)Google Colab環境にStable Diffusion(AUTOMATIC1111版)を読み込みます
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
%cd /content/stable-diffusion-webui
#(3)モデルを読み込みます
#通常はモデルとVAEの2つを使いますが、
#「モデル+VAE」になっている場合は1つだけ使います
!wget https://huggingface.co/ckpt/anything-v4.5-vae-swapped/resolve/main/anything-v4.5-vae-swapped.safetensors -O /content/stable-diffusion-webui/models/Stable-diffusion/anything-v4.5-vae-swapped.safetensors
#Stable Diffusionを起動します
!python launch.py --share --xformers --enable-insecure-extension-access
2、具体的には上記のソースコードのうち、(3)の部分の説明をしたいと思います
この例では「wget」コマンドを使って、Web上で一般公開されている「Anything V4.5」の「モデルとVAEが一体化されたファイル1つをダウンロードしています
https://huggingface.co/ckpt/anything-v4.5-vae-swapped/resolve/main/anything-v4.5-vae-swapped.safetensors
ダウンロード先は
/content/stable-diffusion-webui/models/Stable-diffusion/
というフォルダに
anything-v4.5-vae-swapped.safetensors
というWebサーバーのファイルと同名のファイル名になっています
#(3)モデルを読み込みます
#通常はモデルとVAEの2つを使いますが、
#「モデル+VAE」になっている場合は1つだけ使います
!wget https://huggingface.co/ckpt/anything-v4.5-vae-swapped/resolve/main/anything-v4.5-vae-swapped.safetensors -O /content/stable-diffusion-webui/models/Stable-diffusion/anything-v4.5-vae-swapped.safetensors
では、何故、ダウンロード先のフォルダは
/content/stable-diffusion-webui/models/Stable-diffusion/
になるのでしょうか?
3、上記「1」のコードを記入したGoogle Colabのノートブックは下図の様になっています
ここで画面左のツールバーから「フォルダ」アイコンを押してください(説明の確認の為)

4、Colabに接続されたLinux仮想マシンのフォルダ一覧が表示されると、初期状態では「sample_data」というフォルダだけが表示されています
(※)ちなみに表示されている現在フォルダ名は「/content」になっています
/content/sample_dataフォルダが見えている状態になります
再生ボタン(▶ボタン)を押してStable Diffusionを起動してみましょう
(起動には数分かかります)
(※)起動の際にGoogleドライブへの接続を聞いてくる際の操作方法は前回のblog記事(その2)をご覧ください

5、Stable Diffusionの起動が完了したタイミングで改めてフォルダ一覧を(開いて)見ると、最初は無かった「stable-diffusion-webui」フォルダが作成されていて、その下の「models」の更に下の「Stable-diffusion」フォルダの下に今回コピーした「anything-v4.5-vae-swapped.safetensors」ファイルがあるのが分かります
つまり、Google Colab版のStable Diffusionのモデルの保存先は
/stable-diffusion-webui/models/Stable-diffusion/(ファイル名)
になる訳です
(※)wgetで外部サーバーからファイルをダウンロードしてくる場合はダウンロード先のファイル名まで指定する事、別途説明する事前にGoogleドライブに入れておいたファイルをコピーする場合はフォルダ名迄の指定でも構いません

モデルをWebから直接ダウンロードする方法
1、上記ではモデルとして
https://huggingface.co/ckpt/anything-v4.5-vae-swapped/resolve/main/anything-v4.5-vae-swapped.safetensors
を読み込んでます(ckpt版のAnything V4.5)
2、では、「ckpt版のAnything V4.5」というのはどこにあるのでしょうか?
Stable Diffusionのモデル一覧については
下記の様なモデル一覧を紹介しているサイトで選ぶのが早いと思います

3、モデルの配布サイトとしては「Hugging Face」や「Civitai」が有名ではないかと思います。大抵のモデルがここで配布されている気がします

4、上記で使用している「ckpt版のAnything V4.5」というのは「Hugging Face」のここで公開されています

5、「anything-v4.5-vae-swapped.safetensor」ファイルをクリックします
(※)拡張子が.safetensorか.ckptのファイルがモデルファイルで、両方ある場合は.safetensorファイルを使います

6、「download」の部分を右クリックして、ポップアップメニューから「リンクのアドレスをコピー」を選択すると
https://huggingface.co/ckpt/anything-v4.5-vae-swapped/resolve/main/anything-v4.5-vae-swapped.safetensors
の様なアドレスが取得できます。これがモデルのURLになります

7、この様な方法で取得したモデルファイルを読み込む処理が(3)の部分になります
他のモデルを読み込む場合も同じ手順で取得できます
#(3)モデルを読み込みます
#通常はモデルとVAEの2つを使いますが、
#「モデル+VAE」になっている場合は1つだけ使います
!wget https://huggingface.co/ckpt/anything-v4.5-vae-swapped/resolve/main/anything-v4.5-vae-swapped.safetensors -O /content/stable-diffusion-webui/models/Stable-diffusion/anything-v4.5-vae-swapped.safetensors
8、上記については「これまでと同じソースコードで、これまでと同じ実行をしている」事になるので結果もこれまでと同じになります


モデルをGoogleドライブにアップロードしてから読み込ませる方法
モデルを読み込ませる方法としては上記の様に「クラウドから直接読み込む」他に、「あらかじめ自分のGoogleドライブにアップロードしておいて、それを読み込ませる方法」というのもあります
何かの理由でモデルの提供元がモデルの公開を中止した場合などに「それでも使い続ける場合」などに有効な方法なので知っておいて損の無い方法だと思います
1、先ほどと同じ「Anything V4.5」の配布元サイトを表示して、「anything-v4.5-vae-swapped.safetensors」のダウンロード画面を開いて、今度は「download」をクリックして保存します(2~5Gバイト程度のファイルなのでダウンロードには数分~10分程度かかります)


2、Googleドライブを表示し、何もない所を右クリックしてポップアップメニューから「新規フォルダ」を選択します

3、フォルダ名を「StableDiffusion」として「作成」ボタンをクリックする

4、作成された「StableDiffusion」をダブルクリックしてフォルダの中に入る

5、(先にダウンロードしておいた)「anything-v4.5-vae-swapped.safesensors」ファイルをドラッグ&ドロップしてアップロードする
(※)アップロードには数分~10分程度かかります

6、Google Colab側のスクリプトを変更します
(※)もしくは既存のノートを「コピーして保存」を選んだ上で、コピー側で修正します
具体的には(3)のwgetの行をコメントアウトして、代わりに
!cp /content/drive/MyDrive/StableDiffusion/anything-v4.5-vae-swapped.safetensors /content/stable-diffusion-webui/models/Stable-diffusion/
を追加します
Googleドライブは/content/driveとしてマウントしていて
マイドライブは/content/drive/Mydriveで
先ほどStableDiffusionフォルダを作ってその中にanything-v4.5-vae-swapped.safetensors
ファイルを置いたのでコピー元は
/content/drive/Mydrive/StableDiffusion/anything-v4.5-vae-swapped.safetensors
コピー先は以前と同じく
/content/stable-diffusion-webui/models/Stable-diffusion/
なのですが、前回のwgetによる「ダウンロード」とは違って、
今回は「ファイルのコピー」なのでコピー先はファイル名は不要でフォルダ名までで良いです
(ファイル名まで指定しても構いません)
#(3)モデルを読み込みます
#通常はモデルとVAEの2つを使いますが、「モデル+VAE」になっている場合は1つだけ使います
#wgetの行をコメントアウトして、Googleドライブからモデルをコピーする行を追加します
#!wget https://huggingface.co/ckpt/anything-v4.5-vae-swapped/resolve/main/anything-v4.5-vae-swapped.safetensors -O /content/stable-diffusion-webui/models/Stable-diffusion/anything-v4.5-vae-swapped.safetensors
!cp /content/drive/MyDrive/StableDiffusion/anything-v4.5-vae-swapped.safetensors /content/stable-diffusion-webui/models/Stable-diffusion/
7、スクリプトを全て書くと下記の様になります
既存のスクリプトを全部消して、これをコピペしても構いません
#Google Colab環境のStable DiffusionでモデルとしてAnything V4.5を使う例
#モデルは公開されたモデルを直接読み込む例
#(1)モデルを読み込んだり作成した画像を保存する為にGoogleドライブをマウントします
from google.colab import drive
drive.mount('/content/drive/')
#(2)Google Colab環境にStable Diffusion(AUTOMATIC1111版)を読み込みます
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
%cd /content/stable-diffusion-webui
#(3)モデルを読み込みます
#通常はモデルとVAEの2つを使いますが、「モデル+VAE」になっている場合は1つだけ使います
#wgetの行をコメントアウトして、Googleドライブからモデルをコピーする行を追加します
#!wget https://huggingface.co/ckpt/anything-v4.5-vae-swapped/resolve/main/anything-v4.5-vae-swapped.safetensors -O /content/stable-diffusion-webui/models/Stable-diffusion/anything-v4.5-vae-swapped.safetensors
!cp /content/drive/MyDrive/StableDiffusion/anything-v4.5-vae-swapped.safetensors /content/stable-diffusion-webui/models/Stable-diffusion/
#Stable Diffusionを起動します
!python launch.py --share --xformers --enable-insecure-extension-access
8、起動ボタン(▶ボタン)を押して起動します

9、(当たり前の話ですが)Googleドライブに置いたモデルで起動してもWebサイトから直接ダウンロードしたモデルと同じモデルなら同じ結果になります
(※)Stable Diffusionのモデルは多数あるので、むしろ「これからどのモデルを選ぶのか?」、「新しいモデルをどの方法で登録するのか?」の参考にしてください
繰り返しになりますが「Googleドライブに置くメリット」としては、「何かの理由でモデル作者がモデルの公開をやめた場合も使う事ができる」があります。通常はWebから直接ダウンロードしておきつつ念のためバックアップでモデルファイルだけ自分のPCにダウンロードしておくとかでも良いかもしれません


コメント