おすすめ記事
【初心者でも出来た】GPU無しstable diffusion環境構築手順【AI画像生成】

画像生成AIのstable diffusionのAPIが無料で公開されているが、GPU(グラフィックボード)が必要である。

GPU無しのPCにインストールしようとしても、エラーが吐かれて使えなかった。

GPU無しでstable diffusionが使えないか調べてみると、Unixの仮想環境下であればCPUのみで動かせることが分かった。

環境構築にチャレンジするもエラーだらけで苦労したので、備忘のために環境構築手順をまとめてみた。

こんな人が対象

・GPU無しでstable diffusionを動かしたい人
・Unix環境構築でエラーを吐かれた人
・構築手順が多くて混乱してる人

PCスペック

OS:Windows11 Home
OSver:22H2
CPU:Intel(R) Core(TM) i5-10400 CPU @ 2.90GHz 2.90 GHz
Mem:16.0GB

ご注意

当ブログはアダルトブログなので嫌悪感がある方はご注意ください。

環境構築手順

1 Windows10/11で起動するUnixの仮想環境(WSL2)の構築

管理者権限でコマンドプロンプトを起動する。

タスクバーの検索 ⇒ 「cmd」 と入力 ⇒ 管理者として実行をクリック。

コマンドプロンプトで以下のコマンドを実行する。

wsl --list --online

Ubuntu-XX.YYがリストアップされる。

UbuntuはUnixOSの1つのようなモノ。

本記事ではバージョン22.04をインストールする。

wsl --install -d Ubuntu-22.04

実行中にUbuntuのOSユーザ名とパスワードの設定が求められるので、入力する。

入力時のパスワードは非表示となっているので注意。

プロンプトが戻ったらUbuntuのインストールが成功している。

これで、仮想環境(WSL2)としてUbuntuが使用可能となる。

【参考】Ubuntuをアインストールしたい場合

以下のコマンドを実行する。
$ wsl --shutdown
$ wsl --unregister Ubuntu-20.04

参考外部リンク:『Windows 11 で WSL2 を使ってUbuntuを動かす

2 Ubuntuでstable diffusionの起動に必要なアプリをインストール

Ubuntu22.04をwindowsから起動する。

Windowsキー ⇒ その他ボタン(おすすめの右の方) ⇒ おすすめからUbuntu22.04をクリック。

Ubuntu22.04を実行すると、コマンドプロンプトが現れる。

WindowsOSとは異なり、コマンド入力でOSを操作する。

①パッケージの最新化

Ubuntuで以下のコマンドを入力する。

sudo apt update

基本、コマンドはおまじないとして無心で実行で大丈夫だが、簡単な意味は以下のとおり。

意味

sudo(スードゥー) … 管理者権限で実行
apt                  …  Linuxで配布されてるパッケージの管理コマンド
update                 …  パッケージの最新化

途中でパスワード入力を求められるので入力する。パスワードは見えない。

5分くらいかかるが、最新版のパッケージがダウンロードされる。

途中、ワーニングやエラーあったりするけど、一旦スルーして進める。

パッケージはいろんなアプリの集合体みたいなモノ。

②gitのインストール

Ubuntuで以下のコマンドを実行する。

sudo apt -y install git

既に最新版のgitがインストールされているかもしれないので、その時は次に進む

「already the newest version」が表示されていたら最新版のgitがインストール済み。

意味

git(ギット) … バージョン管理ソフト

③curlのインストール

Ubuntuで以下のコマンドを実行する。

sudo apt -y install curl

gitと同じく、既に最新版のcurlがインストールされているかもしれないので、その時は次に進む

意味

curl(カール) … URL(http、httpsなどの通信)で表現される通信のリクエスト/レスポンスを参照することができる。URLを入れたらサーバに通信して結果を取ってきてくれるモノ

④pythonがインストールされているか確認

Ubuntu22.04ならば、python3.10がインストール済みなので確認してみる。

python3

pyshon3とコマンドを打つと、インストール済みの場合はpyshonのマイナーバージョンまで記載された内容が返ってくる。

自分の場合は、3.10.6が入っていた。

3 ネットワーク設定の変更

①sutbul diffuzionのgitクローンをダウンロード

gitコマンドでgithubからsutbul diffuzionのgitクローンをダウンロードする。

gitクローンのダウンロード

gitクローンは、プログラム群(リポジトリ)が公開されているサーバにアクセスし、自分のパソコンにプログラム群をコピーするということ。
今回はsutbul diffuzionのプログラム群をgithubサーバからコピーしにいく。

Ubuntuで以下のコマンドを実行する。

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

実行してダウンロードできた場合はこちらに進む

実行し、以下のように「Cloning into…」や「fatal…」が表示されたらダウンロード失敗している。

アクセス権がないのでgithubのサーバに辿りつけていない。

②wsl.confの修正

Ubuntuで以下のコマンドを実行する。

sudo vi /etc/wsl.conf

viテキストエディタが開く。

初期はboot項目しか書かれていない。

キーボードの「i」キーを押すと、文字の入力モード(INSEARTモード)になる。

「Enter」キーで改行できる。

以下の項目を追記する。

[network]
generateResolvConf = false

追記後のwsl.confは以下のとおり。

追記が終わったら「Esc」キーで抜ける。

「:」キーを押して、"wq!"(上書き保存終了)のviコマンドを入力して終了する。

wsl.confとは

WSL2の起動時に読み込む設定ファイル。
WSL2の動作を制御するための設定を記載することが可能。

「generateResolvConf = false」の意味

後述する「resolve.conf」というファイルの修正をしたいが、resolve.confはWSL2起動時に毎回新規作成される。
そのため、resolve.confを修正してもWSL2の再起動でresolve.confが初期化されてしまう。
「generateResolvConf = false」をwsl.confに書くと、WSL2の起動でresolve.confは新規作成しなくなる。

③resolv.confの修正

Windows PowerShellを起動して以下のコマンドを実行する。
(Windows PowerShellはWindowsタスクバーから検索できる)

wsl --shutdown

実行すると、Ubuntu22.04がシャットダウンする。

Ubuntu22.04を再度起動し、Ubuntuから以下のコマンドを実行しviでresolv.confを開く。

sudo vi /etc/resolv.conf

resolv.confを開くとこんな感じ。何も書かれていない。

resolv.confに以下を追記する。

nameserver 8.8.8.8

追記後のresolv.confはこんな感じ。

追記が終わったら「Esc」キーで抜ける。

「:」キーを押して、"wq!"(上書き保存終了)のviコマンドを入力して終了する。

resolv.confとは

名前解決に使用するDNSサーバを指定する設定ファイル。
名前解決はドメイン名(http://www.…)をIPアドレス(192.xx.xx.xx)に変換するためのサーバ。

「nameserver 8.8.8.8」の意味

8.8.8.8はGoogleが公開しているパブリックDNSサーバを指している。
パブリックDNSサーバを指定してないため、githubサーバにアクセスができなかった。

④sutbul diffuzionのgitクローンをダウンロード(再実行)

Ubuntuで以下のコマンドを実行する。

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

ダウンロードに成功するとこんな感じ。

cd コマンドでstable_diffusion.openvinoフォルダに入る。

cd stable_diffusion.openvino/

lsコマンドでstable_diffusion.openvinoフォルダの中身が確認できれば成功。

4 stable diffusionのインストール

①pipのインストール

cd コマンドでstable_diffusion.openvinoフォルダに入る。

cd stable_diffusion.openvino/

以下のコマンドを実行する。

pip install -r requirements.txt

pipがインストールされていない場合は、以下のようなメッセージが表示される。

「cd ..」と入力し、ルートフォルダに戻る。

cd ..

pipをaptからインストールする。

sudo apt -y install pip

pipがインストールされる。

以下のコマンドを入力してpipが入っていることを確認する。

pip -v

pipのインストールに失敗すると、以下のようなメッセージが表示される。

aptを最新化してないと、pipがインストールできないこともあるらしいので、インストールが失敗した場合はaptを最新化する。

sudo apt update
sudo apt upgrade

「apt upgrade」実行後、途中で止まるので「Y」キーを押して処理を進める。

完了後、「sudo apt -y install pip」でpipのインストールを実行する。

pipとは

Python言語で開発されたパッケージの管理アプリ。
Ubuntuに対するaptのような関係。
pipを使うとPython言語の外部ライブラリを簡単にダウンロード/インストールできるようになる。

②pipによるstable_diffusionのインストール

cd コマンドでstable_diffusion.openvinoフォルダに入る。

cd stable_diffusion.openvino/

以下のコマンドを実行する。

pip install -r requirements.txt

txtファイルに記載されたアプリ群のインストールが開始される。

インストールエラーが発生した場合、赤文字でエラー内容が表示される。

「The conflict is caused by~」以降を意訳すると、

あなたはnumpyアプリの1.19.5バージョンを要求しました。

opencv-pythonアプリ 4.5.5.64 は numpy1.21.2以上、 python_version3.10以上が必要となります。

インストールするnumpyのバージョンを変更するため「requirements.txt」を修正する。

以下のコマンドを実行しviでrequirements.txtを開く。

sudo vi requirements.txt

numpyのバージョンを1.21.2に変更する。

上書き保存してviを終了する。

再度、以下のコマンドを実行する。

pip install -r requirements.txt

エラーが無ければ成功。

Ubuintuのバージョンが古いとインストールするopenVINOのバージョンも変わったりする。

エラーメッセージに応じて適したアプリのバージョンをインストールする。

5 stable_diffusionの動作確認

cd コマンドでstable_diffusion.openvinoフォルダに入る。

cd stable_diffusion.openvino/

以下のコマンドを実行する。

python3 demo.py --prompt "ここにプロンプト"  --model ShadowPower/waifu-diffusion.openvino

こんな感じで実行できる。(プロンプトはR18仕様ですね…)

数分するとdataフォルダに画像(output.png)が生成される。

CPUがめっちゃ唸る。

画像はeogビューアで表示ができるので、eogをインストールして実行する。

sudo apt install eog
cd data
ero output.png

例えば、"Fantasy, witch girl, black hair, long hair, witch hat, cool, cool look, using magic"とプロンプトすると、こんな感じで画像ができる。

魔法も使ってくれる!

とりあえず、画像ができるところまで。

エラーで詰まったら、エラーメッセージでググってアプリの入れ直しや設定変更するのが基本となる。

少しでも構築のヒントになれば幸いです。

0
おすすめ記事