画像生成AIの情報を纏めるWikiです。

×


更新版(2023-01-25作成)

  • local_WSL2
  • 手順が簡単になった
  • kohya sd-scripts対応

※番外編:導入(WSL2)|Linux環境でAutomatic1111を導入する

Windowsでも速度を求める人やLinuxに慣れてる人はこちらがお勧め

概要

WindowsのWSL(Linux)環境でAutomatic1111を導入する手順です。
利点
  • Windows版と比べて15〜25%程早い
  • 環境のバックアップが取りやすい
    (OSごとバックアップが取れるので何かあったときに戻すのが楽)
欠点
  • 多少だがLinuxの知識が必要になる

WSL2 のセットアップ

Powershellを管理者権限で起動して以下を実行
wsl --install
再起動を要求されるので再起動する

Ubuntu 22.04 をインストール

Microsoft Storeを起動し、ubuntu 22 で検索して Ubuntu 22.04.1 LTS をインストールする(2022/12/07現在の最新)

Ubuntu 22.04 をセットアップ

Ubuntu 22.04.1 LTSを起動すると初期化とユーザー名、パスワードの設定を要求されるので入力する

Pythonのアップデート

2023/02/19現在でPython3.10の最新である Python3.10.10にアップデートする

まず以下コマンドを実行
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.10/Python-3.10.10.tar.xz
tar xJf Python-3.10.10.tar.xz

Pythonをビルド(そこそこ時間がかかる)
cd Python-3.10.10
./configure
make
sudo make install
cd ~

ここまでやると、以下コマンドを打つと「Python 3.10.10」とバージョンが返ってくる
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」 に書いてあるコマンドを実行する

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のユーザー名>に移動し、以下コマンド実行
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のインストール

まず以下コマンドを実行
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など置く

Windowsのエクスプローラで \\wsl$ にアクセスするとWSL2のLinuxが一覧表示されるので、


\\wsl$\Ubuntu-22.04\home\<Ubuntuのユーザー名>\stable-diffusion-webui\models\Stable-diffusion に ckpt を置く
※同じやり方でVAEやhypernetworksの下にファイルが置けます

xformersの導入

2023/01/23時点で1111標準でインストールされるようになった

旧情報

xformers有効化とWebUI起動

/home/<Ubuntuのユーザー名>/stable-diffusion-webui にある webui-user.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.sh
Windows側で http://127.0.0.1:7860 にアクセスできます。

起動するのにUbuntuいちいち立ち上げるのがめんどくさいンゴ
/home/<Ubuntuのユーザー名> にある .profileに以下を書き加える
export LD_LIBRARY_PATH=/usr/lib/wsl/lib:$LD_LIBRARY_PATH
Windows側で以下のバッチファイルを作成する
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を何故か読み込まない現象が出る)
.bash_profile を作成しましょう
/home/<Ubuntuのユーザー名>/.bash_profile (無い場合は新規作成)
export LD_LIBRARY_PATH=/usr/lib/wsl/lib:$LD_LIBRARY_PATH
if [[ -f ~/.bashrc ]] ; then
    . ~/.bashrc
fi
バッチファイルを動かせば生成できるようになっているはずです

生成した絵に直でアクセスしたいンゴ
WebUIのSettingタブで以下のように設定しましょう
(以下の例はWindowsの C:\stable-diffusion-webui-automatic1111\outputs\ の下にフォルダ分けしてファイルを置きたい場合)

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

やってみた(2022-12-10)

個人的な意見としてはWSL2未経験かつLinux未経験者にはお勧めできない。
トラブルを自力解決できる程度の能力があることが望ましい。

やってみた2(2022-12-17)

要所でWSL環境のバックアップを取りつつ実施
所要時間90分程

このページへのコメント

環境
windows11
wsl2
Almalinux
GTX1060
a1111 commit 22bcc7b + xformers
torchは1系のデフォルト

エラー
Could not load library libcudnn_cnn_infer.so.8. Error: libnvrtc.so: cannot open shared object file: No such file or directory

対処方法
ssd変えて新しくwin11にしたけどNVIDIAドライバ入れ忘れてたから入れた
そのあとalma上に/usr/lib/wsl/libがあること確認してから
export LD_LIBRARY_PATH=/usr/lib/wsl/lib:$LD_LIBRARY_PATHしてwebui.shで起動して動いた
Windows側にバッチは作ってない
起動はモデル読み込みしても2-30秒でとても早い

0
Posted by 名無し(ID:nMo2e35qJw) 2023年04月06日(木) 04:56:43 返信

やってみたけど性能は
Ubuntu22.04ネイティブ > Windows11 > WSL2のUbuntu22.04だったんだが...

1
Posted by 名無し(ID:kmGWTAB1SA) 2023年04月02日(日) 00:24:50 返信

おま環かもしれないけどちょいちょい名前解決ができなくなりgit pullとか拡張機能の更新が不可能になることがあったのででググって見つけた解決法を記す

/etc/resolv.conf
の中身を

[network]
generateResolvConf = false
nameserver 8.8.8.8

に書き換え
nameserverのアドレスは任意に変えていい

0
Posted by 名無し(ID:YIgMtK3qSw) 2023年03月23日(木) 19:35:54 返信

直感的にはWSLで早くなるというのは考えにくいんだけど……
WSL2は要は仮想マシンでしょう?

あとpythonのビルドは--enable-optimizationしたほうがいいよ。

0
Posted by 名無し(ID:W3XhMMDnvA) 2023年03月01日(水) 00:48:33 返信数(1) 返信

Windowsで全部のミドルウェアを完璧に動作出来るようコンパイル出来るなら理論上はWindowsのほうが速いんだろうけど、
それが出来ないから仮想化のコストよりLinuxのミドルウェアの効率の高さが上回るんでないの

2
Posted by 名無し(ID:DqSiI5hXpw) 2023年03月01日(水) 18:59:07

batが no such file or directoryで起動しないなーと思ったら複数のubuntuを入れてるせいで、デフォルトのdistributionを変更する必要があった

0
Posted by 名無し(ID:QQfangahAg) 2023年02月11日(土) 02:07:39 返信

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

table拡張js

どなたでも編集できます

メンバー募集!