日記とか、工作記録とか

自分に書けることを何でも書いてゆきます。作った物、買ったもの、コンピュータ系の話題が多くなるかもしれません。

Windows 10 Pro + DockerでStableDiffusion

いま、流行のStableDiffusion、メモリ多めのGPUが必要なため、Colabなどで動かす例が多いです。しかし、日々いろいろな方の貢献が進んでいまして、CPUで動かせるバージョンがGitHubに公開されています。お手軽そうなので、飛びつくように試してみました。

注:この絵はMidjourneyさんに描いてもらったもの(にぎやかしのため)

ご参考のため、私のPCスペック

DIMM64GBありますし、こちらのほうがいいかも、ということで試してみることにしました。

結果

環境構築

  • Windows 10がPro版であることが必要です。「プログラムの追加と削除」→「アプリと機能」の画面で、「プログラムと機能」を選択、さらに「Windowsの機能の有効化または無効化」を選択して、「仮想マシンプラットフォーム」を有効にしておきます(要再起動)。


  • Docker Hubにアクセスして、IDを登録します。登録したら、Windows版Docker Hubをダウンロードしてインストールします。

hub.docker.com

  • Docker Desktopを起動するとチュートリアルを勧められるので、一通り流して終わります。
  • wsl2をインストールします(したような気がする)
  • powershellを開いて、gitコマンドで以下のレポジトリをcloneします。終わったら、docker buildで環境を構築します。

github.com

# git clone https://github.com/atinfinity/stable_diffusion.openvino-docker
# cd stable_diffusion.openvino-docker
# docker build --build-arg UID=1000 --build-arg GID=1000 -t stable_diffusion:openvino .
  • 環境ができあがるまでしばらく待ちます。Dockerすごい!裏で必要なことは全部やってくれるのでコーヒーでも飲んで待ちます。
  • Docker DesktopのImagesメニューから、stable_diffusionを選んでrunで環境を起動します。

  • recursing_neumannから、ターミナルを起動します(OPEN IN TERMINAL)。

  • ターミナルが開くので、bashを起動します。このbash環境は、StableDiffusionを動かす準備が整っています。
$ bash
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

(openvino_env) stable_diffusion@9c929807267a:~/stable_diffusion.openvino$

さぁ!

ここまで来たら、準備OKです。ここまでいろいろ作ってくれた方に感謝しつつ呪文を唱えましょう。

(openvino_env) stable_diffusion@9c929807267a:~/stable_diffusion.openvino$ python stable_diffusion.py --prompt "A plate full of fried chicken, photoreal, 8K"
Downloading: 100%|█████████████████████████████████████████████████████████████████████| 905/905 [00:00<00:00, 1.75MB/s]
Downloading: 100%|████████████████████████████████████████████████████████████████████| 939k/939k [00:00<00:00, 979kB/s]
Downloading: 100%|████████████████████████████████████████████████████████████████████| 512k/512k [00:00<00:00, 640kB/s]
Downloading: 100%|██████████████████████████████████████████████████████████████████████| 389/389 [00:00<00:00, 824kB/s]
Downloading: 100%|█████████████████████████████████████████████████████████████████| 2.12M/2.12M [00:01<00:00, 1.66MB/s]
ftfy or spacy is not installed using BERT BasicTokenizer instead of ftfy.
Downloading: 100%|████████████████████████████████████████████████████████████████████| 464k/464k [00:00<00:00, 564kB/s]
Downloading: 100%|███████████████████████████████████████████████████████████████████| 492M/492M [00:16<00:00, 30.5MB/s]
Downloading: 100%|█████████████████████████████████████████████████████████████████| 3.02M/3.02M [00:01<00:00, 2.04MB/s]
Downloading: 100%|█████████████████████████████████████████████████████████████████| 3.44G/3.44G [02:39<00:00, 21.6MB/s]
Downloading: 100%|████████████████████████████████████████████████████████████████████| 329k/329k [00:00<00:00, 508kB/s]
Downloading: 100%|███████████████████████████████████████████████████████████████████| 198M/198M [00:04<00:00, 45.7MB/s]
32it [01:47,  3.35s/it]
(openvino_env) stable_diffusion@9c929807267a:~/stable_diffusion.openvino$

最初の1回は実行に時間がかかります。プロンプトが戻ってきたら、output.pngがそこにあるのが確認できます。

(openvino_env) stable_diffusion@9c929807267a:~/stable_diffusion.openvino$ ls -l
total 524
-rw-r--r-- 1 stable_diffusion stable_diffusion  11357 Aug 30 11:33 LICENSE
-rw-r--r-- 1 stable_diffusion stable_diffusion  14384 Aug 30 11:33 LICENSE_MODEL
-rw-r--r-- 1 stable_diffusion stable_diffusion   1876 Aug 30 11:33 README.md
drwxr-xr-x 2 stable_diffusion stable_diffusion   4096 Aug 30 11:33 data
-rw-r--r-- 1 stable_diffusion stable_diffusion 486600 Aug 31 11:54 output.png
-rw-r--r-- 1 stable_diffusion stable_diffusion    144 Aug 30 11:33 requirements.txt
-rw-r--r-- 1 stable_diffusion stable_diffusion   7080 Aug 30 11:33 stable_diffusion.py
(openvino_env) stable_diffusion@9c929807267a:~/stable_diffusion.openvino$

できました!

(追記 2022/09/01)

一日経ったら、もう内容が古くなっていました。いまはstable_diffusion.pyの代わりにdemo.pyとすると動きます。詳細は同じディレクトリにあるREADME.mdを読みましょう。

で、そのoutput.pngはどこにあるの?

実は、このPNGファイルを探すのが一番大変でした。結論から言うと、以下の通り探せます。


  • docker-desktop-dataを開き、ファイルの検索から「output.png」を探します。
  • output.pngが見つかったら右クリックして「ファイルの場所を開く」で開きます。やっとみつかりました。


まとめ

ということで、ローカルなPC環境でStableDiffusionを動かす例を少しだけ詳しめにご紹介しました。流行に乗って波乗りしたい方、ぜひどうぞ。