1.Stable Diffusion 2.0のローカルインストール方法と1.5との比較まとめ
・画像生成人工知能として有名になったStable DiffusionのVersion 2.0が公開
・有料Webサービスでもまだ使えない突貫リリースで動作させるのは大変
・より大きな画像が生成できるようになったけれども使用メモリ量も増えた
2.Stable Diffusion 2.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分以上たっても終わらず、ちっきしょーめー、と言う事で当日は動かすのを断念したくらいです。
なお、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になるのですこし大きいです。(クリックで拡大します)
ローカル環境にインストールするための手順
既にStable Diffusion 2.1が出ているため、Stable Diffusion 2.1のインストール/セットアップについては「Stable Diffusion 2.1とStable Diffusion Prompt Bookの公開」を参照してください。
stable diffusion 2.0は解像度512のBaseモデルと解像度768のVモデルの2つがあり、Vモデルは以下からダウンロードできます。
公式サイトのサンプルの通りにゼロから動かす場合
以下、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セットアップ
xformersのセットアップはColabでは何故か異常に遅いです。Colab Pro+の最高性能ランタイムでも30分以上かかります。
git clone https://github.com/facebookresearch/xformers.git cd xformers git submodule update --init --recursive pip install -r requirements.txt pip install -e . cd ../stablediffusion/
(3)stable diffusion 2.0 モデルのダウンロード
もし、画像を生成した時に_pickle.UnpicklingError: invalid load key, ‘v’ というエラーがでた場合はlfsを有効化できておらずモデルのダウンロードに失敗してるはずです。ファイルサイズは4G以上になるはずなのでダウンロード後に念のため確認してください。ダウンロードに失敗していた場合はgit lfs pullコマンドなどで再トライしてみてください。
sudo apt-get install git-lfs git lfs install git clone https://huggingface.co/stabilityai/stable-diffusion-2
(4)メモリが12GB以上あり、運が良ければ動いてくれるはずです。メモリが足りないとエラーが出た場合は、コマンドライン引数を –H 512 –W 512 等に変更して生成画像の解像度を下げると動かせるかもしれません。
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
Colab Pro+のA100(搭載メモリ40GB)を使ったところ、動かす事ができました。そして、サンプルスクリプトのscripts/txt2img.pyが画像を一度に9枚(3×3)生成する設定になっている事を知りました。この同時生成数は–n_samples = 1としてコマンドライン引数で渡せば削減できるので、私のメモリ12GB版のRTX 3060でも動かす事ができました。ただし、画像一枚でもpythonが11751MiBのGPUメモリを占有していたので12GBでギリギリ動かせている状況です。
2022年12月3日追記:
無料版ColabでStable Diffuison 2.0で画像生成+DreamBooth拡張を行うNoteBookを公開しました。