colab ノートAkaibu1.3対応
簡単かつエラーが出なくなった新しいcolabノートが利用出来るので、そちらをベースに記事を書き直した。またモデルやVAEファイルなどを動的に切り替え可能とすべく、正規の場所に配置する内容に改訂した。
想定する読者
Google colabでAUTOMATIC1111を使いたい
起動時間を速くしたい
モデルのダウンロード量や時間を削減したい
Waifu DiffusionやTrinart Diffusionなど色々なモデルを使いたい
複数のモデルやVAEなどを動的に切り替えたい
注意点
Google colab proまたはpro+の利用を推奨。5GBを超えるモデルの場合、colab無料版ではメモリ不足によるエラーが発生する場合がある
Google Drive の容量確保。それぞれモデルの容量は3~7GB程度あるため保存領域が必要
NSFWフィルターが最初から外れている。リスクのある画像作成を避けたい方はセッティングでNSFWフィルターをONにできる
利用別に4つの方法を記載
モデルをサイトからDLして実行する (最も時間がかかる、GoogleDriveの保存量は最も少ない)
実行一式を保存して再開する様に実行する (最も高速、GoogleDriveの保存量を一番使う)
モデルをGoogleDriveからコピーして実行する (次に高速、GoogleDriveの保存量をモデル分だけ使う)
モデルをサイトから直接GoogleDriveにコピー (モデル格納専用)
1はcolabノートのAkaibu1.3での使用方法を記載する。
2はcolab上に展開したファイルをGoogleDriveに保存することで、あたかも自分のPCで使う感覚でAUTOMATIC1111を高速起動出来る様になる(RAMへのロード時間は必要)。ただしこの方法はStable DiffusionやAUTOMATIC1111に必要な各モジュールを保存するため、かなりの容量が必要となる。使用するモデルが少しならこれでも良いが、数十のモデルを使い分けする様な場合はGoogleDriveの容量を圧迫しかねない。
そこで3は、利用したいモデルをあらかじめ自分のGoogleDriveに保存しておくことで、サイトからDLする通信量や時間を短くすることができる。
またサイトにあるモデルを一旦ローカルPCにダウンロードしてからGoogleDriveにアップロードするモデルの格納手順に対して、4はサイトから直接GoogleDriveにモデルをダウンロードする方法を解説する。この方法であればPCとクラウド 間の通信がほとんど無くなり、作業時間も半分以下になる。
それでは以下、順に説明する。なお修正コードは記事の最後にまとめている。
①モデルをサイトからDLして実行する
1-1 colabのノートを開く
下記のAkaibu1.3のノートを開く
Google Colab
以前とは異なり、2つのコードセルの実行だけで動く様になった。エラーも出ない。
1-2 使いたいモデルに変更する
このノートはStable Diffusion1.5 モデルが使える記載になっている。2番目のセルのwget 部を変更することでWaifu Diffusionなど他のモデルも使える。
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
%cd 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
※Stable Diffusion1.5までのモデルを利用する際は5行目のuser_token, 6行目のuser_headerが必要
※Waifu Diffusionなどは5-6行目は不要(残していても問題ない)
※7行目のhttps://****.ckpt を利用したいモデルがある箇所のURLに書き換える
1-3 順に実行
2つのコードセルを順に実行すればAUTOMATIC1111が起動する。この利用方法で特に問題なければこのまま1を利用してもよい。
②colabの実行一式を保存して次回再開して実行
通常はcolab上にAUTOMATIC1111をcloneするが、そのclone先をGoogleDriveに変更して保存し、その保存した状態から起動する方法は最速となる。但しAUTOMATIC1111一式+そこにセットしたモデル分だけドライブのディスク容量を食う点に注意。記事が長くなるためこの方法は別記事でまとめた。
programmingforever.hatenablog.com
③モデルをGoogleDriveからコピーして実行する
あらかじめGoogleDriveに保存していたモデルをコピーすることで高速起動する方法。多数のモデルを使いたい場合はおそらく一番リーズナブルな方法ではないかと思われる。
3-1 あらかじめモデルをGoogleDriveに保存する
使いたいモデルをサイトからGoogleDriveに保存する方法を記載する。なお無駄なくサイトから直接GoogleDriveにコピーできる方法を最後に記載した(4番目)。
ここではGitHub からのモデルデータを一旦PCに保存してからGoogle Drive にコピーする方法を説明する。とりあえず有名な3モデルのダウンロード方法を全て記載したが、1つだけでも良いし他のモデルを追加してもよい。
なお慣れた方には別のノートブックを作成してGitHub からGoogle Drive に直接ダウンロードする方法の方が高速かつ無駄な通信を避けられるのでおすすめ。方法はこの記事の最後に追記した。
3-1-1:Waifu 1.3 のモデルをGoogle Drive に保存する
Waifu Diffusion1.3 モデルを提供するサイト(下のURL)をクリック
hakurei/waifu-diffusion-v1-3 · Hugging Face
3-1-2:Trinart V2 のモデルをGoogle Drive に保存する
Trinart Diffusion V2モデルを提供するサイト(下のURL)をクリック
naclbit/trinart_stable_diffusion_v2 at main
画面の中の trinart_step60000.ckpt
をクリック(他のステップ数のものでもよい)
するとダウンロードを開始するのでしばらく待つ(2.4GB)
ダウンロードフォルダにtrinart_step60000.ckpt
があることを確認
Google Drive の「model」フォルダに移動(または追加)し、そこにダウンロードしたtrinart_step60000.ckpt
をコピー
3-1-3:Stable 1.4/1.5のモデルをGoogle Drive に保存する
Stable Diffusion1.5 モデルを提供するサイト(下のURL)をクリック
runwayml/stable-diffusion-v1-5 at main
初訪問の場合、認証を最初に行う(認証ボタンをクリック、無い場合は承認済み)
画面の中の Download the weightsの中のv1-5-pruned-emaonly.ckpt
をクリック
するとダウンロードを開始するのでしばらく待つ(3.7GB)
ダウンロードフォルダに選んだ`v1-5-pruned-emaonly.ckpt
があることを確認
Google Drive の「model」フォルダに移動(または追加)し、そこにダウンロードした`v1-5-pruned-emaonly.ckpt
をコピー
Stable Diffusion1.4 モデルを提供するサイト(下のURL)をクリック
CompVis/stable-diffusion-v-1-4-original · Hugging Face
初訪問の場合、認証を最初に行う(認証ボタンをクリック、無い場合は承認済み)
画面の中の Download the weightsの中のsd-v1-4.ckpt
かsd-v1-4-full-ema.ckpt
をクリック
するとダウンロードを開始するのでしばらく待つ(3.7GB)
ダウンロードフォルダに選んだSD-v***.ckpt
があることを確認
Google Drive の「model」フォルダに移動(または追加)し、そこにダウンロードしたSD-v***.ckpt
をコピー
3-1-4:DreamBoostで作った新モデル
DreamBoostで作った新モデルを格納しているフォルダ名を確認する。
通常は下記のはず(タグ名をhanakoにした場合)
/content/drive/MyDrive/stable_diffusion_weights/hanako/model.ckpt
ここまでの作業で、自分のGoogle Drive にいつでも取り出せるモデルが配置できたので次に進む。
3-2 ノートにGoogleDriveマウントを追加
最初にcolabのAUTOMATIC1111:Akaibuのノートを開く(下記リンク)。
Google Colab
1番目のコードセルの上にコードセルを追加する(セルのライン上にマウスを移動すると「+コード」と出るのでそれを選択)
追加したコードセルに下記のコードを追記
from google.colab import drive
drive.mount('/content/drive')
これでGoogleDriveのファイルにアクセスできる様になる。
3-3 ノートのwget コマンドを無効にする
モデルをサイトからロードするための5-7行の頭に#を着けてコメントアウト する(GoogleDriveのモデルを使うため不要)
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
%cd 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
3-4 GoogleDriveからモデルをコピーするコマンドを追加
AUTOMATIC1111のフォルダにモデルとVAEをコピーする。複数のモデルの切替やVAEの切替、モデルのマージも可能になっている。
前記のコードセルの下側に新たなコードセルを追加
そこにコピーコマンドを追記
利用やマージしたいモデルは全て/content/stable-diffusion-webui/models/Stable-diffusion/
フォルダにコピーする
VAEは全て/content/stable-diffusion-webui/models/VAE/
フォルダにコピーする
ファイル名は変更しない(ファイル名を見てモデルを切り替えるため)
(下記にサンプルとしてよく利用されるモデルの例を記載、いずれかを選択)
例として、Elysium_Anime_V2モデルとデリダ モデルの2つとWaifuのVAEをコピーする場合を示す。
#!cp /content/drive/MyDrive/models/Elysium_Anime_V2.ckpt /content/stable-diffusion-webui/models/Stable-diffusion/
#!cp /content/drive/MyDrive/models/derrida_final.ckpt /content/stable-diffusion-webui/models/Stable-diffusion/
#!cp /content/drive/MyDrive/models/kl-f8-anime2.ckpt /content/stable-diffusion-webui/models/VAE/
同様によく利用されているモデルの例を示す。
# Waifu Diffusion1.3のモデルを使う場合
!cp /content/drive/MyDrive/models/wifu-v1-3-float16.ckpt /content/stable-diffusion-webui/models/Stable-diffusion/
#!cp /content/drive/MyDrive/models/kl-f8-anime2.ckpt /content/stable-diffusion-webui/models/VAE/
# Trinart Diffusion2.0のモデルを使う場合
!cp /content/drive/MyDrive/models/trinart_step60000.ckpt /content/stable-diffusion-webui/models/Stable-diffusion/
#!cp /content/drive/MyDrive/models/kl-f8-anime2.ckpt /content/stable-diffusion-webui/models/VAE/
# Stable Diffusion1.5のモデルを使う場合
!cp /content/drive/MyDrive/models/v1-5-pruned-emaonly.ckpt /content/stable-diffusion-webui/models/Stable-diffusion/
#!cp /content/drive/MyDrive/models/vae-ft-mse-840000-ema-pruned /content/stable-diffusion-webui/models/VAE/
# DreamBoostで作った新モデルを使う場合(タグ名がhanakoの場合)
!cp /content/drive/MyDrive/stable_diffusion_weights/hanako/model.ckpt /content/stable-diffusion-webui/models/Stable-diffusion/
#!cp /content/drive/MyDrive/models/vae-ft-mse-840000-ema-pruned /content/stable-diffusion-webui/models/VAE/
# NovelAIDIffusionのモデルを使う場合
!cp /content/drive/MyDrive/models/animefull-final-pruned.ckpt /content/stable-diffusion-webui/models/Stable-diffusion/
!cp /content/drive/MyDrive/models/animevae.pt /content/stable-diffusion-webui/models/VAE/
# Anything3.0のモデルを使う場合
!cp /content/drive/MyDrive/models/Anything-V3.0.ckpt /content/stable-diffusion-webui/models/Stable-diffusion/
!cp /content/drive/MyDrive/models/Anything-V3.0-pruned.ckpt /content/stable-diffusion-webui/models/VAE/
# EimisAnimeDiffusionのモデルを使う場合
!cp /content/drive/MyDrive/models/EimisAnimeDiffusion_1-0v.ckpt /content/table-diffusion-webui/models/Stable-diffusion/
!cp /content/drive/MyDrive/models/Anything-V3.0-pruned.ckpt /content/stable-diffusion-webui/models/VAE/
# Evt_V2のモデルを使う場合
!cp /content/drive/MyDrive/models/evt_v2-ema-pruned.ckpt /content/stable-diffusion-webui/models/Stable-diffusion/
!cp /content/drive/MyDrive/models/Anything-V3.0-pruned.ckpt /content/stable-diffusion-webui/models/VAE/
# HENTAI Diffusion 17のモデルを使う場合
!cp /content/drive/MyDrive/models/HD-17.ckpt /content/stable-diffusion-webui/models/Stable-diffusion/
#!cp /content/drive/MyDrive/models/kl-f8-anime2.ckpt /content/stable-diffusion-webui/models/VAE/
※上記のAnything3.0以降のモデルの入手方法:
programmingforever.hatenablog.com
※モデルをマージする方法:
programmingforever.hatenablog.com
※その他Textual Inversionなどのファイルの配置方法:
programmingforever.hatenablog.com
3-5 最初から実行
1番上のセルから実行する。エラーも発生しなくなり一式完了したら現れるURL(ローカルではない2番目の方)をクリックすると、web UIが別画面で起動する。
web UI起動時にユーザー名とパスワードを入力するようになったので(コードでカットも可能)、起動時にユーザー名:me、パスワード:qwerty を入力すると使える。このユーザー名とパスワードは自由に編集できる。
画面はプロンプトにcute cat ear maid
を入れて生成した例。
プロンプト:cute cat ear maid
完成したノートブックはいつでも使える様に保存することをお勧めする。
今回の方法であれば、web UIを起動するまでの時間も5分を切る。Google colabでAUTOMATIC1111を運用したい方には是非お勧めしたい。
④モデルをサイトから直接GoogleDriveにコピー
サイトにあるモデルをPCを経由せず直接GoogleDriveにダウンロードする方法。この方法であれば、PCにダウンロード&Google Drive にアップロードする通信が不要となり、通信時間の大幅な短縮と通信量の削減が期待できる。またこのノートブックを保存すれば、類似のモデルを保存する際にも役立つ。
4-1:モデル格納用のフォルダを用意する
フォルダ名は適当に付けたものなので各自で好きな名前を付けて良い(コードの修正は必要)
4-2:colabで新規ノートブックを作成
4-3:1番目のセルを作成:colabがGoogleDriveを使える様にする
from google.colab import drive
drive.mount('/content/drive')
4-4:2番目のセル:バグ回避
次にすぐにwget コマンドを実行すると何故かGoogleDriveを認識しない様なので?、単に上記で用意したモデルを格納する先のフォルダの内容を表示するlsコマンドだけを書く。
!ls /content/drive/MyDrive/models/
中にファイルがあれば表示、何も無ければ表示されない(ここでエラーが出なければOK)
4-5:3番目のセル:モデルをダウンロードするコード
3番目のセルに入力:Stable Diffusion 1.4をダウンロードする場合の例:
3番目のセルに、GitHub からstable-diffusion-v-1-4-originalをGoogle Drive の中にダウンロードするコードを作成
注意:あらかじめstable-diffusion-v-1-4-originalのサイトのログインして認証を済ませておく(以下サイト)
CompVis/stable-diffusion-v-1-4-original · Hugging Face
Stable Diffusionの1.5までのモデルは認証が必要なのでトーク ンを送るコードが必要(下記)
# Stable Diffusion1.5までuser_token, user_headerが必要
user_token = "<自分のアクセストークンを入れる>" #@param {type:"string"}
user_header = f"\"Authorization: Bearer {user_token}\""
!wget --header={user_header} https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/resolve/main/sd-v1-4.ckpt -O /content/drive/MyDrive/models/
Waifu Diffusionなどそれ以外のモデルはwget コードのみで良い
# それ以外のモデルはwgetコードのみでOK(例:Waifu Diffusion1.3 float16)
!wget https://huggingface.co/hakurei/waifu-diffusion-v1-3/blob/main/wd-v1-3-float16.ckpt -O /content/drive/MyDrive/models/
4-6:ノートブックを保存
このノートブックをモデル保存用としてstore_modelなどの名前で保存すると、次回以降も簡単に保存できる
まとめ:③のコード一式
# ①GoogleDriveをマウントする
from google.colab import drive
drive.mount('/content/drive')
# ②実行コードのロード (wgetなど不要な3行目以降を割愛)
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
%cd stable-diffusion-webui
# ③GoogleDriveからモデルやVAEをコピー
!cp /content/drive/MyDrive/models/wd-v1-3-float16.ckpt /content/stable-diffusion-webui/models/Stable-diffusion/
!cp /content/drive/MyDrive/models/trinart_step60000.ckpt /content/stable-diffusion-webui/models/Stable-diffusion/
!cp /content/drive/MyDrive/models/kl-f8-anime2.ckpt /content/stable-diffusion-webui/models/VAE/
# ④実行コマンド
!COMMANDLINE_ARGS="--share --gradio-debug --gradio-auth me:qwerty" REQS_FILE="requirements.txt" python launch.py
まとめ:④のコード一式
# ①GoogleDriveをマウントする
from google.colab import drive
drive.mount('/content/drive')
# ②バグ回避でlsコマンド
!ls /content/drive/MyDrive/models/
# サイトにあるモデルを直接GoogleDriveにダウンロード
# Stable Diffusion1.5まではuser_token, user_headerが必要、それ以外は1-2行目不要
user_token = "<自分のアクセストークンを入れる>" #@param {type:"string"}
user_header = f"\"Authorization: Bearer {user_token}\""
!wget --header={user_header} https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/resolve/main/sd-v1-4.ckpt -O /content/drive/MyDrive/models/