🚄

Stable DiffusionをローカルのGPU無しのWindows PC(Intel CPU)で動かす方法

2022/08/29に公開

Stable Diffusionをローカルで手軽に動かす方法

Stalbe Diffusion話題ですね。ただネックなのはGPUが必要な点です。GPUを持ってない人や、CUDAはよくわからない/絶対に入れたくないという人もいるでしょう。クラウドを使う方法もありますが、色々な事情で使えない/使いたくない人もいるでしょう。

そんな全世界のStable Diffusion難民に朗報です。Stable DiffusionがIntel CPUで動きます。しかもWLS2で動くので、大体のWindows PCで動きます。

以下のstable_diffusion.openvinoを使うだけです。

https://github.com/bes-dev/stable_diffusion.openvino

OpenVINOの説明は省略します。とにかくIntel CPUに最適化されたエッジコンピューティングのすごいヤツです(雑)

セットアップ方法

前提

  • Intel CPU
  • Windows OS 11にWSL2をインストール(Window 10でもLinuxでも多分動きます)

Windows PCのセットアップ参考記事です。WSL2が動けば基本OKです。
https://zenn.dev/karaage0703/articles/211d89cc0a29a1

セットアップ

Python環境はpyenv/pyenv-virtualenvを使います。エーって言わないでください、理屈じゃないんです。Dockerの環境構築とかは誰かに任せました!好きに記事を書いてくれ!

pyenvのインストール方法は、以下記事参照ください。
https://zenn.dev/karaage0703/articles/5af7ce4b8b1a8a

あとは、脳死で以下コマンドを実行してください。

Python環境構築

$ pyenv global 3.8.12
$ pyenv virtualenv 3.8.12 sd
$ pyenv global 3.8.12/envs/sd 

ソフトセットアップ

git clone https://github.com/bes-dev/stable_diffusion.openvino
cd stable_diffusion.openvino/
pip install -r requirements.txt

使い方

以下コマンドで画像生成できます。

$ python stable_diffusion.py --prompt "karaage"
ftfy or spacy is not installed using BERT BasicTokenizer instead of ftfy.
32it [01:41,  3.18s/it]

あら美味しそう。レモンもないのが得点高いですね。

我が家のIntel Core i 7のゲーミングPCで2分弱で1枚でした。デフォルトの推論回数は35回に設定されています(普通のStable Diffusionは50回がデフォルトです)。

時間はかかりますが、これで大体の人がStable Diffusionを動かせるのではないでしょうか。

Docker使用

Dockerイメージもあります。Docker得意な人はこちらでセットアップするのがよいと思います。

https://twitter.com/dandelion1124/status/1564309989447315456

Docker初心者の方は、以下記事参照ください。

https://karaage.hatenadiary.jp/entry/2019/05/17/073000

動かした方の記事
https://windvoice.hatenablog.jp/entry/2022/08/31/211310

本家のStremlitのWeb GUIを手軽に動かせるDockerイメージです
https://github.com/WindVoiceVox/stable_diffusion.openvino-docker

実際に試してみました。

以下コマンドを実行します(最初に1回だけでOKです)

$ git clone https://github.com/WindVoiceVox/stable_diffusion.openvino-docker
$ cd stable_diffusion.openvino-docker
$ docker build --build-arg UID=$(id -u) --build-arg GID=$(id -g) -t stable_diffusion:openvino .

あとは以下実行すると、ローカルでWebサーバが立ち上がります。

$ docker run -it --rm -p 8501:8501 stable_diffusion:openvino bash
streamlit run demo_web.py

ブラウザで以下のアドレスのリンクに行くとWebサーバにアクセスできます。

http://localhost:8501/

以下のようにUIが表示されます。

メモリが少ない場合

WSL2の場合ですが、以下の記事が参考になるかもしれません。

https://zenn.dev/suzuki5080/articles/1438d52377b9df

基本はメモリの多いPCで実行するのが良いと思います。メモリない場合は、まとめで記載しますが、Google Colabを使うのがオススメです。

最低でも10GB以上ないと起動しないようです(8GBのLinux PCで試したところKilledと表示されて止まってしまいました)。

まとめ

stable_diffusion.openvinoを使って、CPUで手軽にStable Diffusionを動かす方法を紹介しました。今まで使いたかったけど、セットアップで挫折していた人も、これだったら動かせるという人が結構いるかもしれませんね。

もっと速く高品質な画像を生成したいという人は、GPU付きのPCやクラウドがおすすめです。Google Colabを使う場合は、以下のような記事も書いていますのでよろしければ参考にしてみてください。

https://karaage.hatenadiary.jp/entry/2022/08/29/073000

関連記事

https://zenn.dev/karaage0703/scraps/f84c98a8b78290

https://zenn.dev/karaage0703/articles/bf86fe4946417b

変更履歴

  • 2022/09/09 Dockerを使った動かし方に関して追記
  • 2022/09/04 メモリが少ないケースを追記

Discussion