画像生成AIのstable diffusionのAPIが無料で公開されているが、GPU(グラフィックボード)が必要である。
GPU無しのPCにインストールしようとしても、エラーが吐かれて使えなかった。
GPU無しでstable diffusionが使えないか調べてみると、Unixの仮想環境下であればCPUのみで動かせることが分かった。
環境構築にチャレンジするもエラーだらけで苦労したので、備忘のために環境構築手順をまとめてみた。
・GPU無しでstable diffusionを動かしたい人
・Unix環境構築でエラーを吐かれた人
・構築手順が多くて混乱してる人
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が使用可能となる。
以下のコマンドを実行する。
$ 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分くらいかかるが、最新版のパッケージがダウンロードされる。
途中、ワーニングやエラーあったりするけど、一旦スルーして進める。
パッケージはいろんなアプリの集合体みたいなモノ。
Ubuntuで以下のコマンドを実行する。
sudo apt -y install git
既に最新版のgitがインストールされているかもしれないので、その時は次に進む。
「already the newest version」が表示されていたら最新版のgitがインストール済み。
git(ギット) … バージョン管理ソフト
Ubuntuで以下のコマンドを実行する。
sudo apt -y install curl
gitと同じく、既に最新版のcurlがインストールされているかもしれないので、その時は次に進む。
curl(カール) … URL(http、httpsなどの通信)で表現される通信のリクエスト/レスポンスを参照することができる。URLを入れたらサーバに通信して結果を取ってきてくれるモノ
Ubuntu22.04ならば、python3.10がインストール済みなので確認してみる。
python3
pyshon3とコマンドを打つと、インストール済みの場合はpyshonのマイナーバージョンまで記載された内容が返ってくる。
自分の場合は、3.10.6が入っていた。
3 ネットワーク設定の変更
gitコマンドでgithubからsutbul diffuzionのgitクローンをダウンロードする。
gitクローンは、プログラム群(リポジトリ)が公開されているサーバにアクセスし、自分のパソコンにプログラム群をコピーするということ。
今回はsutbul diffuzionのプログラム群をgithubサーバからコピーしにいく。
Ubuntuで以下のコマンドを実行する。
git clone https://github.com/bes-dev/stable_diffusion.openvino
実行してダウンロードできた場合はこちらに進む。
実行し、以下のように「Cloning into…」や「fatal…」が表示されたらダウンロード失敗している。
アクセス権がないのでgithubのサーバに辿りつけていない。
Ubuntuで以下のコマンドを実行する。
sudo vi /etc/wsl.conf
viテキストエディタが開く。
初期はboot項目しか書かれていない。
キーボードの「i」キーを押すと、文字の入力モード(INSEARTモード)になる。
「Enter」キーで改行できる。
以下の項目を追記する。
[network]
generateResolvConf = false
追記後のwsl.confは以下のとおり。
追記が終わったら「Esc」キーで抜ける。
「:」キーを押して、"wq!"(上書き保存終了)のviコマンドを入力して終了する。
WSL2の起動時に読み込む設定ファイル。
WSL2の動作を制御するための設定を記載することが可能。
後述する「resolve.conf」というファイルの修正をしたいが、resolve.confはWSL2起動時に毎回新規作成される。
そのため、resolve.confを修正してもWSL2の再起動でresolve.confが初期化されてしまう。
「generateResolvConf = false」をwsl.confに書くと、WSL2の起動でresolve.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コマンドを入力して終了する。
名前解決に使用するDNSサーバを指定する設定ファイル。
名前解決はドメイン名(http://www.…)をIPアドレス(192.xx.xx.xx)に変換するためのサーバ。
8.8.8.8はGoogleが公開しているパブリックDNSサーバを指している。
パブリックDNSサーバを指定してないため、githubサーバにアクセスができなかった。
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のインストール
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のインストールを実行する。
Python言語で開発されたパッケージの管理アプリ。
Ubuntuに対するaptのような関係。
pipを使うとPython言語の外部ライブラリを簡単にダウンロード/インストールできるようになる。
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"とプロンプトすると、こんな感じで画像ができる。
とりあえず、画像ができるところまで。
エラーで詰まったら、エラーメッセージでググってアプリの入れ直しや設定変更するのが基本となる。
少しでも構築のヒントになれば幸いです。