ほーりーさんの日記

Stable Diffusionを動かすハードウェアの話

Stable Diffusion です。最近話題の生成系 AI とかいうやつ。AI 絵師がどうとか揉めてもいるやつ。

何が良いって、Stable Diffusion はクラウドフリーで使えること!規制とかメンドクサイ話が聞こえなくもないこの世界、クラウドだとサービス停止とかありえる話なわけで、オンプレで持っておくに限りますよね!

さて、どんな構成にすれば、どれくらいの速度で描けるんだろ?ということを比較してみます。

  • 物理マシン (Express5800/T110h-S / E3-1220V5 / Mem 16GB)
  • 仮想マシン (16 vCore 38.4GHz / Mem 32GB)
  • Tesla K80 搭載マシン (Express5800/T110h)
  • Tesla P40 搭載マシン (Express5800/T110h)

自作パソコンとかでやってもいいんですが、GPU のファンがうるさいので、マシンはデータセンターに閉じ込めます。となると、リモートで電源が入れられないと困りますよね。なもんで、IPMI を持ってるサーバ筐体を使ってます。

で、どんなのを書いてもらうかというと、

まず、512 x 512 サイズで描いてもらいます。いいですよね!競泳水着!!

そして、img2img でワイドに変換します。896 x 512 です。いいですよね!!競泳水着!!

使用モデルは ACertainThing

Positive Prompt

(high resolution, masterpiec, ultra-detailed, super fine illustration,highly detailed beautiful face and eyes, beautiful hair:1.10),
dynamic angle, cowboy shot,
(blue sky:1.4)
(kawaii girl:1.20), (16 years old, teenage,loli:1.15)
(mesh hair,silver hair, long hair, twinkle eyes, tareme,medium breasts1.21),
(one girl wearing swimming race suit, competition swimsut,one-peace swimsuit,high leg swimsut,wet swimsut:1.15),
(brown skin:1.1),(shiny clothes:1.2), (Oil highlights:1.16),(cameltoe:1.13),
lean back, sunlight filtering through trees,(big eyes:1.2)
cinematic lighting, side braid, light smile, blush, skindentation

Negaitive Prompt

(EasyNegative:1.5), (Bad-Hands-3, bad-hands-5,badhandv4:1.15),bad_prompt_version2
flat color, flat shading, signature, watermark, username, artist name, bad fingers, bad anatomy, missing fingers, retro style, poor quality, garter belt, (Jersey:1.5), (long sleeve:1.5),(arm cover:1.5),(name tag:1.4),
training room, handrail, dumbbell,
name plate, name tag on swimsute, white cloth on chest, socks,peace sign,bikini,spats,water splash,sleeve,turtleneck,wood deck,handrail, horn, fox ears,arm cover
short pants, forest,Audience seats
(gray eyes, bad anatomy, text, simple background, no background:1.1),
(ahoge, french braid, crown braid, halo, NSFW, drill hair, wavy hair, animal ears, 3d:1.2),
midriff, naval

Seed値 2092163728

さて、この処理にどれだけ時間がかかるのか。

青が txt2txt で 512x512 の画像を生成する時間、赤が生成された 512x512 画像を 896x512 のワイドにする時間です。GPU、すげー!

Ai 関連の話って必ず GPU の話が出てきますが、これを見れば、当たり前ですね。一回 GPU 使ってしまうと、もう CPU だけには戻れません。

なお、グラフじゃよくわかりませんが、Tesla P40 使った場合、512x512 の画像を txt2img するのにかかる時間は 9秒です。Tesla K80 でも42秒で終わるので十分に早いんですが P40、世界が違います。

 

さらにもう一歩

縦横を2倍して大きい画像にします。いいですよね!!!競泳水着!!!

MultiDiffusionというプラグインを使って拡大をします。この処理が重い。

GPU の性能がもろにでます。 CPU でもできるんでしょうけど、やってません。単純比例で 1 時間くらいかかるんじゃないでしょうか。

 

ちなみに、Stable Diffusion を GPU なし、すなわち CPU で動かすには、起動オプションにこれを付けます

--skip-torch-cuda-test --precision full --no-half

まぁ、測定結果を見れば、やる意味あるの?ってレベルですけどね。

 

あと、もう一つ気になるのが消費電力

Tesla P40 搭載の Express5800 の BCM でとった電力グラフです。

-8min 付近は OS のみが起動してる状態、-4min 付近が Stable Diffusionが起動している状態、-1min から 0min までが画像生成が走ってる状態。130Wくらい使ってますね。

9 秒で生成できるとすると、画像1枚あたり、0.33Wh。関西電力の電気料金が 1kWh あたり 28.7円なので、画像一枚あたり 0.0095 円、9.5厘ですね。