stable-diffusion環境を構築しローカルPC上でエラー無く動くようにするまで

画像生成AIに興味を持ち始め、環境構築記事やwikiを検索しながら試行錯誤していたが、どうもエラーが出て上手く行かない。
今回はそのエラーと格闘した記録。

メインPCのリソースを割くのは避けたかったので今回は低スペのサブPCで環境構築。


1. PCスペック

CPU : Ryzen 5 3500 (3.6GHz 6C6T)
GPU : NVIDIA Geforce GTX 750Ti (2GB)
メモリ : AD4U2666316G19-D (2666MHz 16GB*2)
OS : Windows 10 pro

結論から言いますがこのスペックでは384*384サイズの画像までしか生成出来ません。
生成時の設定にもよりますが1枚あたりの生成にかかる時間はこのサイズでも2-3分。
750Tiの発売が2014年なことを思えば妥当といったところ。
余らせていたグラボの利用価値が見つかったのは大きい。

生成中それぞれの使用率は、
CPU 平均20%
GPU 平均30% 瞬間ピーク時80% 
VRAM 常時100%
メモリ 平均4300MB

上記より分かる通りグラフィックボードがボトルネックとなっておりPC性能を活かしきれずといった感じ。

2. 必要なものを揃えていく

A-1 Visual Studio 2022

https://visualstudio.microsoft.com/ja/downloads/ 
よりダウンロード出来ます。
インストールの際は「C++によるデスクトップ開発」にチェックを入れる。

A-2 Python

エラーの原因その1。
バージョンをしっかり合わせること。

2023年10月現在、stable-diffusion環境を整える際はPython 3.10.6を使えと書かれていました。
私はよく読まずに3.9.9で試行錯誤していたためエラーの原因となっていたようです。
また、将来的に対応するPythonのバージョンが変更となることも考えられるため、各自githubを確認するようにしましょう。

https://www.python.org/downloads/release/python-3106/
Python 3.10.6は上記URLよりダウンロード出来ます。
インストールの際は「pathを通す」にチェックを入れることを忘れずに。

コマンドプロンプトを起動し、以下のコマンドを打ち込み、

python --version
python --version
Python 3.10.6

このような表示になったら無事次のステップへ。

A-3 CUDA

エラーの原因その2。
後述のPytorchとバージョンを合わせる必要があり、組み合わせが上手く出来ていないと大量のエラーを呼び寄せる要因になります。
あまり古いバージョンを利用するのも脆弱性の問題があるためオススメ出来ません。
現在利用しているバージョンを確認する場合はコマンドプロンプトを起動し、以下のコマンドを打ち込みます。

nvcc -V

最新版のPytorch(2.1.0)ではCUDA11.8または12.1が対応バージョンのためどちらかにしておくのが無難です。

CUDA 11.8
https://developer.nvidia.com/cuda-11-8-0-download-archive


CUDA 12.1
https://developer.nvidia.com/cuda-12-1-0-download-archive


上記リンクよりダウンロード出来ます。

A-4 ninja

https://github.com/ninja-build/ninja/releases
よりダウンロード出来ます。
解凍後、ninja.exeをC:\Windows等に入れておく。
コマンドプロンプトを起動し、以下のコマンドを打ち込み、

ninja -h
ninja -h
usage: ninja [options] [targets...]

このような表示になったら無事次のステップへ。

A-5 Git

https://git-scm.com/download/win
よりダウンロード出来ます。

以上、ここまでが環境を整えるために必須な前提条件となります。 
ここからはstable-diffusionとそれに必要な環境を構築していきます。


まず始めに画像生成AIの作業用フォルダを作ります。
これからの作業は全てこのフォルダを基本として行います。
今回の説明ではCドライブ直下にフォルダを作りますが、勿論EドライブやZドライブでも構いません。その場合はコマンドを適宜修正してください。

C:\ にaiフォルダを作成します。
繰り返しになりますがここからの作業は全てC:\AI 内で行ってください。

B-1 AUTOMATIC1111/stable-diffusion-webui

これがstable-diffusionの本体になります。
コマンドプロンプトを起動し、以下のコマンドを打ち込みます。

cd c:\ai

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

githubのURLはこちらになります。ある日突然エラーが出るようになった等の場合は各自で確認してください。
https://github.com/AUTOMATIC1111/stable-diffusion-webui


B-2 xformers

エラーの原因その3。
バージョンを合わせビルドする必要があるのですが、あちらを立てればこちらが立たずの繰り返しでPC初心者には難易度が高く、原因解明に半日ほど要しました。
https://github.com/facebookresearch/xformers
githubのURLはこちら。

コマンドプロンプトを開き以下のコマンドを打ち込みます。
以下のコマンドを最後まで打ち込んでもまだ途中ですので、コマンドプロンプトは開いたままで居てください。

cd c:\ai

git clone https://github.com/facebookresearch/xformers.git

cd xformers

git submodule update --init --recursive

python -m venv venv

venv\Scripts\activate

python -m pip install --upgrade pip


次はいよいよPytorchとtorchvisionのインストールに入るのですが、A-3で確認した自分のCUDAバージョンと合う環境を構築しなければなりません。
私の場合CUDA11.8、torch2.0.1でしたので、まずtorch2.0.1に対応するvisionのバージョンを探さなければなりません。
幸いこれはすぐにvision0.15.2だと判明しました。
上記のバージョンを組み合わせ、インストール用のコマンドを打ち込み、その後も作業を続けていきます。(所要時間30分前後)

python -m pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 --extra-index-url https://download.pytorch.org/whl/cu118

python -m pip install -r requirements.txt

python -m pip install wheel

set NVCC_FLAGS=-allow-unsupported-compiler

python setup.py build

python setup.py bdist_wheel

deactivate


一連の作業終了後、c:\ai\xformers\distにxformers-*****.whlが生成されたかと思います。こちらのファイルをc:\ai\stable-diffusion-webuiへ移動させます。
これにて準備段階は終わり、設定段階へ移行します。


3.仕上げ

ひとまずstable-diffusionを起動します。
C:\ai\stable-diffusion-webuiにあるwebui-user.batをクリックしてください。
コマンドプロンプトの動作が終わり、ブラウザが起動したらOKです(初回起動時は時間がかかります)。

いよいよB-2の最後でビルドしたwhlファイルのインストールをし、仕上げに入ります。
コマンドプロンプトを起動し、以下のコマンドを打ち込みます。

cd c:\ai\stable-diffusion-webui

venv\Scripts\activate

python -m pip install xformers-*****.whl

deactivate

3回目に打ち込むコマンドは先程B-2で生成したファイル名を入力してください。このままコピーしてもエラーになるので注意が必要です。


C:\ai\stable-diffusion-webuiにあるwebui-user.batを右クリック、編集します。

@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=

call webui.bat

このようになっているかと思いますが、6行目set COMMANDLINE_ARGS=で始まる箇所を以下のように修正し上書き保存します。

set COMMANDLINE_ARGS=--xformers


以上で全ての工程が終了です、お疲れ様でした。
同じ躓き方をしている方のお力になれれば幸いです。


導入部分は全て終了しましたが、ここから先の道のりも長く険しいものとなっています。
まず自分好みのモデル(学習データ)の用意。
どうすれば自分が求めるような理想の画像を生成してもらえるかプロンプトの選定等。
商用利用まで考えている場合、法律や規約などの確認が必要になってくることもあります。

頑張っていきましょう。

いいなと思ったら応援しよう!