✌️

trinart_stable_diffusion_v2 をローカル環境のUbuntu と RTX 3090で実行する

2022/09/12に公開

前回に続いてローカルのコンシューマー用GPUで
どこまで画像生成AIが利用出来るか試してみようシリーズ

環境は引き続き下記のローカル環境を使用していきます。
OS:Ubuntu20.04
GPU:RTX 3090
VRAM:24GB
RAM:16GB

$ nvidia-smi
Mon Sep 12 10:03:47 2022       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.103.01   Driver Version: 470.103.01   CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| 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 ...  Off  | 00000000:09:00.0  On |                  N/A |
|  0%   43C    P8    31W / 350W |    493MiB / 24265MiB |      4%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1389      G   /usr/lib/xorg/Xorg                 53MiB |
|    0   N/A  N/A      3051      G   /usr/lib/xorg/Xorg                130MiB |
|    0   N/A  N/A      3267      G   /usr/bin/gnome-shell              117MiB |
|    0   N/A  N/A      3854      G   ...RendererForSitePerProcess       13MiB |
|    0   N/A  N/A      4098      G   ...958599967803028497,131072      159MiB |
+-----------------------------------------------------------------------------+

1 使用させていただくモデル

https://huggingface.co/naclbit/trinart_stable_diffusion_v2
Twitterボット「とりんさまAI」@trinsama (https://twitter.com/trinsama) で使用しているSDのファインチューン済モデルとのことでキャラクター特化モデルとはまた別とのこと
学習のステップ数に応じたmodel.ckptファイルがgit形式で配布されているようです。

2 オリジナルのStableDiffusionのリポジトリをクローンしておき、環境を整えておきます

stable diffusion のgihub上の手順通りにanacondaでldmの環境を構築しておきます。
https://github.com/CompVis/stable-diffusion

※Fork版やファインチューンモデルを扱う際にオリジナルのstable-diffusionの環境がベースとなる可能性が高いのでオリジナル環境の構築は確実に出来た方が良さそう

stable-diffusion オリジナルリポジトリのクローン

git clone https://github.com/CompVis/stable-diffusion.git
cd stable-diffusion

anacondaでldm環境を作成しactivateして環境に入る

~/git/stable-diffusion$conda env create -f environment.yaml
~/git/stable-diffusion$conda activate ldm

pytorch torchvision などのanaconda環境へのインストール
pipで必要なパッケージのインストールと更新

~/git/stable-diffusion$conda install pytorch torchvision -c pytorch
~/git/stable-diffusion$pip install transformers==4.19.2 diffusers invisible-watermark
~/git/stable-diffusion$pip install -e .

画像出力先のディレクトリ作成

~/git/stable-diffusion$mkdir outputs

3 使用するモデルをstable-diffusionディレクトリにクローンします

~/git/stable-diffusion$git clone https://huggingface.co/naclbit/trinart_stable_diffusion_v2

3つのckptのチェックポイントモデルが手元にクローンされてきますね

~/git/stable-diffusion$ ls trinart_stable_diffusion_v2
README.md  trinart2_step115000.ckpt  trinart2_step60000.ckpt  trinart2_step95000.ckpt

4 promptに呪文を入れてコマンドを実行

--ckpt オプションでモデルのパスを指定して
今回のテストは"cute cats fox ear"で実行させてみます。

~/git/stable-diffusion$python scripts/txt2img.py \
>     --plms \
>     --ckpt ./trinart_stable_diffusion_v2/trinart2_step115000.ckpt \
>     --skip_grid \
>     --n_samples 1  \
>     --n_iter 1 \
>     --outdir outputs \
>     --ddim_steps 100 \
>     --prompt "cute cats fox ear"

5 outputs/samples

ちょっと意図したものと狐耳の猫ではなくかわいい狐になりました。
時間があったらいろいろ実験したものを追記します。
prompt:"cute cats fox ear"

実験結果
prompt:"cute girl blue hair"

prompt:"cute cat ear maid"

補足

vramは最大10GBくらい使っているのでローカル環境で動かすなら
VRAM 12GB以上のGPUを載せてないとvram不足で動かないかも知れません

Discussion