Automatic 1111 / Google Colab で Stable Diffusion 2.1 入門

Automatic 1111 / Google Colab で Stable Diffusion 2.1 入門 (ブログ)

作成 : Masashi Okumura (@ClassCat)
作成日時 : 10/24/2023

* サンプルコードの動作確認はしておりますが、動作環境によりコードの追加変更が必要な場合はあるかもしれません。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

クラスキャット 人工知能 研究開発支援サービス

クラスキャット は人工知能・テレワークに関する各種サービスを提供しています。お気軽にご相談ください :

ClassCat Chatbot

◆ 人工知能とビジネスをテーマに WEB セミナーを定期的に開催しています。スケジュール
  • お住まいの地域に関係なく 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 つの作業を忘れないでください :

  1. メニュー [ファイル] > [保存] (or Ctrl-S) でノートブックをセーブする。
  2. メニュー [ランタイム] > [ランタイムを接続解除して削除] でリソースを解放する。

2. のランタイム削除を実行しないと、いつまでも GPU などのリソースを専有していることになりますので注意してください。

 

以上