見出し画像

WSL2でjapanese-stable-diffusion-xlを試してみる

日本特化の商用利用可能 text-to-image モデル「Japanese Stable Diffusion XL」を試してみます。
使用するPCは、GALLERIA UL9C-R49(RTX 4090 laptop 16GB)、Windows 11+WSL2です。

準備

python関連

まずは、python関連から。

python3 -m venv japanese-stable-diffusion-xl
cd $_
source bin/activate

としてからのpip install

pip install torch transformers accelerate
pip install SentencePiece

で、pip listです。

$ pip list
Package                  Version
------------------------ ----------
accelerate               0.24.1
certifi                  2023.7.22
charset-normalizer       3.3.2
contourpy                1.2.0
cycler                   0.12.1
diffusers                0.23.1
filelock                 3.13.1
fonttools                4.44.3
fsspec                   2023.10.0
huggingface-hub          0.19.4
idna                     3.4
importlib-metadata       6.8.0
Jinja2                   3.1.2
kiwisolver               1.4.5
MarkupSafe               2.1.3
mpmath                   1.3.0
networkx                 3.2.1
numpy                    1.26.2
nvidia-cublas-cu12       12.1.3.1
nvidia-cuda-cupti-cu12   12.1.105
nvidia-cuda-nvrtc-cu12   12.1.105
nvidia-cuda-runtime-cu12 12.1.105
nvidia-cudnn-cu12        8.9.2.26
nvidia-cufft-cu12        11.0.2.54
nvidia-curand-cu12       10.3.2.106
nvidia-cusolver-cu12     11.4.5.107
nvidia-cusparse-cu12     12.1.0.106
nvidia-nccl-cu12         2.18.1
nvidia-nvjitlink-cu12    12.3.101
nvidia-nvtx-cu12         12.1.105
packaging                23.2
Pillow                   10.1.0
pip                      22.0.2
psutil                   5.9.6
pyparsing                3.1.1
python-dateutil          2.8.2
PyYAML                   6.0.1
regex                    2023.10.3
requests                 2.31.0
safetensors              0.4.0
sentencepiece            0.1.99
setuptools               59.6.0
six                      1.16.0
sympy                    1.12
tokenizers               0.15.0
torch                    2.1.1
tqdm                     4.66.1
transformers             4.35.2
triton                   2.1.0
typing_extensions        4.8.0
urllib3                  2.1.0
zipp                     3.17.0

WSL2での画像表示

imageオブジェクトをshow()として、顎が落ちないようにするため、以下をインストールします。

$ sudo apt install imagemagick

あと、環境変数DISPLAYも設定しておきます。

$ export DISPLAY=:0

モデルのダウンロード

Hugging faceから試すぞー、なのですが、

このモデルにアクセスするためには窓口情報を共有してね(はぁと

とのことで、試すためには提供しましょう。
そして、Access Tokensも必要になりますので、Hugging faceの Profile > Settings > Access Tokens からトークンを払い出した上で

$ HUGGING_FACE_HUB_TOKEN="hf_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
$ export HUGGING_FACE_HUB_TOKEN

としてpythonのコードから参照できるように設定しておきます。

試してみる

これで準備は完了です。

$ python

を起動して、流し込みます。流し込む内容は README.mdのサンプルをベースにしたものです。

from diffusers import DiffusionPipeline
import torch

pipeline = DiffusionPipeline.from_pretrained(
    "stabilityai/japanese-stable-diffusion-xl", trust_remote_code=True
)
pipeline.to("cuda")

そして、、、

prompt = "松阪牛、時速80kmで疾走"
image = pipeline(prompt=prompt).images[0]
image.show()

出力された画像は、こちら。

松阪牛、時速80kmで疾走

いや、馬。

メモリ使用量

最初の傾きは、DiffusionPipeline.from_pretrainedメソッドの呼び出し。2つ目の傾きは、image = pipeline(prompt=prompt).images[0] の実行時です。

メモリ使用量

おまけ

「柴犬、カラフルアート」として出力されたイメージ。かわいい。

この記事が気に入ったらサポートをしてみませんか?