WICの中から

機構設計者が株式投資や育児に奮闘するblog

VRAM 6GB(GeForce 1660 Ti)でもStable Diffusionしたい

巷で大人気のオープンソースな画像生成AI「Stable Diffusion」を試してみたい。
しかしREAD MEには"the model is relatively lightweight and runs on a GPU with at least 10GB VRAM"とある。ウチのPCが積んでるのはGeForce 1660 Ti 6GB...10GBのVRAMはAI界にとって大したものではないのだろうが、一般人からするとオーバースペックなのだ。

ただ調べてみるとVRAM不足への対処法があり、無事にStable Diffusionで画像生成できた。

そんなわけで備忘録をこちらに残しておく。

PythonとGPU仕様環境を整える

下記記事通りPyTorchとCUDA11.3の環境を作る。 zenn.dev

またこのタイミングでanaconda promptでもpip install ~を使えるようにしておいた方が良い。

condaとpipが混同するのは良くないそうだが、pip使えないからか環境構築で躓く場面があった。

モデルの準備をする

流れは下記の記事を参照して行う。 zenn.dev

ただしVRAM足りないのでオリジナルは使えない。速度を犠牲に最適化したフォーク版を使う。これならVRAM 6GBでも動いた。 github.com

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

とするところを

git clone https://github.com/basujindal/stable-diffusion

とすればいい。

もしくはオリジナル版を入れた後で optimizedSD フォルダだけ入れて、そこに格納されているファイルから実行するでもいい。

学習モデルのデータは下記から取得する。登録必要。
Diffuser経由で使うやり方が紹介されていたけれど、上手くいかなかったので冒頭の記事の手順通り、.ckptファイルをダウンロードして使った。 huggingface.co

トラブル対応

sh conda env create -f environment.yamlでエラーを吐いていたようだ。
ライブラリがいくつか見つからない。
下記サイトを参考にenviroment.yamlの中身確認して補完させてもらった。
zenn.dev

導入時の躓いたとき参考になった。 qiita.com

出力例

出力するときはtxt2imgの場合だと
python optimizedSD/optimized_txt2img.py --prompt "プロンプトの内容"
img2imgだと下記の通りだ
python optimizedSD/optimized_img2img.py --prompt "プロンプトの内容" --init-img hoge.jpg

ここでhoge.jpgはstable-diffusion直下に格納しておく。

optimizedSDの場合オプションに--precision fullを入れておくと良い。自分の環境では、このオプション無しだと黒塗りの絵しか出力されなかった。

他にもサイズや試行回数などなど、オプションは多いので興味があるなら公式を見ておくと良い。

--H 512 --W 512 --seed 27 --n_iter 2 --n_samples 5 --ddim_steps 40

またimg2imgの場合は--strength 0.Xで元絵にどれくらい寄せるかをコントロールできる。Xの値が小さいほど元絵に近くなる。

txt2img

stable diffusion
Cyberpunk_style_Megalopolis_Okayama_landscape

Anime_painting_girl_silver_hair_and_wear_summer_style_4k_HD

img2img

deformed_young_engineer_make_metal_parts,factory,pixiv,comic,manga,line_drawing

元絵、これはtxt2imgで作った

まとめ

低スペックPCでもStable Diffusion出来た。
Google colabでも使えるとあったけどローカルの方が取り回しやすいので、出来て良かった。

して、この先をどうするかが問題だ。
正直なところ、プロンプトを練って良い絵を目指すことにあまり興味が湧かない。プロンプトを練ること自体は知識もスキルも身につかない作業そのものだし、その作業は僕にとって面白いものではなかった。

ブログの扉絵や挿絵を作るのが、パッと思い浮かぶ有効な使い方だとは思う。けどせっかくローカルで使い放題なのでもっと楽しい使い方を考えたいね。

こんな記事も書いています。

temcee.hatenablog.com