画像生成AIをGPU無しCPUだけで動かしてみる【Stable Diffusion web UI no GPU CPU only】

タイトル

画像生成AI Stable Diffusionは高価なグラフィックボードが無いパソコンでも動かすことができます。クラウドサービスを使う必要もありません。どうやって動かすのか?8年前のタブレット型PC Surface Pro 3にセットアップして動くかどうか試してみました。定番ツールを使うとCPUだけでもGPUがあってもほぼ同じ手順で動かせます。

画像生成AI Stable Diffusion界隈は進歩が速くパソコンへのセットアップ方法などがコロコロと変わっていました。変化が速すぎてYouTubeやブログで紹介しにくい状況でした。そして最近は便利なツールも続々と出てきて今では定番ツールと言っても良いものができてきました。

画像生成AIではグラフィックボードを計算に使います。特にNvidiaのCUDAという機能を使って計算します。新しく高価なグラフィックボードほどCUDAの演算ユニットを沢山搭載しているので画像生成時間が短くなります。そう、画像生成時間が短くなるだけで画像生成ができないわけでは無いのです。グラフィックボードが無くともCPUだけで画像生成できるはずなのです。

CUDAを使わない設定でStable Diffusionをセットアップするのは難しい作業でした。しかし、定番ツールを使えば簡単にGPUを使わずCPUだけで動かす設定ができます。この設定を使ってCPUだけでStable Diffusionを動かしてみます。

Surface Pro 3

今回Stable Diffusionを動かすのはこの記事作成時点から約8年前のタブレット型パソコン Surface Pro 3です。
CPUは第 4 世代インテルCore i7 4650U 2コア4スレッド、メモリーは8GBです。グラフィックはCPU内蔵のGPUだけです。CUDA演算とかできません。
こんな非力なパソコンでStable Diffusionを動かせるのでしょうか?これで動かせればだいたいのパソコンで動かせると思えるのではないでしょうか。

Stable Diffusionの定番ツール

AUTOMATIC1111/stable-diffusion-webui

AUTOMATIC1111/stable-diffusion-webui
A browser interface based on Gradio library for Stable Diffusion.
Stable Diffusionをパソコンで動かすならこれを使っとけ、という定番ツールとなりました。Stable Diffusion本体のインストールと設定、Stable Diffusionをブラウザから操作するユーザーインターフェースを備えたツールです。セットアップも簡単に行えるようにできています。起動用バッチファイルでStable Diffusionの設定を調整できます。
画像生成AIにはAIモデルという学習済みAIデータのファイルが必要です。多くのAIモデルが公開されていますが自分でAIモデルを持ってくる必要があります。

EmpireMediaScience/A1111-Web-UI-Installer

EmpireMediaScience/A1111-Web-UI-Installer
This is an unofficial simplified installer for Automatic1111's Stable Diffusion WebUI
上述のAUTOMATIC1111/stable-diffusion-webuiをWindow画面でインストール・起動できるようにするツールです。テキストエディタで編集しなくともStable Diffusionの起動オプションを変更する事ができます。
stable-diffusion-webuiでは自分で用意しなくてはならなかったAIモデルを自動でダウンロードしてくれます。この記事作成時はStable Diffusion V1.5のAIモデルをダウンロードします。他のAIモデルを使いたければ自分でダウンロードします。

事前に必要なプログラム

定番ツールを動かすには基本となるプログラムをインストールしておかなくてはなりません。必要なのは2つ、gitとpythonです。自動で入れてくれるようですが、どこからかpython.exeを見つけ出してそれを使ってしまう事があります。pythonのバージョンを把握せずにStable Diffusionを動かそうとすると必要のないトラブルに見舞われます。自分で入れる事をおすすめします。

git

プログラムコードを管理するツールです。stable-diffusion-webuiなどを最新の状態に保つために使われます。
gitfor windows

python

プログラム言語です。stable-diffusion-webuiはpythonで動いています。WindowsではMicrosoftストアから入手できます。Microsoftストアで”python”と検索してください。いくつかのpythonアプリが表示されるでしょう。pythonのバージョン違いです。pythonのバージョンはとても重要です。違うバージョンでは同じプログラムでも動かない事があります。自分でStable Diffusionを動かせなかったらまずpythonのバージョンを疑いましょう。
この記事作成時点では、stable-diffusion-webuiはpython 3.10を使います。細かくは3.10.6です。そのうち3.11になるかもしれませんので記事作成日を見て半年も経っていたらStable Diffusion web UIの動作条件を確認してください。
【2023/01/30:PyTorchのアップデートに伴いPython 3.10.9が必要です】

グラフィックスドライバー

グラフィックボードがある場合は最新のドライバーに更新しておきます。ドライバーが古すぎるとCUDAのバージョンが合わず動きません。

セットアップ

細かいセットアップ画面は本ページ最後のビデオを御覧ください。
A1111-Web-UI-Installerの実行プログラムを動かします。前述のリンクから"Releases"をクリックして"assets"にexeファイルがあります。このexeファイルをダウンロードします。
ダウンロード時に警告が出るかもしれません。怪しい実行ファイルをダウンロードしないようにする警告です。このexeファイルが信頼できるかを本ブログ管理人は保証できません。あなたの責任でダウンロードして実行します。

実行するとA1111-Web-UIをインストールするフォルダを尋ねられます。デフォルトではドキュメントフォルダが設定されています。
"Install"ボタンを押してインストールします。

インストールしたフォルダが開くでしょう。そこにA1111-Web-UIがあります。これがいつも使う起動用ファイルとなります。スタートアップやデスクトップへコピーしておくと便利です。
A1111-Web-UIを実行します。
するとstable-diffusion-webuiが自動的にダウンロードされます。また、AIモデルをダウンロードするか聞いてくるので"はい"を押しましょう。
AIモデルは5GBくらいある大きなファイルです。ダウンロードに時間がかかります。

ダウンロードが終わると画面が表示されます。
A1111画面
この画面でStable Diffusionの起動オプションなどを設定してStable Diffusion web UIを動かします。

CPUだけで動かす場合

CPUだけで動かす場合は"Additional Launch Options"に次のように入れます。
--use-cpu all --no-half --no-half-vae --skip-torch-cuda-test
CPUにAVX512が搭載されていればno-halfを入れなくても良いはずです。計算精度を下げて画像生成時間を速くできます。生成される画像が違うものになる可能性があります。わからない場合は上述のオプションのままにしましょう。
オプションを入れ終わったら"SAVE"を押します。この記事作成時点ではSAVEしないと設定が反映されません。一時的なバグっぽい気がします。

GPUで動かす場合

NvidiaのGPUで動かす場合はxformersに✅すると計算が速くなります。若干異なる画像が作られるようです。
GPUのメモリーが8GB以下ならばLow VRAMに✅します。
"Additional Launch Options"には何も入れません。

AMDのGPUの場合、CUDAテストをスキップするのでCPUで動かすのと同じです。Low VRAMに✅します。"Additional Launch Options"に次のように入れます。
--no-half --no-half-vae --skip-torch-cuda-test
私はAMDのGPUで動かしたことはありませんので未確認です。これでGPU使うのでしょうか?

画像を生成して真っ黒なイメージが出来上がってしまう場合は"Additional Launch Options"に下のオプションを追加します。
--precision full --no-half --no-half-vae
グラフィックボードによっては16ビット精度の演算装置が搭載されておらず真っ黒画像になってしまうようです。GTX1660 GTX1660Ti などが該当するそうです。
私はGTX1070を使っていますが稀に真っ黒画像が出てきます。no-halfを追加したらそんな事は無くなりました。なぜ?場合により茶色、緑の一色画像ができました。

オプションを入れ終わったら"SAVE"を押します。この記事公開時点のバージョンではSAVEしないとオプションが反映されないです。

Stable Diffusionを動かす

A1111-Web-UIでの設定が終わったら"LAUNCH WEB UI"ボタンを押します。これでStable Diffusion web UIが動きます。初回にStable Diffusionを動かすライブラリとStable Diffusion本体のダウンロードと設定が行われます。そこそこ時間がかかるでしょう。
URL: http://127.0.0.1:7860
と表示されればStable Diffusion web UIの起動に成功です。自動的にブラウザが立ち上がりhttp://127.0.0.1:7860でページが表示されるでしょう。

Stable Diffusionを簡単に使うためのユーザーインターフェースがブラウザに表示されています。promptに英語で何か描きたい絵の説明を入れます。ビデオでは"a man"と入れています。そして"Generate"ボタンを押すと画像生成が開始されます。

Surface Pro 3の場合、約26分で画像が作られました。

結論

Surface Pro 3で画像生成できました。Stable DiffusionはGPU無しCPUだけでも画像生成できます。
ですがSurface Pro 3では一枚の画像を作るのに26分かかりました。これはデフォルトの生成条件でです。生成する画像サイズを大きくしたりSampling Stepsを増やしたりSampling Methodを変えるとさらに時間がかかります。ちょっと使ってられませんね。
最近のパソコンではどうでしょう。Ryzen 7 3700Xでやってみました。すると3分40秒でした。これくらいなら遊べそうです。ちなみにGTX1070を使うと11秒です。


インストール手順など詳細はビデオで。

ビデオ





コメント

最近のコメント

Threaded Recent Comments will be here.