【非公式】Stable Diffusion WebUIのインストール| GPUSOROBAN
最初に
最初にかいておきます。
公式の導入手順が2023/5/18に公開されてます!!
Stable Diffusion WebUIのインストール(Ubuntu)| GPUSOROBAN
ええ、webUIの画面までたどり着きます。
textToIMGもできなくはないでしょう。
(2023/8/3追記)
あれ?7/21に公式が更新してる…しかもここにあるやつに近い。
すでに5/18版はみれなくなってる。(URLが違う)
6/6には公式のX(twitterだったやつ)で一度見にきているじゃん?
で、特に私に連絡はなかったので…なんかモヤっとするなぁ…
(2023/8/10追記)
今日公式版でつくってみました。
すなおに起動しますね。
というわけで、以下の書き込みは5/18版の公式
と比較してます。
(2023/8/20追記)
最大接続数に至ると接続ができなくなった…
8/17のメンテから?
いずれにしても、契約前にサービスレベルは確認しましょう…
では、おしまい…じゃない!
この手順で構築してみたんですけど…なにかとひっかかる
- なんか画面が崩れている気がする…
- Extraのページにてダウンロードボタンがない(リンクにもなってない)
そして公式の手順だと…
webUI本家との手順ともなんとも違う
というわけで、非公式版を発表してみたいと思います。
インストール手順
方針は「webUI本家との手順」に寄せるです。
sudo apt update
これは公式どおり。
これやらないとこの後の手順で最新じゃないバイナリを使おうとしていろいろエラーとなる。
sudo apt install wget git python3 python3-venv
早速公式にない手順。本家にある手順である。
これをしないと最後に起動するwebui.shでおちる
python -m pip install --upgrade pip setuptools
公式にはない。ただ、おまじないに近いかもしれない。
でも…せっかく構築するんだからやれる最新化はしたいよね?ということで。
pip install torch huggingface_hub
公式はtorchのインストールをバージョン指定してガチガチにしてる。
ライブラリの整合性を合わせるためだろうが、その辺も本家のwebui.shに頼ることにして
ここではざっくりと。
なお、huggingface_hubもいずれ欲しくなるからここでやっときましょう。
sudo apt-get install -y libglib2.0-0
これは本家にはないが、公式にはある手順なのでやっておく。
bash <(wget -qO- https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh)
最後は本家どおりですね。初回は少々時間がかかりますが(10分程度)待ちましょう。
git cloneとかも不要です。
手順は以上
「Running on local URL: http://127.0.0.1:7860」の表示を確認します。
今回見て見ぬふりしたこと
xformers
オプション--xformers については…いろいろためしてみましたがうまくいきませんでした。
求めるバージョンがかみあわないのが理由です。諦めました。
WARNING[XFORMERS]: xFormers can't load C++/CUDA extensions. xFormers was built for:
PyTorch 2.0.0+cu118 with CUDA 1108 (you have 1.13.1+cu117)
Python 3.10.10 (you have 3.10.6)
Please reinstall xformers (see https://github.com/facebookresearch/xformers#installing-xformers)
Memory-efficient attention, SwiGLU, sparse and more won't be available.
Set XFORMERS_MORE_DETAILS=1 for more details
#torchvisionだけバージョンがあわない
#torchvisionを合わせると今度はxformersのバージョンがダメという
pip install xformers==0.0.18
pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchtext==0.14.1 torchaudio==0.13.1 torchdata==0.5.1 --extra-index-url https://download.pytorch.org/whl/cu117
python launch.py
公式の手順で構築して、実行する時はこれでいいと思うのですが…
じゃあ、上記非公式版で「python launch.py」したらいいのか…というとそうでもない。
ま、webui.sh起動でいいか!と諦めました。
controlnet
ERROR: Could not build wheels for pycairo, which is required to install pyproject.toml-based projects
これが解決できなかったので放置。pycairoをどこから入れろっていうのさ?
気づき
GPUを認識できないことがある?
以前から気になっていたものの…公式で
falseになる場合は、インスタンスを再起動(停止 -> 起動)をして再度試してみてください。
というコメントが載っていた。
つまり、公式に「うまくいかないことがある」ということなので、安心してインスタンス再起動しましょう。
(導入中にCUDA関係が理由でひっかかると原因追及しにくいなぁ…)
tips
GPUSOROBANを使うに当たっての個人的tipsをまとめておきます。
モデルのダウンロード
ファイルのアップロードはできるが、あまり早くない。
GPUSOROBAN上のインスタンスから直接ダウンロードしたほうがいい。
civilaiの場合
Extensionからヘルパーを導入してダウンロードする。
huggingfaceの場合
wgetを使う。
treeのところをresolveに代えるだけでよい。
ファイルのアップロード
モデルのことがGPUSOROBANのインスタンス上から解決できればあまり使うことはないとはおもいますが、scpコマンドを使います。
scp -i ~/.ssh/mykey.txt -P 20122 [送信するファイルのパス] user@localhost:[送信先のディレクトリのパス]
mykey.txtは公式のいう「インスタンス接続用キー」です。
いじる場所は[送信するファイルのパス]と[送信先のディレクトリのパス]のみ
user@localhostのところはいじりません。
例えば
scp -i ~/.ssh/mykey.txt -P 20122 /home/hoge/Downloads/*.safetensors user@localhost:/home/user/stable-diffusion-webui/models/Stable-diffusion/
とやれば、ローカルの
/home/hoge/Downloads/*.safetensors
をインスタンスの
/home/user/stable-diffusion-webui/models/Stable-diffusion/
ディレクトリに保存ができます。
以下を参考にしました。
(オマケ)png→jpg変換
GPUSOROBANとは関係ないが、変換したくなると思うが、こちら。
cd (png画像のあるフォルダ)
ls -1 *.png | xargs -n 1 bash -c 'convert "$0" "${0%.png}.jpg"'
rm ./*.png
構築後
次回からは
1つめのターミナルを立ち上げ
ssh -L 20122:(IPアドレス):22 -l user as-highreso.com -p 30022 -i ~/.ssh/soroban_ackey.txt
2つ目のターミナルを立ち上げ
ssh -L 27860:127.0.0.1:7860 user@localhost -p 20122 -i ~/.ssh/soroban_mykey.txt
その後
~/stable-diffusion-webui/webui.sh --skip-torch-cuda-test --precision full --no-half
だけ叩けば起動します。
(通常過去のコマンドが残っているから矢印キーだけ押せば出てくるでしょう)
なお、7/21公式版だと↓これで起動
bash stable-diffusion-webui/webui.sh
おためしあれー
そして、公式の人、見て間違ってたらコメントくださいな。
Discussion
公式が「見て」ご活用いただきありがとうございます!
ぜひご覧ください😄
っていうんだから、これはこれで易々ってことだと思っていいのかな?
↑見にきているわけだ。6/6には。
で、7/21に更新してこっちの内容に近い(まぁxformersの件は解決してるので進化しているのだが)
一言合ってもいい気がするけどね。