「Stable diffusion web ui」をWSL2のUbuntuで安全に実行する(Xformers対応)
WSL2のUbuntuで安全にStable diffusionを動かす!
昨今いろんな画像生成AIが出回ってますが、おそらく気軽に使えて高機能な生成ソフトウェアとなると、
「Stable diffusion web ui」が候補に上がると思います、私も使ってますが多機能かつ異常な速度での更新による新機能&バグ対応で充実しています。
ですが、根本的な話どうやら生成に使うモデル(waiffu diffusionやanything v3等のモデル)に任意の悪意あるコードなどを入れて実行させることができるなど無視するには心配な噂が流れています…
ならば、たとえウィルスあっても変なコード混ざってても
メインPCが影響を受けない環境を作れればいいのでは!?
と思い今回の記事。
つまり、Windows内のWSL2の機能でパソコンの中に仮想パソコン(Ubuntu)おっ立てて、その中で動かせばウィルスとか変なコード動いても仮想パソコンが駄目になってもメインPCは被害受けないんじゃね!?という考え、少なくともダイレクトで被害は受けないと思う、WSL2向けのウィルスや悪意あるコードならわしゃ知らん(:3 っ)っ
ちなみに筆者はLinux初心者なのでコマンド間違ってたりするかもしれません、エラーが出た際はどこでエラーが発生したのかをコメントしていただけると幸いです!!!
ちなみに出来上がった環境はメインPCで動かすのと遜色ないレベルですのでおすすめといえばおすすめです、導入難易度はクソ高いですが…
Docker版もあるよ!(制約付き)
ちなみに、「Stable diffusion web ui」には拡張機能という機能があるのですが、それを使わない(一部拡張機能が不全を起こすことに目を瞑れば)
なら「Stable diffusion web ui」をDocker化した人がいるので、*Xformers付きで超簡単に環境つくれます!
自分はその制約が我慢できなかったのでフリーに行ける環境を作りました。
つまり制約が気にならなければDocker版がオススメです、パソコンに詳しくない人でもギリできると思う。
この後紹介する方法はコマンドプロンプトとかをよく触る人向けの記事です。(一応できるだけわかりやすくしてます)
*Xformers:画像生成を高速化する機能、これが使えると少し幸せ。
インストール方法
くっそ長くなるので、WSL2編/Stablediffusion編(以下SD編)と分けます。
前提として
- GPUはNvidia製(できればRTXシリーズ、GTXでもおそらく可)
- 最新のwindows11(おそらくアップデートしていればwindows10でも動くはず)
- 最新のNvidiaドライバー
- CPUの仮想化を有効化している
WSL2編
・まずはWindowsのターミナルを開いて、以下のコマンドを実行します。
この際ターミナルはpowershell推奨、恐らく管理者で起動しないとエラー出る可能性あり。
wsl --install
これを実行した後おそらくPCの再起動を促されるので再起動します。
・再起動後、以下のコマンドを実行してUbuntu 22.04をインストールします。
wsl.exe --install Ubuntu-20.04
・インストールが完了したらUbuntuがアプリとして入っているので起動します。
入れたらユーザー名とパスワードを設定します、基本的に名前は自由にしてもらっていいですが、この後紹介するコマンドは筆者が設定した名前になっていますので、「Ubuntu-wsl2」以外の名前にするときは適宣変更してください。
・次にCUDAを設定していきます、これを設定しないとxformersが使えないです。
こちらの方の記事がわかりやすくCUDA導入の説明をしています、3.CUDA導入をお読みください。
問題がなければ
nvidia-smi -q
で、CUDAバージョンが出ると思います。
ちなみに、GPUのシリーズに合わせてCUDAを合わせる必要があるようですが、2000番台はとりあえず最新のCUDA(12.0)で動作しているご様子…?

とりあえずここまで来たら後はPython3.10をセッティングしたらWSL2編終了です。
・Python3.10のインストールは以下のコマンドを上から順に実行してください。#のコメントは入れないように。
sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get install software-properties-common -y
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt-get update -y
sudo apt-get install python3.10 -y
python3.10 --version #ここでPython 3.10.8と出ればOK
sudo apt-get install python3.10-dev
sudo apt-get remove python-pip
sudo apt-get install python3.10-distutils -y
sudo curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10
sudo export PATH=$PATH:~/.local/bin
pip -v #ここでバージョンが出たら準備完了でなければ pip3 -v で出ればおk
pip install pipenv または pip3 install pipenv
以上でpython3.10のセットアップでした、途中でエラーが出た場合は表示されたエラーで調べればなんとかなります()
(正直Python3.10とpip3.10のセットアップが最難関の一つ)
以上でWSL2編終了になります。
SD編
・まずは以下のコマンドを順番に実行してください。
cd
mkdir git
cd git
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui
・次にwindowsでエクスプローラーを開きUbuntuにアクセスします
左下の方にLinux用のタブが出来ています。

/home/ubuntu-wsl2/git/stable-diffusion-web-uiにwebui-user.shがあるのでダブルクリックでvscodeなりメモ帳なりで開きます。

・中身をこれで上書きします。
#!/bin/bash
#########################################################
# Uncomment and change the variables below to your need:#
#########################################################
# Install directory without trailing slash
#install_dir="/home/$(whoami)"
# Name of the subdirectory
#clone_dir="stable-diffusion-webui"
# Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention"
export COMMANDLINE_ARGS="--deepdanbooru"
# python3 executable
python_cmd="python3.10"
# git executable
#export GIT="git"
# python3 venv without trailing slash (defaults to ${install_dir}/${clone_dir}/venv)
venv_dir="venv"
# script to launch to start the app
#export LAUNCH_SCRIPT="launch.py"
# install command for torch
#export TORCH_COMMAND="pip install torch==1.12.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113"
# Requirements file to use for stable-diffusion-webui
#export REQS_FILE="requirements_versions.txt"
# Fixed git repos
#export K_DIFFUSION_PACKAGE=""
#export GFPGAN_PACKAGE=""
# Fixed git commits
#export STABLE_DIFFUSION_COMMIT_HASH=""
#export TAMING_TRANSFORMERS_COMMIT_HASH=""
#export CODEFORMER_COMMIT_HASH=""
#export BLIP_COMMIT_HASH=""
# Uncomment to enable accelerated launch
#export ACCELERATE="True"
###########################################
上書きしたら保存してください。
・次にネットで手に入れたお好きなモデルデータをstable-diffusion-web-uiフォルダに有るmodelsフォルダのstable-diffsionに入れておきます。

・次にubuntuのターミナルで以下のコマンドを実行します。(初回セットアップで少し時間かかります)
bash webui.sh
これでxformers無しの状態ですが、SDの起動に成功したはずです。
次はxformersをインストールしていきます。
・起動したSDをctrl+Cキーで閉じます。
次に以下のコマンドを順番に実行してください。
source ./venv/bin/activate
cd repositories
git clone https://github.com/facebookresearch/xformers.git
cd xformers
git submodule update --init --recursive
pip install -r requirements.txt
pip install -e .
deactivate
コマンドの途中で長時間の処理(30分程度)が入ります、性能によって時間が変わります。
処理が全て完了したら、先程のwebui-user.shの–deepdanbooruの後ろに–xformersを追加します。
例:
# Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention"
export COMMANDLINE_ARGS="--deepdanbooru --xformers"
後は保存して、stable-diffusion-web-uiフォルダに移動して
bash webui.sh
を実行することでxformersを機能させてSDを使用できます!!
お疲れ様でした!
Q&A
Q. Windowsからwebui.shを呼び出せないの?毎回ubuntuのターミナル開いてコマンドうつのめんどい(:3 っ)っ
A.適当な.batファイル作って以下のコマンドをコピペして保存してダブルクリックで起動するぞい( ˘ω˘ )
wsl cd /home/ubuntu-wsl2/git/stable-diffusion-webui; bash webui.sh
pause
Q.SDの更新早いって言うけど毎回アップデート来るたびに最初っから!?Σ(・ω・ノ)ノ
A.適当な.batファイル作って以下のコマンドをコピペして保存してダブルクリックでアップデートできるぞい( ˘ω˘ )
wsl cd /home/ubuntu-wsl2/git/stable-diffusion-webui; git pull origin master
pause
Q.生成した画像がUbuntuの中にあって不便
A.SDの設定で画像の出力先を設定できます、Ubuntuの/mnt/c/ からwindowsのCディレクトリにつながってます。
例:

Q.仮想化したパソコン(Ubuntu)でメインPC(Windows)より速度遅くならないの?
A.何回も動かしてますがほぼ同等、落ちた感じはしないです。
早くなった気もしますが多分気の所為です、総合的にWindowsとUbuntuのGPU使用率が生成速度に影響するので…
(むしろUbuntuをGPUと接続してる分遅くなるはずなんだが…?まあ、UbuntuがCUI動作だから影響がほぼないのは納得の話)