スポンサーリンク

SDXL 1.0 を Stable Diffusion WebUI で使う方法

big_city
記事内に広告が含まれています。
スポンサーリンク

私の Stable Diffusion の使い方

WSL2 含む Ubuntu に NVIDIA CUDA をインストールする方法、アンインストールする方法については「こちらのページ 」で紹介しています。複数の CUDA のバージョンが共存できます。
WSL2 含む Ubuntu に NVIDIA cuDNN ライブラリをインストールする方法について「こちらのページ 」で紹介しています。cuDNN ライブラリのダウンロードは要ユーザー登録です。
2024年5月2日現在の最新の Stable Diffusion WebUI の最新バージョンは、4月23日に公開された v1.9.3 です。v1.7.0 を SDXL 1.0 を含め WSL2 Ubuntu 22.04 LTS にゼロからインストールする方法は「こちらのページ 」、v1.8.0 へバージョンアップする記事は「こちらのページ 」、v1.9.0 へバージョンアップする記事は「こちらのページ 」に記載しています。

この日記では Stable Diffusion で生成した画像をアイキャッチ画像に使用しています。Stable Diffusion を使い始めた直後はコマンドラインベースで、その後は AUTOMATIC1111 版の Stable Diffusion WebUI を WSL2 Ubuntu にインストールし、複数枚の画像を生成して、好みに合うものを選んで使うようになりました。その経過をまとめたのが以下の記事になります。

256 x 256 サイズの画像を1枚ずつ生成していた頃と比較すると、画像の生成環境としては整ってきました。Stable Diffusion のモデルも 2.1 を使用して、プロンプトの調整は難しいですが、少しずつ意図した画像が生成されるようになってきました。

PyTorch も 2.0 にアップデートし、xformers を使わずに PyTorch 2.0 の高速化手法を使用するようにしました。

現在の環境では、WordPress のアイキャッチ画像の推奨サイズの 1200 x 630 の画像4枚の生成に約30秒を要しています。ハズレも多いですが、img2img で微調整すれば希望に近い画像が生成できるようになってきました。

とはいえ、プロンプトの指定が難しく、歩留りはあまり高くありません。繰り返し生成を続けなければならず、時間を要していました。画像の歩留りを上げるには、プロンプトの指定方法をもっと勉強しなければならないかと考えていました。

このような状況で、簡単なプロンプトの指定で画像がこれまでよりも綺麗に生成できる Stable Diffusion XL 1.0 が公開されている事を知りました。Stable Diffusion WebUI でも使えるようになりましたので、早速使ってみる事にしました。

スポンサーリンク

Stable Diffusion XL 1.0 公開

Stable Diffusion XL 1.0 (SDXL 1.0) は 2023年7月26日に公開されました。

Stable Diffusion WebUI (AUTOMATIC1111版) では、2023年8月現在で公開されているバージョンで SDXL 1.0 を使用する事ができるようになっています。

SDXL 1.0 & Stable Diffusion WebUI を WSL2 Ubuntu で動作させる

SDXL 1.0 は Stable Diffusion WebUI (AUTOMATIC1111) の Ver.1.5.0 以降で対応しています。2023年8月現在の最新版は Ver.1.5.1 です。

Stable Diffusion 2.1 で使用している環境でも、モデルと VAE の追加と少しの調整で SDXL 1.0 を使えるようになりますが、丁度良い機会ですのでゼロから Stable Diffusion WebUI (AUTOMATIC1111版) の環境を作る事にしました。

Stable Diffusion WebUI を WSL2 Ubuntu にゼロからインストール

WSL2 Ubuntu 23.04 (lunar) に Stable Diffusion WebUI 1.5.1 をゼロからインストールし、Stable Diffusion XL 1.0 で画像を生成するまでの手順を以下に記載します。

Ubuntu 23.04 (lunar) を使ったのは、

  • 使用中の Stable Diffusion WebUI の環境を維持したかった
  • Utuntu 22.04 LTS 以外の環境で Stable Diffusion WebUI が使えるかどうかの確認

の為で、Ubuntu 22.04 LTS でも同じ作業でインストールできると思います。

PyTorch と CUDA のバージョンの確認 (PyTorch-2.0.1 & CUDA 11.8)

Stable Diffusion WebUI をインストールするにあたって、最初に確認する事は PyTorch と CUDA のバージョンの組み合わせの確認です。

ページの下の方に、PyTorch の Build と、組み合わせられる条件の表があります。今回は、

  • PyTorch Stable (2.0.1)
  • Linux (WSL2 もこちら)
  • Pip (Stable Diffusion WebUI は内部で Pip を使用)
  • Python
  • CUDA 11.8

を選択すると、一番下に URL が表示されます。

PyTorch と CUDA の組み合わせの確認

この URL を読み込み、一覧から torch を選択すると、Python の whl 形式のファイルの一覧が表示されます。

PyTorch と CUDA と Python の組み合わせ

torch-2.0.1 + CUDA 11.8 の組み合わせでは、

  • Python 3.8
  • Python 3.9
  • Python 3.10
  • Python 3.11

の、Linux 版と Windows 版が使用できます。

今回は、PyTorch 2.0.1 と CUDA 11.8 の組み合わせで Stable Diffusion WebUI をインストールする事にしました。

WSL2 Ubuntu の環境 (Ubuntu 23.04)

WSL2 Ubuntu は、前述の通り Ubuntu 23.04 (lunar) を使用します。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 23.04
Release:        23.04
Codename:       lunar

$ python3 -V
Python 3.11.4

WSL2 Ubuntu 23.04 (lunar) は、Microsoft Store にも wsl --list --online にも表示されません。一旦 Ubuntu 22.04 LTS (jammy) をインストールした後でアップグレードする必要があります。アップグレードの手順についてはググると色々見つかります。例えば、WSL2 の手順ではありませんが、私は以下の手順でアップグレードしました。

Stable Diffusion WebUI の Python の推奨バージョンは 3.10.6 で、特に Windows 版の場合には Python のバージョンを厳守するように記載されています。

それに対して Ubuntu 23.04 (lunar) の Python3 のバージョンは 3.11.4 ですが、前項で確認したように、Linux 版の PyTorch-2.0.1 と CUDA 11.8 の組み合わせでも Python 3.11 は対応していますので、問題なくインストールできます。

nVidia CUDA Toolkit 11.8 のインストール

以下のサイトからインストールします。

CUDA Toolkit 11.8 Downloads

以下の項目を選択します。

  • Linux
  • X86_64
  • WSL-Ubuntu
  • 2.0
  • deb (local)

全て選択すると、下部に「Base Installer」というインストール手順が表示されます。これを一行ずつ実行すれば、CUDA 11.8 Toolkit がインストールできます。

$ wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
$ sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
$ sudo dpkg -i cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
$ sudo cp /var/cuda-repo-wsl-ubuntu-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
$ sudo apt-get update
$ sudo apt-get -y install cuda

それぞれの行で実行している内容については、過去記事で説明していますので、興味のある方はご覧ください。

CUDA 11.8 が正常にインストールされているかどうか確認します。(CUDA 11.8 から、パッケージ名の先頭の nvidia が無くなりました)

$ dpkg -l | grep -i 'cuda-toolkit-11-8 ' | tr -s ' ' ' '
ii cuda-toolkit-11-8 11.8.0-1 amd64 CUDA Toolkit 11.8 meta-package

$ nvidia-smi
Sat Aug 19 17:42:10 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.86.01              Driver Version: 536.67       CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| 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  NVIDIA GeForce RTX 3060        On  | 00000000:08:00.0  On |                  N/A |
|  0%   41C    P8              12W / 170W |   1704MiB / 12288MiB |      4%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A       337      G   /Xwayland                                 N/A      |
+---------------------------------------------------------------------------------------+

$ /usr/local/cuda-11.8/bin/nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:33:58_PDT_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0

nVidia GeForce RTX 3060 が正常に認識されています。ビデオメモリも 12288 MiB (12GB) です。

必要なパッケージの事前インストール

Stable Diffusion WebUI を Linux (WSL含む) で使用する場合に必要なパッケージをインストールします。必ず必要なのは、wget、git、python3、python3-venv の 4つです。

# Debian-based:
$ sudo apt install wget git python3 python3-venv

# TCMalloc のエラー回避
$ sudo apt install --no-install-recommends google-perftools

# wsl-open, xdg-open のエラー回避
$ sudo apt install --no-install-recommends npm
$ sudo npm install -g wsl-open
$ sudo apt install --no-install-recommends xdg-utils

以下の項目は必須ではありませんが、Stable Diffusion WebUI を使用する際にエラーが発生する事がありますので、事前にインストールしておいた方が良いかと思います。

TCMalloc のエラー回避については、以下のページを参照下さい。

wsl-open のエラー回避については、以下のページを参照下さい。

xdg-open は、拡張機能の Config-Presets で設定ファイルを開く際に使用します。

Stable Diffusion WebUI のインストール (git clone)

Stable Diffusion WebUI をインストールします。区別する為に、SDXL ディレクトリの中で clone します。(まだ実行はしません)

$ mkdir SDXL
$ cd SDXL
$ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
Cloning into 'stable-diffusion-webui'...
remote: Enumerating objects: 26179, done.
remote: Counting objects: 100% (566/566), done.
remote: Compressing objects: 100% (266/266), done.
remote: Total 26179 (delta 371), reused 457 (delta 296), pack-reused 25613
Receiving objects: 100% (26179/26179), 31.89 MiB | 25.88 MiB/s, done.
Resolving deltas: 100% (18329/18329), done.
$ cd stable-diffusion-webui/

オプション設定 (webui-user.sh)

必要なオプションを設定します。webui-user.sh を編集します。

  • --medvram : メイン RAN を使い VRAM の負担を軽減するオプション
  • --no-half-vae : SDXL 1.0 で綺麗な画像を生成する為のオプション
  • --opt-sdp-attention --opt-sdp-no-mem-attention : PyTorch 2.0 用の高速化オプション

COMMANDLINE_ARGS 変数をコメントアウトして、オプションを追加します。

--- webui-user.sh.orig  2023-08-19 17:52:47.715875276 +0900
+++ webui-user.sh       2023-08-19 18:06:23.945896817 +0900
@@ -10,7 +10,7 @@
 #clone_dir="stable-diffusion-webui"

 # Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention"
-#export COMMANDLINE_ARGS=""
+export COMMANDLINE_ARGS="--medvram --no-half-vae --opt-sdp-attention --opt-sdp-no-mem-attention"

 # python3 executable
 #python_cmd="python3"

medvram オプションは、ビデオカードの VRAM の使用量を減らし、代わりにメイン PC の RAM を使用します。nVidia GeForce RTX 3060 12GB の場合には、このオプションが無くても画像を生成する事ができましたが、使用の有無によってどの位の影響が出るのかを後半で検証します。

SDXL 1.0 の Model と VAE の入手

SDXL 1.0 の Model と VAE を入手して、決められたディレクトリに配置します。

種類配置するディレクトリ
Model~/SDXL/stable-diffusion-webui/models/Stable-diffusion/
VAE~/SDXL/stable-diffusion-webui/models/VAE
Model と VAE の配置ディレクトリ

SDXL 1.0 の Model は2種類あります。sd_xl_base_1.0.safetensors と sd_xl_refiner_1.0.safetensors です。共に 6.9 GB あります。

SDXL 1.0 の VAE は以下にあります。sdxl_vae.safetensors です。

ファイル名の右側にある Download アイコンを押すとダウンロードできます。(右クリックで URL をコピーして、該当のディレクトリで wget で落とすと簡単です)

ファイル名をクリックすると、sha256 のチェックサムが書かれていますので、ダウンロード終了後に比較して合っているかを確認しておくと安心です。

$ sha256sum sdxl_vae.safetensors
63aeecb90ff7bc1c115395962d3e803571385b61938377bc7089b36e81e92e2e  sdxl_vae.safetensors

webui.sh 実行 (初回は時間要す)

webui.sh を実行します。初回は各パッケージのインストールが順次行われますので、時間を要します。気長に待ちます。少し長いですが、正常に起動した際のログを下記に記載しておきます。2回目以降はパッケージのインストールがありませんので、直ぐに使用する事が出来ます。

Stable Diffusion WebUI 1.5.1、PyTorch-2.0.1、CUDA 11.8、Python 3.11.4 で実行されている事が分かります。

$ webui.sh
################################################################
Install script for stable-diffusion + Web UI
Tested on Debian 11 (Bullseye)
################################################################

################################################################
Running on hiro user
################################################################

################################################################
Repo already cloned, using it as install directory
################################################################

################################################################
Create and activate python venv
################################################################

################################################################
Launching launch.py...
################################################################
Using TCMalloc: libtcmalloc_minimal.so.4
Looking in indexes: https://pypi.org/simple, https://download.pytorch.org/whl/cu118
Collecting torch==2.0.1
  Downloading https://download.pytorch.org/whl/cu118/torch-2.0.1%2Bcu118-cp311-cp311-linux_x86_64.whl (2267.3 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.3/2.3 GB 3.2 MB/s eta 0:00:00
Collecting torchvision==0.15.2
  Downloading https://download.pytorch.org/whl/cu118/torchvision-0.15.2%2Bcu118-cp311-cp311-linux_x86_64.whl (6.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.1/6.1 MB 14.4 MB/s eta 0:00:00
Collecting filelock
  Downloading filelock-3.12.2-py3-none-any.whl (10 kB)
Collecting typing-extensions
  Using cached typing_extensions-4.7.1-py3-none-any.whl (33 kB)
Collecting sympy
  Downloading sympy-1.12-py3-none-any.whl (5.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.7/5.7 MB 34.7 MB/s eta 0:00:00
Collecting networkx
  Downloading networkx-3.1-py3-none-any.whl (2.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 76.6 MB/s eta 0:00:00
Collecting jinja2
  Downloading https://download.pytorch.org/whl/Jinja2-3.1.2-py3-none-any.whl (133 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 133.1/133.1 kB 40.9 MB/s eta 0:00:00
Collecting triton==2.0.0
  Downloading https://download.pytorch.org/whl/triton-2.0.0-1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (63.3 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 63.3/63.3 MB 16.5 MB/s eta 0:00:00
Collecting numpy
  Downloading numpy-1.25.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 18.2/18.2 MB 64.3 MB/s eta 0:00:00
Collecting requests
  Downloading requests-2.31.0-py3-none-any.whl (62 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.6/62.6 kB 19.7 MB/s eta 0:00:00
Collecting pillow!=8.3.*,>=5.3.0
  Downloading Pillow-10.0.0-cp311-cp311-manylinux_2_28_x86_64.whl (3.4 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.4/3.4 MB 81.5 MB/s eta 0:00:00
Collecting cmake
  Downloading cmake-3.27.2-py2.py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (26.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 26.1/26.1 MB 76.8 MB/s eta 0:00:00
Collecting lit
  Downloading lit-16.0.6.tar.gz (153 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 153.7/153.7 kB 44.1 MB/s eta 0:00:00
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Installing backend dependencies: started
  Installing backend dependencies: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Collecting MarkupSafe>=2.0
  Using cached MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (28 kB)
Collecting charset-normalizer<4,>=2
  Downloading charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (199 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 199.6/199.6 kB 37.2 MB/s eta 0:00:00
Collecting idna<4,>=2.5
  Downloading https://download.pytorch.org/whl/idna-3.4-py3-none-any.whl (61 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.5/61.5 kB 20.2 MB/s eta 0:00:00
Collecting urllib3<3,>=1.21.1
  Downloading urllib3-2.0.4-py3-none-any.whl (123 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 123.9/123.9 kB 28.6 MB/s eta 0:00:00
Collecting certifi>=2017.4.17
  Downloading certifi-2023.7.22-py3-none-any.whl (158 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 158.3/158.3 kB 43.3 MB/s eta 0:00:00
Collecting mpmath>=0.19
  Downloading mpmath-1.3.0-py3-none-any.whl (536 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 536.2/536.2 kB 68.2 MB/s eta 0:00:00
Building wheels for collected packages: lit
  Building wheel for lit (pyproject.toml): started
  Building wheel for lit (pyproject.toml): finished with status 'done'
  Created wheel for lit: filename=lit-16.0.6-py3-none-any.whl size=93583 sha256=445ca16508800c437231a964d1687c6c084efdc6ba64508f46afbadde96f638a
  Stored in directory: /home/hiro/.cache/pip/wheels/ab/84/e4/5af8c76af9e5bee472e825f1451c18bb3b261d80a7b3ec7f8a
Successfully built lit
Installing collected packages: mpmath, lit, cmake, urllib3, typing-extensions, sympy, pillow, numpy, networkx, MarkupSafe, idna, filelock, charset-normalizer, certifi, requests, jinja2, triton, torch, torchvision
Successfully installed MarkupSafe-2.1.3 certifi-2023.7.22 charset-normalizer-3.2.0 cmake-3.27.2 filelock-3.12.2 idna-3.4 jinja2-3.1.2 lit-16.0.6 mpmath-1.3.0 networkx-3.1 numpy-1.25.2 pillow-10.0.0 requests-2.31.0 sympy-1.12 torch-2.0.1+cu118 torchvision-0.15.2+cu118 triton-2.0.0 typing-extensions-4.7.1 urllib3-2.0.4
Python 3.11.4 (main, Jun  9 2023, 07:59:55) [GCC 12.3.0]
Version: v1.5.1
Commit hash: 68f336bd994bed5442ad95bad6b6ad5564a5409a
Installing torch and torchvision
Installing gfpgan
Installing clip
Installing open_clip
Cloning Stable Diffusion into /home/hiro/SDXL/stable-diffusion-webui/repositories/stable-diffusion-stability-ai...
Cloning Stable Diffusion XL into /home/hiro/SDXL/stable-diffusion-webui/repositories/generative-models...
Cloning K-diffusion into /home/hiro/SDXL/stable-diffusion-webui/repositories/k-diffusion...
Cloning CodeFormer into /home/hiro/SDXL/stable-diffusion-webui/repositories/CodeFormer...
Cloning BLIP into /home/hiro/SDXL/stable-diffusion-webui/repositories/BLIP...
Installing requirements for CodeFormer
Installing requirements
Launching Web UI with arguments: --no-half-vae --opt-sdp-attention --opt-sdp-no-mem-attention
no module 'xformers'. Processing without...
no module 'xformers'. Processing without...
No module 'xformers'. Proceeding without it.
Calculating sha256 for /home/hiro/SDXL/stable-diffusion-webui/models/Stable-diffusion/sd_xl_base_1.0.safetensors: Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.
Startup time: 172.8s (launcher: 168.0s, import torch: 2.1s, import gradio: 0.6s, setup paths: 0.6s, other imports: 0.7s, load scripts: 0.3s, create ui: 0.4s).
31e35c80fc4829d14f90153f4c74cd59c90b779f6afe05a74cd6120b893f7e5b
Loading weights [31e35c80fc] from /home/hiro/SDXL/stable-diffusion-webui/models/Stable-diffusion/sd_xl_base_1.0.safetensors
Creating model from config: /home/hiro/SDXL/stable-diffusion-webui/repositories/generative-models/configs/inference/sd_xl_base.yaml

これで http://127.0.0.1:7860 にウェブブラウザでアクセスすれば、Stable Diffusion WebUI が使えるようになります。

VAE を選択できるように設定

Stable Diffusion WebUI をインストールした直後は、使用する VAE を選択できないようになっています。VAE を選択できるように設定を変更します。以下のページを参考にしました。

Setting (設定) -> User interface (ユーザーインターフェース) を選択します。

Setting (設定) を選択
User interface (ユーザーインターフェース) を選択

Quicksettings list (クイック設定) に 「sd_vae」を追加します。途中まで入力すると選択肢が表示されますので、その中から選択すれば OK です。

Quicksettings list に sd_vae を追加

上部にある「Apply Settings (設定を適用)」、「Reload UI (UI の再読み込み)」を押すと、txt2img タブに VAE の選択項目が追加されます。

SD_VAE の項目が追加された

SDXL 1.0 モデルで生成できる画像のサイズ、他の条件

SDXL 1.0 のモデルで生成する画像のサイズや条件は、最適なものが提示されています。

画像サイズ含め、一覧にまとめた方がいましたので、下記リンクを確認下さい。

1024 x 1024 が標準ですが、横長や縦長のサイズでも、リンク先の表の画像サイズでは正常に画像を生成できるようです。

また、下記パラメータについては、Default と推奨範囲が指定されています。

  • Sampling steps (サンプリングステップ数) : Default 30, 30-50
  • CFG Scale (CFGスケール) : Default 7.0, 4.0-14.0

最初に生成する場合には、

  • 画像サイズ 1024 x 1024
  • Sampling steps 30
  • CFG Scale 7.0
  • Sampling method 'Euler a '
  • Batch size 4

位で始めるのが良いと思います。

SDXL 1.0 モデルを使用した画像の生成

SDXL 1.0 のモデルを使用して画像を生成する場合には、現状では2段階の手順を踏む必要があります (拡張機能を利用する方法については後述します)。

txt2img で SDXL 1.0 base モデルを使用

  • Stable Diffusion checkpoint に sd_xl_base_1.0.safetensors を選択
  • SD_VAE に sdxl_vae.safetensors を選択

この状態でプロンプトを入力し、Generate (生成) を押すと base モデルのみを使用した画像が生成されます。

base モデルで生成した猫
base モデルで生成した犬

img2img で SDXL 1.0 refiner モデルを使用

次に、生成した画像を img2img で転送し、

  • Stable Diffusion checkpoint に sd_xl_refiner_1.0.safetensors を選択
  • Denoising strength (ノイズ除去強度) を 0.2 ~ 0.3 に調整

してから、Generate (生成) を押すと、refiner モデルが適用された画像が生成されます。

refiner モデルを適用した猫
refiner モデルを適用した犬

refiner モデル適用後は、今回の猫と犬の場合には、少し荒が取れたように見えます。

拡張機能のインストール

新しくインストールした Stable Diffusion WebUI の環境では少々使いにくいので、これまでと同様に拡張機能を導入します。

手順は上記リンク先と同様ですので省略します。

  • Config-Presets
  • webui-localization-ja_JP
  • webui-bilingual-localization

の3つをインストールしました。

base, refiner の両方のモデルを順次適用する拡張機能

前述の img2img を使用した base、refiner のモデルを順次適用して画像を生成する方法は煩雑ですので、両方のモデルを順次適用する拡張機能をインストールします。

Install from URL (URL からインストール) するタイプの拡張機能です。

インストール後には、Refiner の項目が表示されますので、Enable Refiner のチェックを入れて、Model (モデル) に sd_xl_refiner_1.0.safetensors を選択します。

Refiner モデルの選択

上部の Stable Diffusion checkpoint は sd_xl_base_1.0.safetensors を選択して、プロンプトを入力してから Generate (生成) を押すと、base -> refiner の順に適用された画像が生成されます。

そのうち Stable Diffusion WebUI 側で対応するかもしれませんが、それまでの間はこちらを使用します。

画像の生成に要する時間と必要なメモリの比較

SDXL 1.0 は短いプロンプトで綺麗な画像を生成できますが、生成に要する時間が長くなり、必要なメモリが多くなります。

SD V2.1 と SDXL 1.0 で、生成時間と必要なメモリを比較しました。SDXL 1.0 では、medvram オプションの有無で違いが生じるかどうかも確認しました。メインメモリ 64 GB、ビデオメモリ 12 GB で、それぞれ使用量をパーセントで表示しています。

画像の生成条件は、それぞれ以下の通りです。

  • SD V2.1 : 768 x 768, Sampling step 30, Sampling method DPM++ 2M Kerras, Batch size 4
  • SDXL 1.0 : 1024 x 1024, Sampling step 40, Sampling method DPM++ 2M Kerras, Batch size 4, base -> refiner 連続
SD種類medvram
オプション
生成時間
1回目 / 2回目
メモリ種類起動前起動直後1回目
生成中
1回目
終了時
2回目
生成中
2回目
終了時
停止後
SD V2.1-35s / 34sメインメモリ14.8%40.7%40.7%40.7%40.7%40.7%14.5%
ビデオメモリ11.3%37.6%50.2%38.2%50.5%38.3%11.0%
SDXL 1.0medvram あり2m25s / 2m14sメインメモリ14.4%53.4%64.3%65.2%65.3%65.3%13.8%
ビデオメモリ13.5%29.5%70.0%58.3%80.9%58.1%13.1%
SDXL 1.0medvram なし2m34s / 2m26sメインメモリ13.8%52.0%59.2%61.7%62.3%63.8%13.8%
ビデオメモリ13.1%73.8%97.8%74.0%95.5%73.8%11.1%
SD V2.1 と SDXL 1.0 のメインメモリ、ビデオメモリ使用率 (medvram オプション有無含む)

結果をまとめると、

  • SD V2.1 では、4枚の画像の生成に約30秒でしたが、SDXL 1.0 では 2分30秒前後と、約5倍の時間を要しています。面積比では1.7倍ですが、それ以上に生成時間が増えています。
  • nVidia GeForce RTX 3060 12GB では、medvram オプション無しでも SDXL 1.0 の画像生成が可能です。とはいえ、ビデオメモリ 12 GB をほぼ使い切る状態です。特に動作が不安定になる事はありませんでした。SD V2.1 では50%前後でしたので、ビデオメモリの使用量は2倍になっています。
  • medvram オプションを有効にすると、画像生成中のビデオメモリの使用率が 96~98% から 70~ 81% に減少します。その分、メインメモリの使用量が 62% から 65% に増加します。
  • 画像の生成時間は、medvram オプション有効の方が速く生成できました。メインメモリとのデータのやり取りが発生するでしょうから、多少遅くなるかと考えていましたが、実際には逆でした。

SD V2.1 と SDXL 1.0 で生成した猫の画像を以下に示します。今回は "cat" のみの短いプロンプトで生成しましたが、画像の質は一目瞭然です。

SD V2.1 で生成した猫
SDXL 1.0 で生成した猫

参考にしたサイト

以下のサイトの内容を参考にさせて頂きました。

まとめ

Stable Diffusion XL 1.0 (SDXL 1.0) を Stable Diffusion WebUI で動作させる手順について紹介しました。Windows 側で実行する場合にはパッケージの管理等が煩雑ですので、WSL2 Ubuntu で動作させる方が容易に環境を構築できると思います。

WSL2 Ubuntu 23.04 (lunar) で、PyTorch-2.0.1、CUDA 11.8、Python 3.11.4 で構築してみました。Python は推奨されているバージョンよりも新しいですが、特に問題なく動作しました。

SDXL 1.0 では、これ以前の SD V2.1 等のモデルと比較して、短いプロンプトで綺麗な画像を生成する事が出来ます。とはいえ、最適化されている画像サイズが大きい事もありますが、生成に要する時間は長く (5倍、4枚で2分30秒)、必要なビデオメモリも多く (12GBを使い切る) なっています。

nVidia GeForce RTX 3060 12GB であれば SDXL 1.0 を (ギリギリではありますが) 動作させる事が出来ます。生成に要する時間が増加しますので、繰り返し生成するのは大変になりますが、画像の歩留りは上がりそうですので、相殺されてくれたらと考えています。

今回のアイキャッチ画像

SDXL 1.0 でプロンプト 'American city' で生成しました。特にネガティブプロンプトは指定せず、1024 x 1024 の画像を生成した後で img2img で 1200 x 632 にリサイズしたものです。簡単なプロンプトで綺麗な画像が生成できるのは便利です。

コメント

タイトルとURLをコピーしました