AI
2023/01/10
鶴見 悠太郎

自社の年賀状用画像を、画像生成AI「Stable Diffusion」で作ってみた~環境構築編

自社の年賀状用画像を、画像生成AI「Stable Diffusion」で作ってみた~環境構築編

実は環境構築までに時間が掛かりました

昨年末に公開した、画像生成AI「Stable Diffusion」を使った年賀状画像の生成記事は、ご覧になっていただけましたでしょうか?

あの記事では生成された画像を吟味・検討する切り口に徹底したものにしましたが、実は「Stable Diffusion」を動作させる環境を構築するまでに、10時間ほどの時間がかかっています。

今回は、環境を構築するまでの経緯についてお話させて頂ければと思います。

「DeepLearning VM + Cloud Shell」から「Vertex AI Workbench」へ

当初の予定では、GCP上のDeepLearning VM + Cloud Shellを使う想定でした。ところが、この場合は特定のPythonのライブラリが利用できないこと。さらに、GPUを積んだ仮想環境ですと未使用時にもサーバーを一時停止することができず、費用が嵩んでしまうという要因。さらに、起動時にリージョンを選択するのですが、利用したい仮想環境の構成があるリージョンが限られていることと、可能なリージョンで立ち上げてもエラーで利用できなくなることが多発し、困り果てていました。ここまで7~8時間ほど掛かっています。

そこで弊社・山窪さんに相談したところ、「Vertex AI Workbench」と呼ばれる仮想環境を利用することに変更し、Jupyter Notebook上から利用できるようになったのです。

この環境に必要なライブラリなどをインストールして実行すると、メモリ不足などによるエラーはあったものの、数時間で構築まで漕ぎ着けました。

「Stable Diffusion」は2バージョンを利用することに

次に「Stable Diffusion」のインストールです。このソフトには複数のバージョンが存在しますが、今回はv1.4とv2.0をインストールしてテストしてみました。

どちらも同じプロンプトで比較すると、v2.0は、明らかに生成画像の質が高かったですが、そのぶん生成に要する時間がかかることがわかりました。v1.4では13秒だったのに対して、v2.0では2倍以上となる26~28秒かかりました。

環境スペックとPythonソースコード

仮想マシンスペック
GPU:NVIDIA Tesla T4
RAM:30GB
vCPUs:8
ROM:100GB

Kernel
Pytorch(local)

 

コード(Python)
!pip install –upgrade git+https://github.com/huggingface/diffusers.git transformers accelerate scipy

 

コード(Python)
import torch
from diffusers import StableDiffusionPipeline

model_id = ‘stabilityai/stable-diffusion-2′

pipe = StableDiffusionPipeline.from_pretrained(model_id, revision=’fp16’, torch_dtype=torch.float16)
pipe = pipe.to(‘cuda’)

prompt = ‘a photo of an astronaut riding a horse on mars’
image = pipe(prompt).images[0]

---

ここまでで画像が生成されたら構築完了。

なお、実際の生成では下記を使用しました。

for num in range(300):
generator = torch.Generator(‘cuda’).manual_seed(num)
prompt = “white rabbit mt.fuji,sun rise Korin Ogata perfect lighting kabuki Landscap”
image = pipe(prompt).images[0]
# 生成した画像の保存
image.save(“rabbit_V”+str(num)+”seed=”+str(num)+”prompt=”+prompt+”.png”

New call-to-action