最終更新:ID:uxO+h3G8EQ 2023年02月11日(土) 20:04:23履歴
- local_WSL2
- 手順が簡単になった
- kohya sd-scripts対応
概要
WindowsのWSL(Linux)環境でAutomatic1111を導入する手順です。
利点
- Windows版と比べて15~25%程早い
- 環境のバックアップが取りやすい
(OSごとバックアップが取れるので何かあったときに戻すのが楽)
欠点
- 多少だがLinuxの知識が必要になる
WSL2 のセットアップ
Powershellを管理者権限で起動して以下を実行
wsl --install再起動を要求されるので再起動する
Ubuntu 22.04 をインストール
Ubuntu 22.04 をセットアップ
Ubuntu 22.04.1 LTSを起動すると初期化とユーザー名、パスワードの設定を要求されるので入力する
Pythonのアップデート
2022/12/10現在でPython3.10の最新である Python3.10.9にアップデートする
まず以下コマンドを実行
Pythonのビルドに必要な依存ファイルをインストールする
Pythonのソースコードを取得し展開
Pythonをビルド(そこそこ時間がかかる)
ここまでやると、以下コマンドを打つと「Python 3.10.9」とバージョンが返ってくる
まず以下コマンドを実行
sudo apt update sudo apt upgrade -y初回の sudo 実行時にユーザーのパスワードを聞かれるので入力する
Pythonのビルドに必要な依存ファイルをインストールする
sudo apt install -y build-essential libbz2-dev libdb-dev \ libreadline-dev libffi-dev libgdbm-dev liblzma-dev \ libncursesw5-dev libsqlite3-dev libssl-dev \ zlib1g-dev uuid-dev tk-dev
Pythonのソースコードを取得し展開
wget https://www.python.org/ftp/python/3.10.9/Python-3.10.9.tar.xz tar xJf Python-3.10.9.tar.xz
Pythonをビルド(そこそこ時間がかかる)
cd Python-3.10.9 ./configure make sudo make install cd ~
ここまでやると、以下コマンドを打つと「Python 3.10.9」とバージョンが返ってくる
python3 --version
CUDAのインストール
CUDA 11.x の最新版である11.8をインストールする
※ CUDA 11.x台をインストールすること! 2022/12/10現在、最新である12.xをインストールするとxformersがビルドできない
https://developer.nvidia.com/cuda-11-8-0-download-... の 「Download Installer for Linux WSL-Ubuntu 2.0 x86_64」- 「Base Installer」 に書いてあるコマンドを実行する
※ CUDA 11.x台をインストールすること! 2022/12/10現在、最新である12.xをインストールするとxformersがビルドできない
https://developer.nvidia.com/cuda-11-8-0-download-... の 「Download Installer for Linux WSL-Ubuntu 2.0 x86_64」- 「Base Installer」 に書いてあるコマンドを実行する
cuDNN のインストール
Windows側で https://developer.nvidia.com/rdp/cudnn-archive から cuDNN v8.6.0 (October 3rd, 2022), for CUDA 11.x の Local Installer for Ubuntu22.04 x86_64 (Deb) をダウンロードし、\\wsl$\Ubuntu-22.04\home\<Ubuntuのユーザー名> に置く
※DLするにはNVIDIAの開発者アカウントが必要
その後Ubuntu側で/home/<Ubuntuのユーザー名>に移動し、以下コマンド実行
その後/home/<Ubuntuのユーザー名> にある 「.bashrc」「.profile」に以下を書き加える
/home/<Ubuntuのユーザー名>/.bash_profile (無い場合は新規作成)に以下を書き加える
※DLするにはNVIDIAの開発者アカウントが必要
その後Ubuntu側で/home/<Ubuntuのユーザー名>に移動し、以下コマンド実行
sudo dpkg -i cudnn-local-repo-ubuntu2204-8.6.0.163_1.0-1_amd64.deb sudo cp /var/cudnn-local-repo-ubuntu2204-8.6.0.163/cudnn-local-FAED14DD-keyring.gpg /usr/share/keyrings/ sudo apt -y update sudo apt install libcudnn8 sudo apt install libcudnn8-dev
その後/home/<Ubuntuのユーザー名> にある 「.bashrc」「.profile」に以下を書き加える
export LD_LIBRARY_PATH=/usr/lib/wsl/lib:$LD_LIBRARY_PATH
/home/<Ubuntuのユーザー名>/.bash_profile (無い場合は新規作成)に以下を書き加える
export LD_LIBRARY_PATH=/usr/lib/wsl/lib:$LD_LIBRARY_PATH if [[ -f ~/.bashrc ]] ; then . ~/.bashrc fi
WSL2の再起動
Windows側でコマンドプロンプトかPowerShellを開き、以下のコマンドを実行
wsl --shutdownコマンドが完了したらUbuntuを再度開く
AUTOMATIC WebUIのインストール
まず以下コマンドを実行
次に以下コマンドを実行する
この時点ではまだckptファイルを置いていないため最後のコマンド実行後にエラーが起こるはず
sudo apt update sudo apt upgrade -y
次に以下コマンドを実行する
sudo apt install wget git python3 python3-venv -y sudo apt install libgl1 -y bash <(wget -qO- https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh)※ WSL2の場合 https://github.com/AUTOMATIC1111/stable-diffusion-... に書いてあるコマンドを実行するだけでは足らないため2行目のコマンドを足している
この時点ではまだckptファイルを置いていないため最後のコマンド実行後にエラーが起こるはず
No checkpoints found. When searching for checkpoints, looked at: - file /home/xxx/stable-diffusion-webui/model.ckpt - directory /home/xxx/stable-diffusion-webui/models/Stable-diffusion Can't run without a checkpoint. Find and place a .ckpt file into any of those locations. The program will exit.
ckptなど置く
xformers有効化とWebUI起動
/home/<Ubuntuのユーザー名>/stable-diffusion-webui にある webui-user.sh を開き、以下の行のコメントアウトを外してパラメータを追記する
その後 /home/<Ubuntuのユーザー名>/stable-diffusion-webui にある ./webui.sh を実行
# Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention" export COMMANDLINE_ARGS="--xformers"
その後 /home/<Ubuntuのユーザー名>/stable-diffusion-webui にある ./webui.sh を実行
cd /home/<Ubuntuのユーザー名>/stable-diffusion-webui bash webui.shWindows側で http://127.0.0.1:7860 にアクセスできます。
起動するのにUbuntuいちいち立ち上げるのがめんどくさいンゴ
/home/<Ubuntuのユーザー名> にある .profileに以下を書き加える
※wslから起動したbashはWindowsのbash.exeを呼び出しているが、これは起動時の環境ファイルを読み込まない
その為、-lオプションで.profileを読み込んで起動するようにする
export LD_LIBRARY_PATH=/usr/lib/wsl/lib:$LD_LIBRARY_PATHWindows側で以下のバッチファイルを作成する
wsl cd /home/<Ubuntuのユーザー名>/stable-diffusion-webui; bash -l webui.sh pauseバッチファイルを実行すればUbuntuでwebui.shを叩いてくれます
※wslから起動したbashはWindowsのbash.exeを呼び出しているが、これは起動時の環境ファイルを読み込まない
その為、-lオプションで.profileを読み込んで起動するようにする
バッチファイルから起動はするけど、生成時にエラーが出るンゴ……
Could not load library libcudnn_cnn_infer.so.8. Error: libcuda.so: cannot open shared object file: No such file or directory生成時にこのエラーが出る場合、環境変数が設定されてません。以下を確認して下さい
- /home/<Ubuntuのユーザー名> にある .bashrc、.profileに以下が記述されているか
export LD_LIBRARY_PATH=/usr/lib/wsl/lib:$LD_LIBRARY_PATH
- 記述されている場合、wslの誤作動の可能性があります。(稀に .bashrcを何故か読み込まない現象が出る)
/home/<Ubuntuのユーザー名>/.bash_profile (無い場合は新規作成)
export LD_LIBRARY_PATH=/usr/lib/wsl/lib:$LD_LIBRARY_PATH if [[ -f ~/.bashrc ]] ; then . ~/.bashrc fiバッチファイルを動かせば生成できるようになっているはずです
生成した絵に直でアクセスしたいンゴ
Windows版と同じようにフォルダアイコンからエクスプローラーを開きたいンゴ
1111本体にマージされました。
wsl-open をインストール
sudo apt-get install -yqq npm sudo npm install -g wsl-open
参考サイト
WSL2のちょっとした補足
Linux単体では陥らないようなWSL2固有のもろもろのメモ
- Q:ファイル消してもディスクの容量減らない
- A:「wsl2 ディスクサイズ 減らす」とかでググれ、中のファイルを消してもディストリ格納してる仮想ディスクは勝手には縮まない。仮想ディスクファイルの格納場所もググれ。ちょこちょこ書くには内容が長すぎる
- Q:WSL2側がメモリを食いすぎるorWSL2にメモリを使わせたい
- A:全部のWSL2に適用したいなら「C:\Users\{ユーザー名}\.wslconfig」、指定のディストロだけメモリ量指定したいならディストリの中で「/etc/wsl.conf」に以下の内容をかけ
[wsl2] memory=(お前が指定したいメモリサイズ)GB
- Q:WSL2のメモリ足りないからWSL2に多めに指定したらWindows側のメモリを使ってない時まで取られる
- A:定期的に「sudo sh -c "echo 3 >'/proc/sys/vm/drop_caches' && swapoff -a && swapon -a"」でもやるスクリプトでも書いとけ。毎分cronでおとすんならこう
crontab -eとかで起動して * * * * * sh -c "echo 3 >'/proc/sys/vm/drop_caches' && swapoff -a && swapon -a"
- Q:そもそもcronもsystemd.timerタイマーも起動してないンゴ…
- 上で書いたメモリと同じように「.wslconfig」か「wsl.conf」でこう書いてsystemd起動しとけ。ベータらしいから副作用とかあっても知らん
[boot] systemd=true
- Q:ネットワークドライブが見えないンゴ…
- A:一時的なら「mount -t drvfs {デバイス名} {マウントポイント}」、毎回起動したい(NASに画像出力するなど)場合は/etc/fstabに下記のように書いとけ
\\{NASのIPとか}\{残りのパスとか} /mnt/{マウントに使う他と被らない任意の名前} drvfs defaults 0 0
このページへのコメント
batが no such file or directoryで起動しないなーと思ったら複数のubuntuを入れてるせいで、デフォルトのdistributionを変更する必要があった
xformersをビルドしないでインストールする場合、
cuDNN (と、nvidiaアカウント)要らないよね?
ダメ元でやってみたけど、
Launching Web UI with arguments: --xformers
と出てるし、一見問題なく画像生成出来てるっぽい
やってみた(2022-12-10)
のリンクのスレッドの最後に
python setup.py clean --all
CC=gcc-11 pip install -e . --install-option develop
やればうまく動いた的な事書いてたのでやってみたら今のところ自分の環境では動いてるっぽい
Windows11 Ryzen7 3700X RTX A4000
アスカがWin上で28.49、WSL上で28.76とむしろ遅くなった。
ただBatchSizeを大きく取るとWindows上より3%ほど速くなる
ちなみにXformersはビルドしないで
source ./venv/bin/activate
pip install ttps://github.com/C43H66N12O12S2/stable-diffusion-webui/releases/download/linux/xformers-0.0.14.dev0-cp310-cp310-linux_x86_64.whl
でも可、これならすぐ入る(httpsにしてね)。
ビルドする場合でも前もって
sudo apt install ninja-build
しておけばマルチスレッドでビルドされるので速くなる、お試しあれ。
cuDNNのインストーラーを手に入れるのにNVIDIAアカウントの作成を要求されるんだが