Stability AIは7月27日、待望の新たな画像生成AIモデル「Stable Diffusion XL 1.0(SDXL 1.0)」を公開した。
Stability AIが運営するAIウェブアプリ「Clipdrop」で試用できるようになっているが、Stable Diffusionの標準的なUIとなっているAUTOMATIC1111氏の「Stable Diffusion web UI」がさっそくSDXLに対応したとのことなので環境を構築してみた。
SDXL 1.0の詳細については速報記事を参照してもらうとして、一応機能的な面だけおさらいしておくと……。
標準画像解像度はこれまでの倍にあたる1024×1024ピクセル。2つのモデルを併用する仕組みになっており、まず3.5B(35億)パラメーターの「ベース(Base)」モデルで一度128×128ピクセルで生成した画像を、6.6B(66億)パラメーターの「リファイナー(Refiner)」モデルで1024×1024ピクセルにアップスケールしつつ精度を上げていくという手法を取っている。
これにより、8GBのビデオメモリーしか搭載していないような民生グラフィックスボードやクラウドサービスでもロバストな(訓練データに存在しない新しいパターンや異常値に対しても適切に対応できる)画像生成を可能としている。
今回はStable Diffusionをローカルで使用する際のデファクトスタンダードとなっているAUTOMATIC1111氏の「Stable Diffusion web UI」環境にSDXL 1.0をインストールし、画像を生成した。
なお、今回は既にWindowsマシンにPython、Git、Stable Diffusion web UIなどのインストールが済んでいる状態から始めることとする。
Stable Diffusion実行環境の作り方は次週スタートの新連載で詳しく説明していくのでお楽しみに。
参考:筆者使用のマシンスペック
CPU | Core i7-13700F(2.1GHz) 16コア24スレッド |
---|---|
グラフィックス | NVIDIA GeForce RTX 4070 12GB |
メモリー | 16GB DDR4 3200MHz |
SSD | 500GB(M.2) |
電源 | 850W(80+GOLD) |
まずは環境構築 web UIが入っていれば簡単
まずはStable Diffusion web UIのアップデートだ。既にレポジトリをクローンしてあるので「git pull」するだけ。一瞬でVer.1.5.1にアップデートされた。
次にSDXL 1.0本体となるBASEモデルをダウンロードし、「models\Stable-diffusion」にコピー。
同様にRefinerモデルもダウンロード。こちらも「models\Stable-diffusion」にコピーする。
VAEも専用のものをダウンロード、こちらは「models\VAE」にコピー。
最後に、起動時に使用する「webui-user.bat」をエディターで開き、起動パラメータに「--xformers --no-half-vae」を追加。後はwebuiを起動すればOKだ。
「Base」でも高精彩! 生成時間はRTX4070なら20秒程度
環境ができたところで、とりあえず1枚生成してみよう。SDXL 1.0は本来「Base」モデルで生成した後、自動的に「Refiner」モデルにパイプで渡されることを想定しているのだろうが、現在はStable Diffusion web UIではモデル1つずつしか利用できないので、まず「Base」モデルだけを使用する。
モデルに「stable-diffusion-xl-base-1.0」、VAEに「sdxl_vae.safetensors」を指定。
Sampling Methodは「DDIM」「PLMS」「UniPC」が使えないので「DPM++ SDE Karass」を選択。Sampling Stepを「30」、画像サイズはWidth、Heightともに「1024」に指定した。
本来なら「Base」モデルは「128×128」で生成して「Refiner」モデルに送るのでは?と思ったのだが、その方法ではうまくいかなかった。
プロンプトはシンプルに「masterpiece,best quality,portrait,1 girl,」。ネガティブプロンプトは「(worst quality, low quality:1.4),」だけにしておいた。この結果、生成されたのがこの画像だ。
おお!!さすが細部まで書き込まれている。生成時間はNVIDIA GeForce RTX 4070(12GB)環境下でおよそ20秒だ。
タスクマネージャーを開いてみると、GPU使用率、メモリー使用率、GPU温度ともになかなかのフル回転ぶりを見せていた。