見出し画像

ミニPCで画像生成AI動かしてみた【CPU Stable Diffusion】 〜CPUで画像生成は現実的か?〜

皆さんこんにちは、Rcatです。
少し前の記事でミニPCを買ったのを紹介しましたが、今回はそのパソコンを使って画像を生成AI(Stable Diffusion)を動かしてみます。
このAIですが、色々調べるとどこのサイトでもGPUの話ばっかりしてるのでGPUがないとだめなのかと思っていたんですが、実はCPUでもいけるっぽいです。
というわけで、24時間サーバーで放置生成できるなら時間がかかってもいいのでCPUで試してみることにしました。

次回はこちら


そもそも何でCPUでやりたいの?

最初にも書きましたが、24時間稼働用のパソコン使いたかったからです。
普段使っているパソコンは週末しか使用しませんし、ゲームで使っている間はもちろん使用できません。そうなるとAIで画像を生成できるタイミングは限られてきます。(こうやって記事書いている間は回せるんですが…)。
後は単純に大きい画像も生成できるというメリットがあります。
私のGPUは古いのでメモリが6GBしかありません。そのため、1000ピクセルを超える画像を作ろうとすると一気に処理速度が落ちるか、または生成に失敗します。いやグラボ変えろよという話なんですが…
しかしCPUであれば、積んであるメモリを使えるので、少なくとも10GBくらい積んであると考えても差し支えないと思います。
とにかく自分で操作せず、常時勝手に生成し続けてくれる環境そのものに意味があると考えています。仕事をしている間にも勝手に増え続けているのです。

最初に結論

ではまず、そもそも使い物になるのかどうかという話ですが、結論から言うと使えます
画像のサイズや使うサンプラーによってかなり左右されてしまいますが、大体10-40分で1枚ほど生成できる感じでした。

例えば以下の設定の場合は約20分です。

  • ハードウェア
    上記記事参照(CPU : N100 DDR5 16GB)

  • モデル
    SakuraMix-v4

  • 画像サイズ
    900x600

  • サンプラー
    DDIM / 20step

こんな感じでCPUで癒される画像の生成に成功しました!!
こんな画像が1日70枚近く生成してもらえるなんて素晴らしいですね。
ちなみに同じものをRTX2060で回せば30秒くらいでできます…。

ちなみに10年前のCore i7と生成比較した結果はこちら↓


画像生成AIを構築

それでは実際にAI導入手順を解説していきます。
今回使用するのは導入が簡単なことで有名なStable Diffusionのautomatic1111です。

ライブラリや本体のDL

まずはいくつかのプログラムをインストールします。
色々調べて、私は下記のやり方で成功しています。

sudo apt install wget git  python3-venv python3-pip libgl1-mesa-dev

次に画像生成AIをインストールするフォルダーにカレントを切り替えてから以下のコマンドを実行します。
こうするとカレントディレクトリにAIがダウンロードされます。

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

CPUで起動するためにちょこっと書き換える(注意事項あり)(2023/12月現在)

私がいろんなサイトを参考にインストールを進めていく中で、どうしても情報が合わない部分がありました。
それが環境構築スクリプトをGPUからCPUに書き換える部分です。ここが一番大事なんですが、そこの情報が最近変わったのか、どのサイトにも書いていませんでした。
大抵のサイトだと"launch.py"の以下の行を書き換える指示があるんですが、現在のバージョンだとありません。
確かに私は現在使っているGPUでのバージョンではこの行がありました。

torch_command = os.environ.get('TORCH_COMMAND', "pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 --extra-index-url https://download.pytorch.org/whl/cu117")

探しても出てこないので、自力で探したところ、"modules"ディレクトリの中にある"launch_utils.py"の中にインストールコマンドが記載されていましたので、"torch_index_url"を以下のように書き換えました。
URLの方はtorchの公式サイトからCPU版をインストールするのに必要なURLを調べました。

torch_index_url = os.environ.get('TORCH_INDEX_URL', "https://download.pytorch.org/whl/cpu")

なるほど、生成AIでいつもお世話になってるtorchのCPU版をインストールすればいいだけなんですね。
私は過去の記事で自然言語AIを自力で動かすということをやっていたので、この辺すんなり理解することができました。

準備ができたらAIを起動します。
まずは普通に起動してみて立ち上がるか確認しましょう。
また、初回の立ち上げがセットアップも兼ねているので、最初は時間がかかります。

#普通に起動するとき
./webui.sh --skip-torch-cuda-test --precision full --no-half --listen

#SSH切断しても維持したいとき
nohup ./webui.sh --skip-torch-cuda-test --precision full --no-half --listen &

実行時の引数についてですが、CPU版の時はよくあるGPUの時と少し違うようなので注意してください。また、今回は別のパソコンから接続する前提なので、それ用の引き数(--listen)を追加しています。これがないと他のパソコンからアクセスできません。

モデルをインストールする

さて、1回立ち上がったら終了して次にモデルを入れます。
画像を生成するにはモデルが必要で任意のモデルを入れましょう。
例えば、一番最初に貼った画像を生成するために使用したモデルは下記になります。

ファイルカードの中からモデルを選択します。
この画面からダウンロードしてsftpで転送してもいいですし、wgetでダウンロードさせてもいいです。

モデルの格納先は以下です。
./stable-diffusion-webui/models/Stable-diffusion/
モデルを格納したらもう一度立ち上げてみましょう

生成準備完了

リモートIPアドレス:ポート番号を7860アクセスします。
ファイアウォールが有効になっている場合は弾かれる可能性があるので空けといてください。
以下のような画面が表示されれば構築成功です。
ここから先はいろんなサイトで使い方が紹介されていると思いますので、参考に生成してみてください。

まとめ

今回はイラスト生成AIをCPUで動かす方法についてまとめました。
いくつかCPUで生成するための情報を載せるサイトはあるんですが、具体的にどのハードウェアで何秒くらいとかを書いてなかったので、そういった視点で見ていただけるように本記事を書きました。
少なくともN100 CPUでは軽い設定だと15分くらいで描けそうです。
画像のサイズを悪くないサイズだと思うので、十分に実用的だと考えています。

もちろん最初に言いましたが、勝手に生成し続ける環境であるならばの話です。パソコンの前に座ってパラメーターをいじりながら生成するには厳しいです。
なので、自分のお気に入りの設定条件が見つかるまでは、GPUで画像の生成も行い、出来上がった条件で24時間量産化体制を作るのが良いのではないかと考えています。
もちろん、電気代と確認する枚数を気にしないならGPUで量産するのもいいと思いますよ?

次回は自動生成環境について考えていきます。
ここまで読んだからならお気づきかもしれませんが、24時間自動生成をどうやって操作するのという部分が疑問に思われたかもしれません。
webuiを使う場合、接続するパソコンかデスクトップが少なくとも立ち上がっている必要があります。
しかし、私の24時間PCはデスクトップ画面を使いません。つまり、WebUIから操作をすることはできないというわけです。もちろん他のPCから接続するというのもNGです。
では、どうするのかという話を次回していこうと思います。具体的にはAPIですね。
ではまたお会いしましょう。

次回はこちら


情報が役に立ったと思えば、僅かでも投げ銭していただけるとありがたいです。