Stable Diffusion 2.0のローカルインストール方法と1.5との比較

AI

1.Stable Diffusion 2.0のローカルインストール方法と1.5との比較まとめ

・画像生成人工知能として有名になったStable DiffusionのVersion 2.0が公開
・有料Webサービスでもまだ使えない突貫リリースで動作させるのは大変
・より大きな画像が生成できるようになったけれども使用メモリ量も増えた

2.Stable Diffusion 2.0とは?

アイキャッチ画像は左がstable diffusion1.5、右がstable diffusion2.0の生成。stable diffusion2.0はサイズが大きいので少し縮小しています。

昨日、突然、Stability AI社が画像生成人工知能として一躍有名になったStable DiffusionのVersion 2.0をリリースしました。

Stable Diffusion 1.5はStability AI社の有料Webサービスの方で先行公開されてしばらく経過してからrunwayml社によって突然公開された経緯があるのですが、今回のStable Diffusion 2.0は「有料Webサービスの方には近日中に反映させるよ~」との事でまだ有料Webサービスの方でも使えていない状況です。

上記を読めばいかに突貫リリースであったかがイメージが沸くと思いますが、Stable Diffusion 1.5の時のようにrunwayml社に先に公開されちゃうよりはさっさと公開してしまえ!って事なのかもしれません。

このドタバタの影響で、セットアップドキュメント等の未整備さはかなりカオスな事になっており、諸々、落ち着くまでは動かすにも一苦労しそうです。

実際、かなり苦戦してようやく動かせたと思ったらメモリ不足でエラーになり、何だって~!必要メモリ要件書いといてくれや~と言う感じで、Colab Pro+で再挑戦したところ30分以上たっても終わらず、ちっきしょーめー、と言う事で当日は動かすのを断念したくらいです。

追記Colab Pro+のA100(搭載メモリ40GB)を使ったところ、動かす事ができました。そして、サンプルスクリプトのscripts/txt2img.pyが画像を一度に9枚(3×3)生成する設定になっている事を知りました。この同時生成数は–n_samples = 1としてコマンドライン引数で渡せば削減できるので、私のメモリ12GB版のRTX 3060でも動かす事ができました。ただし、画像一枚でもpythonが11751MiBのGPUメモリを占有していたので12GBでギリギリ動かせている状況です。

なお、Stable Diffusion 2.0で何が嬉しくなったかと言うと、

Stable Diffusion 2.0の主な変更点

・解像度が従来の512 x 512から768 x 768に上がったので大きな画像が作れるようになりました。しかし、その影響で以前よりメモリ使用量が増えたようで、少なくとも現時点では私のRTX 3060 12GBではn_samples = 1で生成枚数を減らす事でギリギリ画像の生成が出来る状況です。

・学習画像データをより精査して最初から学習させなおしているため、より綺麗な画像が生成できるようになりました。主に職場閲覧注意画像が除外されたため、職場閲覧注意画像は生成が難しくなったと思われます。

同一プロンプトによる比較画像

より多くの画像の比較をしたい方はStable Diffusion 2.0とStable Diffusion 1.5とStable Diffusion 1.4の比較をご覧ください

Stable Diffusion 1.5

1.5の画像サイズは 512 x 512です。普段、主演男優をニコラス・ケイジにしている私からすればこの時点で十分綺麗ですね。(クリックで拡大します)

Stable Diffusion 2.0

2.0の画像サイズは768 x 768になるのですこし大きいです。(クリックで拡大します)

ローカル環境にインストールするための手順

以下、linuxのConda環境で既にCUDAのセットアップは出来ている前提ですが、他の環境の方にもヒントになるかもしれません。

セットアップドキュメント(githubのStability-AI / stablediffusionの「Requirements」以下)には「既存のlatent diffusion環境をアップグレードできるよ」と書いてあってリンクも張ってありますが、あれは罠です。新規インストールの場合はCompVis/latent-diffusionのリポジトリを使う必要はありません。使ってはなりません。

(1)conda環境下でstable diffusionセットアップ

git clone https://github.com/Stability-AI/stablediffusion.git
cd stablediffusion/
conda env create -f environment.yaml
conda activate ldm
conda install pytorch==1.12.1 torchvision==0.13.1 -c pytorch
pip install transformers==4.19.2 diffusers invisible-watermark
pip install -e .
cd ..

CUDAは既にセットアップが出来ている前提でドキュメント内に書かれているCUDA関連の記述は無視して進めます。

(2)xformersセットアップ

git clone https://github.com/facebookresearch/xformers.git
cd xformers
git submodule update --init --recursive
pip install -r requirements.txt
# Colab Pro+の最高性能ランタイムでも30分以上かかります。Colabは何故か異常に遅いです
pip install -e .
cd ../stablediffusion/

(3)stable diffusion 2.0 モデルのダウンロード

sudo apt-get install git-lfs
git lfs install
# 画像生成時に_pickle.UnpicklingError: invalid load key, 'v' というエラーが
# でる場合はlfsを有効化できておらずモデルのダウンロードに失敗してるはずです
# ファイルサイズは4G以上になるはずです
git clone https://huggingface.co/stabilityai/stable-diffusion-2

(4)メモリが12GB以上あり、運が良ければ動いてくれるはず。解像度を下げるとメモリが少なくても動かせるかもしれません。

python scripts/txt2img.py --n_samples=1 --prompt "a professional photograph of an astronaut riding a horse" --ckpt ./stable-diffusion-2/768-v-ema.ckpt --config configs/stable-diffusion/v2-inference-v.yaml --H 768 --W 768

その他、遭遇したエラーの数々

以下のエラーはCompVis/latent-diffusionをベースにして構築しようとした際に遭遇しました。繰り返しますが、CompVis/latent-diffusionをベースにすると逆にトラブルので使う必要はありません。力技で押し通す事は可能かもしれませんが、最初からやり直した方が楽です。

ModuleNotFoundError: No module named ‘omegaconf’

ModuleNotFoundError: No module named ‘einops’

ModuleNotFoundError: No module named ‘pytorch_lightning’

ModuleNotFoundError: No module named ‘ldm.models.diffusion.dpm_solver’

ModuleNotFoundError: No module named ‘open_clip’

AssertionError: Torch not compiled with CUDA enabled

 

3.Stable Diffusion 2.0のローカルインストールと1.5との比較関連リンク

1)stability.ai
Stable Diffusion 2.0 Release

2)github.com
Stability-AI / stablediffusion

3)huggingface.co
stabilityai/stable-diffusion-2

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