Automatic 1111 / Google Colab で SDXL 入門

Automatic 1111 / Google Colab で SDXL 入門 (ブログ)

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

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

 

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

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

ClassCat Chatbot

◆ 人工知能とビジネスをテーマに WEB セミナーを定期的に開催しています。スケジュール
  • お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。

お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。

  • クラスキャット セールス・マーケティング本部 セールス・インフォメーション
  • sales-info@classcat.com  ;  Website: www.classcat.com  ;   ClassCatJP

 

 

Automatic 1111 / Google Colab で SDXL 入門

半年ほど前に PyTorch 2.0 : Google Colab で Stable Diffusion WebUI 入門 を投稿しましたが、SD 1.5 から SDXL 1.0 への移行を考えている人も増えているかと思います。

単に Google Colab 環境で Stable Diffusion WebUI (AUTOMATIC1111) を基本的な使い方をするだけならば SDXL でも特に違いはないのですが、一応 SDXL に特化してインストール・起動方法を簡単に説明します。

  • 時間の経過により一部のライブラリのバージョンは更新されています。

 

Google Colab の設定

Google Colab では以下の設定が必要になります :

  • GPU が利用できるようにします。Tesla T4 でも動作します。

いずれも [ランタイム] > [ランタイムのタイプを変更] メニューから設定可能です :

  • ハードウェアアクセラレータ : T4 GPU
  • ランタイムの仕様 : デフォルト

※「ハイメモリ」設定でなくても起動しました。

 

環境の確認

接続したら、最初に動作環境の確認をしておきます。

まずは GPU から。Tesla T4 が利用可能になっています :

!nvidia-smi
Fri Oct 13 06:53:38 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   59C    P8    12W /  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       558Mi       9.8Gi       1.0Mi       2.3Gi        11Gi
Swap:             0B          0B          0B

 
デフォルトでインストールされている PyTorch のバージョンを確認します。CUDA 11.8 用の PyTorch 2.0.1 がインストールされています :

!pip list | grep -y torch
torch                            2.0.1+cu118
torchaudio                       2.0.2+cu118
torchdata                        0.6.1
torchsummary                     1.5.1
torchtext                        0.15.2
torchvision                      0.15.2+cu118

 

xFormers のインストール

xFormers は FAIR が開発したメモリ効率的なアテンションのための Transformers 用ライブラリです。利用する Stable Diffusion WebUI が xFomers を想定してるので依存関係ライブラリとともに事前にインストールしておきます :

!pip install -q xformers==0.0.20 triton

xformers 0.0.17 から PyTorch 2.0 対応になっています。既に 0.0.21 と 0.0.22 がリリースされていますが、動作確認はまだしておりませんので、ここでは 0.0.20 を使用しています。

 

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 にはデフォルトではモデル・チェックポイントは含まれていません。
今回は SDXL モデルを利用することが目的ですので、🤗 ハブ上のベースモデル stabilityai/stable-diffusion-xl-base-1.0 のチェックポイントを取得しましょう :

!wget https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors \
   -O /content/stable-diffusion-webui/models/sd_xl_base_1.0.safetensors

取得したモデル・チェックポイントはディレクトリ models/Stable-diffusion に収めるのが基本です。なお、suffix safetensors は ckpt よりも安全な形式です。

 

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 | 15.88 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% (393/393), done.
remote: Compressing objects: 100% (157/157), done.
remote: Total 740 (delta 307), reused 236 (delta 236), pack-reused 347
Receiving objects: 100% (740/740), 22.31 MiB | 9.79 MiB/s, done.
Resolving deltas: 100% (378/378), 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% (628/628), done.
remote: Compressing objects: 100% (122/122), done.
remote: Total 1302 (delta 540), reused 566 (delta 506), pack-reused 674
Receiving objects: 100% (1302/1302), 246.83 KiB | 12.99 MiB/s, done.
Resolving deltas: 100% (901/901), 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% (90/90), done.
remote: Total 594 (delta 176), reused 170 (delta 155), pack-reused 349
Receiving objects: 100% (594/594), 17.30 MiB | 9.04 MiB/s, done.
Resolving deltas: 100% (287/287), 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 | 21.83 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
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: --xformers --opt-sdp-attention --opt-sdp-no-mem-attention --no-half-vae --share --gradio-debug --theme dark
2023-10-13 07:01:30.738928: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT
Moving sd_xl_base_1.0.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/sd_xl_base_1.0.safetensors: Running on local URL:  http://127.0.0.1:7860
Running on public URL: https://7ded1e2f2e94d136ca.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)
31e35c80fc4829d14f90153f4c74cd59c90b779f6afe05a74cd6120b893f7e5b
Loading weights [31e35c80fc] from /content/stable-diffusion-webui/models/Stable-diffusion/sd_xl_base_1.0.safetensors
Creating model from config: /content/stable-diffusion-webui/repositories/generative-models/configs/inference/sd_xl_base.yaml
(…)it-large-patch14/resolve/main/vocab.json: 100% 961k/961k [00:00<00:00, 71.3MB/s]
(…)it-large-patch14/resolve/main/merges.txt: 100% 525k/525k [00:00<00:00, 44.9MB/s]
(…)h14/resolve/main/special_tokens_map.json: 100% 389/389 [00:00<00:00, 1.99MB/s]
(…)tch14/resolve/main/tokenizer_config.json: 100% 905/905 [00:00<00:00, 5.14MB/s]
(…)t-large-patch14/resolve/main/config.json: 100% 4.52k/4.52k [00:00<00:00, 19.2MB/s]
Applying attention optimization: xformers... done.
Model loaded in 81.4s (calculate hash: 40.6s, load weights from disk: 2.3s, create model: 3.5s, apply weights to model: 33.3s, apply half(): 0.2s, move model to device: 0.1s, load textual inversion embeddings: 0.2s, calculate empty prompt: 0.9s).
Downloading VAEApprox model to: /content/stable-diffusion-webui/models/VAE-approx/vaeapprox-sdxl.pt
100% 209k/209k [00:00<00:00, 64.5MB/s]

 

Stable Diffusion WebUI への接続と動作確認

起動シークエンスが成功すると、(無料の) Gradio 動作環境が準備されて最後に以下のような出力が確認できます :

Running on local URL:  http://127.0.0.1:7860
Running on public URL: https://7ded1e2f2e94d136ca.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 cat sitting on a tree with autumn leaves" を入力して、画面右サイドにある "Generate" ボタンをクリックすれば 10 秒ほどで画像が生成されます :

 

Stable Diffusion WebUI の終了

WebUI を終了するには、Colab の起動したセルを強制終了するだけです (該当セルの左側の実行中を示す、クルクル回転しているボタンをマウスでクリックすれば良いです)。

終了後は以下の 2 つの作業を忘れないでください :

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

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

 

以上