目標
WindowsWSL2でStableDiffusionを立ち上げたい。
https://github.com/CompVis/stable-diffusion
https://github.com/AUTOMATIC1111/stable-diffusion-webui
今回はwebuiで環境構築してみる。
※追記
20230430時点ではこちらのほうが活発。
https://github.com/vladmandic/automatic
構築は以下
WSL2でvladmandic/automaticを構築する
WSL2の設定
自身のPCのスペックに合わせて調整。
.wslcomfig
[wsl2]
memory=16GB
swap=128GB
WSL2の再起動
wsl --shutdown
pyenvのインストール
# apt
$ sudo apt update
$ sudo apt upgrade
# depencies
$ sudo apt install \
build-essential \
libffi-dev \
libssl-dev \
zlib1g-dev \
liblzma-dev \
libbz2-dev \
libreadline-dev \
libsqlite3-dev \
libopencv-dev \
tk-dev
# pyenv
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
# path
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
$ source ~/.bashrc
# check version
$ pyenv --version
pyenv 2.3.16-1-gb1ee6c93
pythonのインストール
# python
$ pyenv install 3.10.6
$ pyenv global 3.10.6
# check version
$ python --version
Python 3.10.6
stable diffusion webuiのクローン
$ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
$ cd stable-diffusion-webui/
起動引数の追加
webui-user.sh
export COMMANDLINE_ARGS="--xformers --opt-channelslast"
stable diffusion webuiのセットアップ
起動手順と同じ。
このときcudaやxformer等の他に必要なファイル群がインストールされる。
起動し終わったら一旦終了。
$ bash webui.sh
CUDA Toolkitへのパスを設定
$ echo 'export LD_LIBRARY_PATH="/usr/lib/wsl/lib:$LD_LIBRARY_PATH"' >> ~/.bashrc
$ source ~/.bashrc
# グラフィックカードの確認
$ nvidia-smi -L
GPU 0: NVIDIA GeForce RTX 4090 (UUID: GPU-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)
# CUDAの確認
$ nvidia-smi -q
==============NVSMI LOG==============
Timestamp :
Driver Version : 537.42
CUDA Version : 12.2
...
stable diffusion webuiの起動
$ bash webui.sh
起動引数(よく使いそうなものだけ)
- --listen
-
0.0.0.0
で起動してネットワーク越しに応答する
-
- --port
- 起動時のポート
- --gradio-auth
-
username:password
みたいな感じに設定すると認証できる - [Bug]: Error: Connection errored out. #9074
-
- --nowebui
- uiなしでapiを起動する
- --xformers
- xformersを使う。画像生成速度の向上と、VRAM使用量の削減
- --reinstall-xformers
- 起動するたびにxformersを再インストールする。アップデートに便利。使い終わったら削除
- --opt-channelslast
- 16xx以上のTensorコアを積んでるNvidiaグラボで処理が高速になるかも
- --no-half-vae
- VAEモデルを16bit floatに切り替えない。黒飛びしすぎる時につけると現象が緩和されるかもしれない
- --medvram
- VRAMが少ないときはこれ。もっと少なければ
--lowvram
- VRAMが少ないときはこれ。もっと少なければ
- --autolaunch
- 起動時にUIを自動表示
ファイルの配置
- Textual Inversion
- ./stable-diffusion-webui/embeddings
- Check Point
- ./stable-diffusion-webui/models/Stable-diffusion
- LoRAモデル
- ./stable-diffusion-webui/models/Lora
- モデルファイルと同名の画像を用意すればサムネイルになる
- VAE
- ./stable-diffusion-webui/models/VAE
- LyCORIS(LoCo, LoHA)
- 要Extension(https://github.com/KohakuBlueleaf/a1111-sd-webui-locon)。Loraと同じ場所でも良いけど、分けておいたほうが後々よさそう
- ./stable-diffusion-webui/models/Lora/LyCORIS
注意事項
職場や公共の場所などで試すときは必ずNegativePromptにセンシティブワードを入れておく
所感
使うだけなら非常に簡単だった
条件次第で本当にマトモな画像が出てくるから凄い
次はCheckPointやLoRAを作ってみよう