2025年2月14日金曜日

💡【StableDiffusion】CPUオンリー環境の構築

以前構築した環境が相当前だったので復習がてら
StableDiffusionの環境構築を。
普段はGPU環境なんですが、
ちょっと低スペPC対象にCPUオンリーの環境です。

どのくらい動くかね…?

💡




1.Pythonのインストール

まっさらな環境のノートPCなので、
Pythonあたりのインストールから手を付けていく。
Python公式ページ

次項目のPytorchの点が注意で、最新版をインストールしてしまうと
対応しているPytorchがなく、次の手順が詰まってしまう。
Pytorchの最新版はPython3.9あたりに対応しているらしいので、
古いバージョンのところから3.9を探して、それをインストールする。
「Download>Windows」から出てくるリリースノートから、
「3.9」とかで検索して、見つかったインストーラをダウンロードする。



なんとなく、3.9.xxの最新版ってのもよくないんかな(偏見)と思って、
3.9.12あたりを選択して、インストールした。


2.Pytorchのインストール

次にStableDiffusionの画像生成で使用するPytorchをインストールする。
通常ならGPUを使用するのでCUDA系でインストールなのだが、
今回はCPUオンリーの環境。
公式ページのオプション画面からPCの環境を選択して、
どのコマンドでインストールすればいいのかを調べる。
Pytorch公式ページ


今回はWindowsのPython、CPUオンリー
パッケージのインストールはpipコマンドを使用することにした。
なので、下記のような感じ。



pip install torch torchvision torchaudio

とすればいいらしいので、これをコマンドで実行する。
なんか3つ一度にやるのが嫌だったので、1つずつインストールしました。



1のところで書いたように、Pythonのバージョンが合わないと
Pytorchのインストールで容赦なくエラーが出る。
大体この辺が一番詰まるイメージある。


3.gitのインストール

まっさらな環境なのでgitも入っていない。
使用するWebUIはgitからダウンロードするので、gitをインストールする。
git公式ページ


ページ右側にある「Download for Windows」のところから
インストーラをダウンロードして、gitのインストールを行う。
ここはまあ、大丈夫なんじゃなかろうか。

自分は普段使いのtortoiseGitもインストールして、
エクスプローラ上から使用できるようにするのが好きなので
tortoiseGitもインストールした。
tortoiseGit公式ページ



4.GithubからStableDiffusionWebUIをダウンロードする

ここまでやってようやくStableDiffusionWebUIの準備ができた。
先ずはGithubからパッケージをダウンロードする。
AUTOMATIC1111/stable-diffusion-webui

ここのリポジトリURLをコピーして、自分のPC上にダウンロードする。



5.「webui-user.bat」の編集

ダウンロードしたリポジトリファイルの中から
「webui-user.bat」を開いて編集する。
ダウンロード直後の状態だと、GPUで動作する前提の設定になっているためだ。

set COMMANDLINE_ARGS=

という所を編集していく。
下記のような感じ。

set COMMANDLINE_ARGS=--skip-torch-cuda-test --upcast-sampling --no-half-vae --use-cpu interrogate --precision full --no-half --medvram --xformers

ここで重要なのが「--skip-torch-cuda-test」と「--medvram」の指定。


「--skip-torch-cuda-test」はGPUで動作させないときに使用するオプション
このオプションによって、CPUオンリーでの動作になる。
(もちろん、GPU使用時より動作は遅い)

「--medvram」は少ないメモリで動作させるためのオプション
もっと少ないメモリのために「--lowvram」というオプションもあるのだが
動くかわりに動作が遅くなるようなので、medvramの方にした。

とりあえずこんな感じに編集して、「webui-user.bat」を保存した。



6.WebUIの起動

「webui-user.bat」をダブルクリックしてWebUIを起動する。
ここまでの設定が上手くいっていれば、venvの仮想環境が作られたのち
いろいろ必要なパッケージが仮想環境にインストールされて
WebUIが起動する。


起動出来たら一安心。



7.使用するモデルデータをダウンロードする

さて、起動したはいいが、起動時点では
画像生成に必要なモデルデータがなかったりする。
モデルデータがあるサイトにアクセスして、なんかデータをとってくる。
civitai

えっちなモデルデータもここにあるので、
そういう需要の時はそういうデータを探してダウンロードする。
今回は普通のAnythingV5をダウンロードした。

ダウンロードしたデータは「models>stable-diffusion」のフォルダに格納する。
「Stable Diffusion checkpoint」横の更新ボタンを押すと、
モデルデータの再読み込みが行われて、
プルダウンリスト内に置いたファイルが出てくると思う。


モデルデータは1つ1つがかなりデータサイズが大きいためか
切り替える際に時間がかかるときがある。
でも、以前より速くなったよね~。



8.TiledDiffusionをインストールする

おまけに近いけれど、TiledDiffusionのような
低メモリ上で動作させるときにサポートになるプラグインも入れる。

通常1枚の画像を生成するのに対して、
その1枚画像をタイル状に分割して、それぞれ別個に生成することで
1つ1つの生成は低メモリでできる…みたいなプラグインらしい。

「Extensions」のタブを開き、
その中にある「Install from URL」の欄からインストールする。
入力欄に下記のURLをセットする。

https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111.git

実行したあとは「Installed」のタブを開いて
「Apply and restart UI」のボタンを押す。
そうするとWebUIが再起動して、インストールしたプラグインが有効になる。




9.画像生成の実行

長かったがようやく画像生成ができるようになったので、実際に試してみる。
「txt2img」のタブを表示して、プロンプトに生成したい内容を記載する。

とりあえず、下記のような感じ。

1girl, white background


あとは、画像サイズや計算方法、計算回数みたいなところを設定して実行する。
さて、どうなるか。


10.結果

「Generate」ボタンから実行して画像生成してみます。
プロンプトは1girlだけ指定して、ネガティブプロンプトもまずはナシで。

...

......

………

なげええええええ

おっせえええええ

SamplingMethodを一番早い「Eular a」にしているのに全然終わらないっす
SamplingStepsも20程度なのに全然終わらないっす
普段使いしているGPUでの生成だと10秒くらいでいけるのにな~
そして、i core 3のノートPCはカリカリ悲鳴をあげ始めました。

待つこと10分くらい、
なんとか1枚出力できました。




プロンプトも少ないし、ステップ数も少ないせいか、
なんかもやっとしてますね。

そして、部屋がなんか焦げ臭い...
ノートPCの寿命縮めそうすね...
まあ、とりあえず出力することはできたってことでひとつ。


この辺の記事を上手く使えるなら
もうちょっとCPUオンリーでも早くなりそうですね。
でもCPU自体にもうちょっと性能が欲しいか...

【グラボなしで1秒画像生成】Stable Diffusionの高速版FastSD CPUで遊んでみた


というわけで、終了~。

 

2 件のコメント: