MarkdownとBullet Journal

いわゆるプログラマーのつぶやき

colab:GoogleDriveにAUTOMATIC1111をcloneして高速実行

GoogleDriveにAUTOMATIC1111をclone

この記事は過去記事の続きで、ローカルPCに近い感覚で高速起動させる方法を説明する。colab利用の場合、通常はcolab側のドライブにAUTOMATIC1111をcloneするが、それをGoogleDrive側にcloneすることで一式インストールされた状態で利用できる。

実測では4分30秒程度でAUTOMATIC1111が起動した(2モデル、1VAEの場合)。

過去記事はこちら:

programmingforever.hatenablog.com

①環境構築:AUTOMATIC1111やモデルをGoogleDriveに一式セットする

ノートは環境構築用と、推論実行用の2つを作る。環境構築用は最初に1回だけ実行すればよい。いずれも記事の最後にコードだけをまとめている。

1-1 あらかじめモデルをGoogleDriveに保存する

使いたいモデルをサイトからGoogleDriveに保存する。詳細な説明は過去記事参照のこと。

1-2 ノートにGoogleDriveマウントを追加

  • 最初にcolabのAUTOMATIC1111:Akaibuのノートを開く(下記リンク)。

Google Colab

  • 1番目のコードセルの上に新しくコードセルを追加する(セルのライン上にマウスを移動すると「+コード」と出るのでそれを選択)
  • そのコードセルにGoogleDriveをマウントするためのコードを追記する
from google.colab import drive
drive.mount('/content/drive')

1-3 ノートのwgetコマンドを無効にする

次のセルを下記のように修正する。

  • MyDriveに移動
  • そこにAUTOMATIC1111をclone
  • cloneのフォルダに移動
  • モデルをサイトからロードするため不要な5-7行の頭に#を着けてコメントアウト
%cd /content/drive/MyDrive
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
cd /content/drive/MyDrive/stable-diffusion-webui
#@title SD1.5
# get a token from https://huggingface.co/settings/tokens
#user_token = "" #@param {type:"string"}
#user_header = f"\"Authorization: Bearer {user_token}\""
#!wget --header={user_header} https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned.ckpt -O /content/stable-diffusion-webui/model.ckpt

1-4 GoogleDriveからのモデルをコピーするコマンドを追加する

複数のモデルやVAEの切り替え、モデルのマージが出来る様に指定されたフォルダにモデルとVAEをコピーする。

  • 前記のコードセルの下側に新たなコードセルを追加
  • そこにコピーコマンドを追記
  • 利用やマージしたいモデルは全て/content/drive/MyDrive/stable-diffusion-webui/models/Stable-diffusion/フォルダにコピーする
  • VAEは全て/content/drive/MyDrive/stable-diffusion-webui/models/VAE/フォルダにコピーする
  • ファイル名は変更しない(ファイル名を見てモデルを切り替えるため)

例>Eliysium_Anime_V2モデル、デリダモデル、WaifuのVAE、を使う場合

#!cp /content/drive/MyDrive/models/Elysium_Anime_V2.ckpt  /content/drive/MyDrive/stable-diffusion-webui/models/Stable-diffusion/
#!cp /content/drive/MyDrive/models/derrida_final.ckpt  /content/drive/MyDrive/stable-diffusion-webui/models/Stable-diffusion/
#!cp /content/drive/MyDrive/models/kl-f8-anime2.ckpt /content/drive/MyDrive/stable-diffusion-webui/models/VAE/

同様によく利用されているモデルの例を示す。

# Waifu Diffusion1.3のモデルを使う場合
!cp /content/drive/MyDrive/models/wifu-v1-3-float16.ckpt  /content/drive/MyDrive/stable-diffusion-webui/models/Stable-diffusion/
#!cp /content/drive/MyDrive/models/kl-f8-anime2.ckpt /content/drive/MyDrive/stable-diffusion-webui/models/VAE/

# Trinart Diffusion2.0のモデルを使う場合
!cp /content/drive/MyDrive/models/trinart_step60000.ckpt  /content/drive/MyDrive/stable-diffusion-webui/models/Stable-diffusion/
#!cp /content/drive/MyDrive/models/kl-f8-anime2.ckpt /content/drive/MyDrive/stable-diffusion-webui/models/VAE/

# Stable Diffusion1.5のモデルを使う場合
!cp /content/drive/MyDrive/models/v1-5-pruned-emaonly.ckpt   /content/drive/MyDrive/stable-diffusion-webui/models/Stable-diffusion/
#!cp /content/drive/MyDrive/models/vae-ft-mse-840000-ema-pruned /content/drive/MyDrive/stable-diffusion-webui/models/VAE/

# DreamBoostで作った新モデルを使う場合(タグ名がhanakoの場合)
!cp  /content/drive/MyDrive/stable_diffusion_weights/hanako/model.ckpt /content/drive/MyDrive/stable-diffusion-webui/models/Stable-diffusion/
#!cp /content/drive/MyDrive/models/vae-ft-mse-840000-ema-pruned /content/drive/MyDrive/stable-diffusion-webui/models/VAE/

# NovelAIDIffusionのモデルを使う場合
!cp /content/drive/MyDrive/models/animefull-final-pruned.ckpt /content/drive/MyDrive/stable-diffusion-webui/models/Stable-diffusion/
!cp /content/drive/MyDrive/models/animevae.pt /content/drive/MyDrive/stable-diffusion-webui/models/VAE/

# Anything3.0のモデルを使う場合
!cp /content/drive/MyDrive/models/Anything-V3.0.ckpt /content/drive/MyDrive/stable-diffusion-webui/models/Stable-diffusion/
!cp /content/drive/MyDrive/models/Anything-V3.0-pruned.ckpt /content/drive/MyDrive/stable-diffusion-webui/models/VAE/

# EimisAnimeDiffusionのモデルを使う場合
!cp /content/drive/MyDrive/models/EimisAnimeDiffusion_1-0v.ckpt /content/drive/MyDrive/stable-diffusion-webui/models/Stable-diffusion/
!cp /content/drive/MyDrive/models/Anything-V3.0-pruned.ckpt /content/drive/MyDrive/stable-diffusion-webui/models/VAE/

# Evt_V2のモデルを使う場合
!cp /content/drive/MyDrive/models/evt_v2-ema-pruned.ckpt /content/drive/MyDrive/stable-diffusion-webui/models/Stable-diffusion/
!cp /content/drive/MyDrive/models/Anything-V3.0-pruned.ckpt /content/drive/MyDrive/stable-diffusion-webui/models/VAE/

# HENTAI Diffusion 17のモデルを使う場合
!cp /content/drive/MyDrive/models/HD-17.ckpt /content/drive/MyDrive/stable-diffusion-webui/models/Stable-diffusion/
#!cp /content/drive/MyDrive/models/kl-f8-anime2.ckpt /content/drive/MyDrive/stable-diffusion-webui/models/VAE/

1-5 最初から実行

このノートは環境構築用なので一度だけ実行する(2回目以降は不要)。

1番上のセルから実行する。一式完了したら現れるURL(ローカルではない2番目の方)をクリックすると、web UIが別画面で起動する。web UI起動時ユーザー名:me、パスワード:qwerty

完成したノートブックは環境構築用としていつでも使える様に保存することをお勧めする。次に、推論実行専用ノートを説明する。

 

②推論実行:画像生成専用ノート

前記の①でGoogleDrive上にcloneしたAUTOMATIC1111を実行するためのノートを説明する。web UIを起動するまでの時間は4分少々と速い。

但しAUTOMATIC1111は時間単位で新機能の追加やファイルのアップデートがされているので、このままではGoogleDriveのcloneが古くなってしまう。そのため差分を自動で取り込むgit pullコマンドを1行追加して、常に最新版のAUTOMATIC1111を使用できる様にする(コピーしたモデルなどはそのまま維持される)。

1-1 ノートにGoogleDriveマウントを追加

  • 最初にcolabのAUTOMATIC1111:Akaibuのノートを開く(下記リンク)。前記①のノートをコピーしてもよい。

Google Colab

  • 1番目のコードセルの上に新しくコードセルを追加する(セルのライン上にマウスを移動すると「+コード」と出るのでそれを選択)
  • そのコードセルにGoogleDriveをマウントするためのコードを追記する
from google.colab import drive
drive.mount('/content/drive')

1-2 2番目のセルはフォルダ移動とAUTOMATC1111更新の差分取込

2番目のセルにcloneフォルダへの移動と、AUTOMATIC1111の差分を得るgit pullコマンドを記載する。これでGoogleDrive上のAUOTMATIC1111は最新状態を維持できる。

cd /content/drive/MyDrive/stable-diffusion-webui
!git pull https://github.com/AUTOMATIC1111/stable-diffusion-webui

1-3 最初から実行

絵を生成する推論用のノートとして使用する。1番上のセルから実行して一式完了したら現れるURL(ローカルではない2番目の方)をクリックすると、web UIが別画面で起動する。web UI起動時ユーザー名:me、パスワード:qwerty (いずれも変更可能、不要にも出来る)

生成例 Elysium + VAE

完成したノートブックは推論実行用としていつでも使える様に保存することをお勧めする。最後にそれぞれのコードをまとめた。

 

まとめ:①環境構築用ノート一式

# ①GoogleDriveマウント
from google.colab import drive
drive.mount('/content/drive')
# ②GoogleDriveにAUTOMATICをclone(不要な4行目以降を割愛)
%cd /content/drive/MyDrive
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
%cd /content/drive/MyDrive/stable-diffusion-webui
# ③必要なモデルやVAEをコピー
!cp /content/drive/MyDrive/models/Elysium_Anime_V2.ckpt  /content/drive/MyDrive/stable-diffusion-webui/models/Stable-diffusion/
!cp /content/drive/MyDrive/models/derrida_final.ckpt  /content/drive/MyDrive/stable-diffusion-webui/models/Stable-diffusion/
!cp /content/drive/MyDrive/models/kl-f8-anime2.ckpt /content/drive/MyDrive/stable-diffusion-webui/models/VAE/
④実行
!COMMANDLINE_ARGS="--share --gradio-debug --gradio-auth me:qwerty" REQS_FILE="requirements.txt" python launch.py

 

まとめ:②推論実行用ノート一式

わずか5行で動作する。

# ①GoogleDriveマウント
from google.colab import drive
drive.mount('/content/drive')
# ②GoogleDrive上のAUTOMATIC cloneに移動、更新の差分取込
%cd /content/drive/MyDrive/stable-diffusion-webui
!git pull https://github.com/AUTOMATIC1111/stable-diffusion-webui
③実行
!COMMANDLINE_ARGS="--share --gradio-debug --gradio-auth me:qwerty" REQS_FILE="requirements.txt" python launch.py