Scribble at 2024-07-28 13:12:37 Last modified: 2024-07-28 19:02:43
これまで何度か書いているように、僕は自宅のマシンで Stable Diffusion を動かしているのだけれど、マシンのスペックは Stable Diffusion Web UI が何とか動く性能であるため、恐らくは僕の運用状況が最低限の条件になるだろうと思う。改めてご紹介しておくと、AMD Ryzen 5 2600 (6 cores) + 16 GB RAM + 500 GB SSD + 1 TB HDD + NVIDIA GeForce RTX 2060 6 GB である。自宅で生成 AI を利用している人の多くは、よくこのスペックで動くものだと呆れるかもしれないが、これでも十分に実用的な速度で画像が出力できている。実際、サンプリング・メソッドは最速の DDIM を選び、ステップ数も可能な限り小さく 15 steps にしてやると、ADetailer で顔(特に目)の補正を加えながら出力したうえで、おおよそ1枚あたり15秒で出力できる。これなら十分に実用的だ。ADetailer が不要な景色などの出力だけなら、1枚あたり8秒で出力できる。
ただし、環境設定には幾つかの変更が必要だ。まず、速度を上げるためには xformers を追加しておく必要がある。それから、VRAM が 6 GB というのは、実は Stable Diffusion の動作要件としては不足している。VRAM だけだと動かないので、メモリも使うのだが、実はメモリが 16 GB あっても全て使うなんてことはない(他のソフトウェアが動かなくなる)。なので、ページング・ファイルを仮想の拡張メモリとして使っている。したがって、Windows ならコントロール・パネルでページング・ファイルを確保しておく必要がある。僕の環境では、ページング・ファイルの設定を "20000 MB"(20 GB)で上限と下限を同じに設定して固定してある。それから、モニター(ビデオ)の設定で、「ハードウェアアクセラレーションによるGPUスケジューリング」という項目を無効にするのも、一定の効果がある。
この他、Stable Diffusion を起動する際のオプションとして、ちまたでは "--opt-channelslast" のような設定を追加するといいと書かれている場合もあるが、僕の環境ではこれは逆効果だった。画像の生成プロセスそのものは大して速度の変化がなかったけれど、ADetailer の適用にやたらと時間がかかるようになって、画像の出力に要するトータルの時間が倍近くに増えてしまったからだ。
そして、Stable Diffusion Web UI の画面で設定できる項目の中では、やはり checkpoint や VAE をメモリに格納しておくことが効果的だ(仮想メモリなども使っているのは、こういう必要があるからでもある)。ただし、たいていは幾つも使い分けるわけではないから、格納するのは checkpoint も VAE も1個ずつでよい。VAE はともかく、checkpoint は SD 1.5 の分散モデル・データでも 9 GB 近くになるファイルもあるからだ。