Automatic 1111 / Google Colab で Stable Diffusion 2.1 入門 (ブログ)
作成 : Masashi Okumura (@ClassCat)
作成日時 : 10/24/2023
* サンプルコードの動作確認はしておりますが、動作環境によりコードの追加変更が必要な場合はあるかもしれません。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Website: www.classcat.com ; ClassCatJP
Automatic 1111 / Google Colab で Stable Diffusion 2.1 入門
Stable Diffusion 1.5 の入門記事、SDXL の入門記事 に続いて、Stable Diffusion 2.1 の利用方法についても簡単に説明しておきます。
単に Google Colab 環境で Stable Diffusion WebUI (AUTOMATIC1111) を基本的な使い方をするだけならば Stable Diffusion 2.1 でも特に違いはありません。
Google Colab の設定
Google Colab では以下の設定が必要になります :
- GPU が利用できるようにします。Tesla T4 でも動作します。
いずれも [ランタイム] > [ランタイムのタイプを変更] メニューから設定可能です :
- ハードウェアアクセラレータ : T4 GPU
- ランタイムの仕様 : デフォルト
環境の確認
接続したら、最初に動作環境の確認をしておきます。
まずは GPU から。Tesla T4 が利用可能になっています :
!nvidia-smi
Tue Oct 24 06:38:13 2023 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 525.105.17 Driver Version: 525.105.17 CUDA Version: 12.0 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 Tesla T4 Off | 00000000:00:04.0 Off | 0 | | N/A 49C P8 9W / 70W | 0MiB / 15360MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
次にシステムメモリです :
!free -h
total used free shared buff/cache available Mem: 12Gi 691Mi 9.4Gi 1.0Mi 2.6Gi 11Gi Swap: 0B 0B 0B
xFormers のインストール
xFormers は FAIR が開発したメモリ効率的なアテンションのための Transformers 用ライブラリです。利用する Stable Diffusion WebUI が xFomers を想定してるので依存関係ライブラリとともに事前にインストールしておきます :
!pip install -q xformers==0.0.22 triton
Stable Diffusion WebUI のインストール
準備ができましたので、Stable Diffusion WebUI のインストールを開始します。と言っても git で複製するだけです :
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui -b v1.6.0 /content/stable-diffusion-webui
Stable Diffusion WebUI は AUTOMATIC1111 (オートマチック・イレブンイレブンと読む場合が多いです) のものを使用しています。派生したプロジェクトは多いですが、ここではオリジナルのものを利用しました。
現時点での最新ステーブル版である v1.6.0 のブランチを使用しています。
モデル・チェックポイントのインストール
Stable Diffusion WebUI にはデフォルトではモデル・チェックポイントは含まれていません。
今回は Stable Diffusion 2.1 モデルを利用することが目的ですので、🤗 ハブ上のベースモデル stabilityai/stable-diffusion-2-1 のチェックポイントを取得しましょう :
!wget https://huggingface.co/stabilityai/stable-diffusion-2-1/resolve/main/v2-1_768-ema-pruned.safetensors \
-O /content/stable-diffusion-webui/models/v2-1_768-ema-pruned.safetensors
取得したモデル・チェックポイントはディレクトリ models/Stable-diffusion に収めます。
Stable Diffusion WebUI の起動
これで Stable Diffusion WebUI の起動が可能になります。いきなり起動することもできますが、依存関係のインストールのフェイズが長いので “–exit” フラグで先に依存関係のインストールだけを済ませます :
%cd /content/stable-diffusion-webui
!python launch.py --exit
/content/stable-diffusion-webui Python 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0] Version: v1.6.0 Commit hash: 5ef669de080814067961f28357256e8fe27544f4 Installing clip Installing open_clip Cloning Stable Diffusion into /content/stable-diffusion-webui/repositories/stable-diffusion-stability-ai... Cloning into '/content/stable-diffusion-webui/repositories/stable-diffusion-stability-ai'... remote: Enumerating objects: 577, done. remote: Counting objects: 100% (307/307), done. remote: Compressing objects: 100% (91/91), done. remote: Total 577 (delta 246), reused 217 (delta 216), pack-reused 270 Receiving objects: 100% (577/577), 73.43 MiB | 45.77 MiB/s, done. Resolving deltas: 100% (278/278), done. Cloning Stable Diffusion XL into /content/stable-diffusion-webui/repositories/generative-models... Cloning into '/content/stable-diffusion-webui/repositories/generative-models'... remote: Enumerating objects: 740, done. remote: Counting objects: 100% (383/383), done. remote: Compressing objects: 100% (145/145), done. remote: Total 740 (delta 301), reused 238 (delta 238), pack-reused 357 Receiving objects: 100% (740/740), 22.31 MiB | 36.04 MiB/s, done. Resolving deltas: 100% (377/377), done. Cloning K-diffusion into /content/stable-diffusion-webui/repositories/k-diffusion... Cloning into '/content/stable-diffusion-webui/repositories/k-diffusion'... remote: Enumerating objects: 1302, done. remote: Counting objects: 100% (1302/1302), done. remote: Compressing objects: 100% (412/412), done. remote: Total 1302 (delta 913), reused 1239 (delta 883), pack-reused 0 Receiving objects: 100% (1302/1302), 232.58 KiB | 2.37 MiB/s, done. Resolving deltas: 100% (913/913), done. Cloning CodeFormer into /content/stable-diffusion-webui/repositories/CodeFormer... Cloning into '/content/stable-diffusion-webui/repositories/CodeFormer'... remote: Enumerating objects: 594, done. remote: Counting objects: 100% (245/245), done. remote: Compressing objects: 100% (88/88), done. remote: Total 594 (delta 175), reused 173 (delta 157), pack-reused 349 Receiving objects: 100% (594/594), 17.31 MiB | 33.82 MiB/s, done. Resolving deltas: 100% (286/286), done. Cloning BLIP into /content/stable-diffusion-webui/repositories/BLIP... Cloning into '/content/stable-diffusion-webui/repositories/BLIP'... remote: Enumerating objects: 277, done. remote: Counting objects: 100% (165/165), done. remote: Compressing objects: 100% (30/30), done. remote: Total 277 (delta 137), reused 136 (delta 135), pack-reused 112 Receiving objects: 100% (277/277), 7.03 MiB | 24.25 MiB/s, done. Resolving deltas: 100% (152/152), done. Installing requirements for CodeFormer Installing requirements Exiting because of --exit argument
依存関係のインストールが完了するのに数分かかります。
問題がなければいよいよ起動です。引数は最適化と gradio 用が中心ですが、テーマはダークにしてみます :
!python launch.py --xformers --opt-sdp-attention --opt-sdp-no-mem-attention --no-half-vae --share --gradio-debug --theme dark
/content/stable-diffusion-webui Python 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0] Version: v1.6.0 Commit hash: 5ef669de080814067961f28357256e8fe27544f4 Launching Web UI with arguments: --no-half-vae --xformers --opt-sdp-attention --opt-sdp-no-mem-attention --share --gradio-debug --enable-insecure-extension-access --disable-nan-check --theme dark 2023-10-24 06:48:38.063939: E tensorflow/compiler/xla/stream_executor/cuda/cuda_dnn.cc:9342] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered 2023-10-24 06:48:38.063995: E tensorflow/compiler/xla/stream_executor/cuda/cuda_fft.cc:609] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered 2023-10-24 06:48:38.064027: E tensorflow/compiler/xla/stream_executor/cuda/cuda_blas.cc:1518] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered 2023-10-24 06:48:39.721340: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT Moving v2-1_768-ema-pruned.safetensors from /content/stable-diffusion-webui/models to /content/stable-diffusion-webui/models/Stable-diffusion. Calculating sha256 for /content/stable-diffusion-webui/models/Stable-diffusion/v2-1_768-ema-pruned.safetensors: Running on local URL: http://127.0.0.1:7860 Running on public URL: https://26fc227d90fc3a9828.gradio.live This share link expires in 72 hours. For free permanent hosting and GPU upgrades, run `gradio deploy` from Terminal to deploy to Spaces (https://huggingface.co/spaces)
Stable Diffusion WebUI への接続と動作確認
起動シークエンスが成功すると、(無料の) Gradio 動作環境が準備されて最後に以下のような出力が確認できます :
pruned.safetensors: Running on local URL: http://127.0.0.1:7860 Running on public URL: https://26fc227d90fc3a9828.gradio.live This share link expires in 72 hours. For free permanent hosting and GPU upgrades, run `gradio deploy` from Terminal to deploy to Spaces (https://huggingface.co/spaces)
public URL “https://xxx.gradio.live” をクリックすれば以下のような Stable Diffusion WebUI にアクセスできます。
例えば、プロンプトとして “a pair of norwegian forest cats sitting on the lawn surrounded by trees in the forest,” を入力して、画面右サイドにある “Generate” ボタンをクリックすれば数秒で画像が生成されます :
Stable Diffusion WebUI の終了
WebUI を終了するには、Colab の起動したセルを強制終了するだけです (該当セルの左側の実行中を示す、クルクル回転しているボタンをマウスでクリックすれば良いです)。
終了後は以下の 2 つの作業を忘れないでください :
- メニュー [ファイル] > [保存] (or Ctrl-S) でノートブックをセーブする。
- メニュー [ランタイム] > [ランタイムを接続解除して削除] でリソースを解放する。
2. のランタイム削除を実行しないと、いつまでも GPU などのリソースを専有していることになりますので注意してください。
以上