SDXL 1.0を小型化・高速化したSSD-1B

SDXL 1.0を小型化・高速化したSSD-1B 画像生成

「SDXL 1.0は、モデルサイズが大きい・・・」
「SDXLを用いた画像生成の処理速度をUPしたい」

このような場合には、SSD-1Bがオススメです。
この記事では、SSD-1Bというモデルについて説明しています。

本記事の内容

  • SSD-1Bとは?
  • SSD-1Bの利用方法
  • SSD-1Bの動作確認

それでは、上記に沿って解説していきます。

SSD-1Bとは?

segmind/SSD-1B · Hugging Face
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

SSD-1Bとは、Segmind社が開発したSDXL 1.0ベースのモデルです。
SDXL 1.0のBASEモデルを改良して、小型化と高速化に成功しています。

公式の説明では、SSD-1BはSDXL 1.0に対して次のように改善されているということです。

  • 50%の小型化
  • 60%の高速化

小型化については、パラメータ数に関してという説明もあります。
実際のところは、次のような数字となっています。


モデルサイズ30 stepsの速度50 stepsの速度
SDXL 1.06.62 GB[00:09<00:00, 3.26it/s][00:16<00:00, 3.11it/s]
SSD-1B4.16 GB[00:06<00:00, 4.94it/s][00:09<00:00, 5.30it/s]

速度に関しては、環境依存が大きいです。
GPUには、GeForce RTX 3090(24GB)を用いています。

この数字で言うと、以下のような改善となります。

  • 63%の小型化
  • 52~70%の高速化

概ね公式の説明通りと言っても良いでしょう。
いや、公式の説明より良い数字が出る場合があります。

50 stepsの場合なら、70%も高速化できています。
それであるにも関わらず、生成される画像の質は変わらないということです。

左がSDXL 1.0で生成した画像であり、右がSSD-1Bで生成した画像になります。

同じく左がSDXL 1.0、右がSSD-1Bとなります。

それぞれ同じ条件(SEED含む)で生成しています。
SSD-1Bの方が、むしろ良い画像に見える可能性すらあります。

それもそのはずで、人気モデルのJuggernautXLを参考にしているようです。

そのため、SSD-1Bをそのままモデルとして利用することでも十分に価値があるでしょう。
しかし、そのこと以上にSSD-1Bをベースモデルにすることが期待されています。

SSD-1Bをベースモデルにして、ファインチューニングすれば質の高いカスタムモデルが作成できるということですね。
おそらく、そのモデルも以下の効果を引き継ぐはずです。

  • 50%の小型化
  • 60%の高速化

そうなってくると、みんな幸せになりそうです。
SSD-1Bをベースモデルにしたカスタムモデルの登場を期待しましょう。

以上、SSD-1Bについて説明しました。
次は、SSD-1Bの利用方法を説明します。

SSD-1Bの利用方法

上記では、SSD-1Bの良い面ばかりを説明しました。
しかし、SSD-1Bの普及において一つ残念なところがあります。

それは、SSD-1BはまだDiffusersでしか動かないというところでしょうか。
正確に言うと、正式にサポートはされていないという状況です。

一応、web UIで動かすことは可能です。
それらしいファイルも公開されています。

少なくとも高速化の効果は、web UI上では確認できません。
あと、生成される画像の質がやたらと低いです。
頑張って対応中なのかもしれません。

ということで、Diffusersで動かすことを前提に説明します。
上記記事でDiffusersに関して説明していますが、情報が古くなっています。

でも、やることは同じです。
とりあえず、PyTorchのインストールは必要となります。

実際に用いたコマンドは、以下。
「cu121」の部分は、各自の環境に合わせてください。

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install git+https://github.com/huggingface/diffusers
pip install transformers accelerate safetensors

これらがインストールできれば、準備OK。
あとは、公開されているサンプルコードを実行するだけです。

from diffusers import StableDiffusionXLPipeline
import torch
pipe = StableDiffusionXLPipeline.from_pretrained("segmind/SSD-1B", torch_dtype=torch.float16, use_safetensors=True, variant="fp16")
pipe.to("cuda")
# if using torch < 2.0
# pipe.enable_xformers_memory_efficient_attention()
prompt = "An astronaut riding a green horse" # Your prompt here
neg_prompt = "ugly, blurry, poor quality" # Negative prompt here
image = pipe(prompt=prompt, negative_prompt=neg_prompt).images[0]

以上、SSD-1Bの利用方法を説明しました。
次は、SSD-1Bの動作確認を説明します。

SSD-1Bの動作確認

サンプルコードのままだと、作成された画像を確認できません。
そのため、最終行に「image.save(“test.png”)」を追加します。

コードを実行すると、初回時は例のごとくモデルのダウンロードが始まります。
4GBちょっとのため、それほど待つことはないでしょう。

画像生成の処理自体は、以下のように表示されます。

そして、次のような画像を確認できます。

以上、SSD-1Bの動作確認を説明しました。

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