失敗しても成功してもやったこととりあえず書いてく。
後でまとめれたらまとめたい。
2024.07.06 動いてとりあえず描画できた。wsl-openコマンドについて追加した。
環境
- Ryzen7 7700
- NVIDIA RTX4070 SUPER (12GB)
- 64GRAM
- SSD 1T
WSL2インストールとUbuntuインストール
有効化
↑が公式のドキュメントだけど、「Windowsの機能の有効化または無効化」をWindowsの設定から開いて「Linux用Windowsサブシステム」にチェックを入れて再起動すればおっけー
Ubuntuインストール
ターミナルで起動、name/passwdを入れたら、以下のコマンドで一応バージョン確認
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy
いったん閉じてwsl2に割り当てられてるCPU数などを変更する
code "$Env:userprofile\.wslconfig"
以下のように記載。
メモリは64積んでるので、ひとまず50使えるようにして、プロセッサは物理?論理?わからないけど、とりあえず最大の16。スワップは嫌いなので0。
[wsl2]
memory=50GB
processors=16
swap=0
以下参考
とりあえずUbuntuもっかい入って、以下のコマンドでCPU数とメモリを確認
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 48 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
~
$ top | grep "MiB Mem"
MiB Mem : 50194.3 total, 49368.9 free, 612.3 used, 213.1 buff/cache
16CPUsにMemもトータルが50194なので、おけー。
失敗したときに消す
普通にアプリからUbuntuをアンインストールしても、Windows11だとLinuxってディレクトリに消したはずのUbuntuのファイル群が残っちゃうので、以下のコマンドで削除。
これできれいになった。
wsl --list
wsl --unregister Ubuntu
StableDiffusionを頑張って入れてみよう
$ python3 -V
Python 3.10.12
$ nvidia-smi
Tue Jul 2 23:11:16 2024
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 545.37.02 Driver Version: 546.65 CUDA Version: 12.3 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce RTX 4070 ... On | 00000000:01:00.0 On | N/A |
| 0% 40C P8 14W / 220W | 943MiB / 12282MiB | 5% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| No running processes found |
+---------------------------------------------------------------------------------------+
NvidiaCudaToolkitのインストール
ここから、Linux -> x86_64 -> wsl_ubuntu -> 2.0 -> dev(local) ※最後のはnetworkでもlocalでも何でもOK
でインストール用コマンドをゲットできるので実行
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.5.1/local_installers/cuda-repo-wsl-ubuntu-12-5-local_12.5.1-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-12-5-local_12.5.1-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-12-5-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-5
最後まで流れて
~
Running hooks in /etc/ca-certificates/update.d...
done.
done.
Setting up at-spi2-core (2.44.0-3) ...
ってなったので、nvccのバージョンを確認.
$ nvcc -V
Command 'nvcc' not found, but can be installed with:
sudo apt install nvidia-cuda-toolkit
?!
今入れたのってnvidiaのcuda toolkit…
あ、パスが必要なのね
※バージョンがインストールしたやつと違うかもだから注意。今回入れたのは12.5なので、変更してコマンド発行
$ export PATH=/usr/local/cuda-12.5/bin${PATH:+:${PATH}}
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Thu_Jun__6_02:18:23_PDT_2024
Cuda compilation tools, release 12.5, V12.5.82
Build cuda_12.5.r12.5/compiler.34385749_0
ってことで、bash_profileに以下の内容を記載(なければ新規作成)
nebukin@NebuAI:~$ cat ~/.bash_profile
# StableDiffusion用の設定(GPU関連)
export PATH=/usr/local/cuda-12.5/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.5/lib64\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
# load bashrc
if [[ -f ~/.bashrc ]] ; then
. ~/.bashrc
fi
※bashrc読み込み忘れないように注意
Stable Diffusion WebUIをインストール
参考
$ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
$ cd stable-diffusion-webui/
~/stable-diffusion-webui$ ls
CHANGELOG.md README.md environment-wsl2.yaml javascript modules requirements.txt script.js textual_inversion_templates webui.bat
CITATION.cff _typos.toml extensions launch.py package.json requirements_npu.txt scripts webui-macos-env.sh webui.py
CODEOWNERS configs extensions-builtin localizations pyproject.toml requirements_versions.txt style.css webui-user.bat webui.sh
LICENSE.txt embeddings html models requirements-test.txt screenshot.png test webui-user.sh
$ cp -ap webui-user.sh webui-user.sh.org
$ vi webui-user.sh
xformersを使用するようにwebui-user.shを編集する
# Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention"
#export COMMANDLINE_ARGS=""
export COMMANDLINE_ARGS="--xformers"
参考サイトの通りに適当なモデルを入れて起動してみる
$ cd ~/stable-diffusion-webui/models/Stable-diffusion/
$ wget https://huggingface.co/stabilityai/stable-diffusion-2-1-base/resolve/main/v2-1_512-ema-pruned.safetensors
v2-1_512-ema-pruned.safetensors 100%[====================================================================================================>] 4.86G 70.7MB/s in 76s
2024-07-03 00:01:45 (65.2 MB/s) - ‘v2-1_512-ema-pruned.safetensors’ saved [5214604494/5214604494]
$ cd ~/stable-diffusion-webui
$ ./webui.sh
結果
################################################################
Install script for stable-diffusion + Web UI
Tested on Debian 11 (Bullseye), Fedora 34+ and openSUSE Leap 15.4 or newer.
################################################################
################################################################
Running on nebukin user
################################################################
################################################################
Repo already cloned, using it as install directory
################################################################
################################################################
Create and activate python venv
################################################################
The virtual environment was not created successfully because ensurepip is not
available. On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.
apt install python3.10-venv
You may need to use sudo with that command. After installing the python3-venv
package, recreate your virtual environment.
Failing command: /home/nebukin/stable-diffusion-webui/venv/bin/python3
################################################################
ERROR: Cannot activate python venv, aborting...
################################################################
Pythonの設定ミスっぽい。venvやってないじゃん。ってことで、心を入れなおして、upgradeからやっちゃおう。
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install wget git python3 python3-pip python3-venv
$ cd ~/stable-diffusion-webui # webui.shがあるディレクトリに移動
$ python3 -m venv sd-env # 仮想環境を作成
$ source sd-env/bin/activate # 仮想環境をアクティブ化
$ python --version
3.10.xx
$ pip install -r requirements.txt
$ ./webui.sh
now installing...
$ ./webui.sh
################################################################
Install script for stable-diffusion + Web UI
Tested on Debian 11 (Bullseye), Fedora 34+ and openSUSE Leap 15.4 or newer.
################################################################
################################################################
Running on nebukin user
################################################################
################################################################
Repo already cloned, using it as install directory
################################################################
################################################################
python venv already activate or run without venv: /home/nebukin/stable-diffusion-webui/sd-env
################################################################
################################################################
Launching launch.py...
################################################################
glibc version is 2.35
Cannot locate TCMalloc. Do you have tcmalloc or google-perftool installed on your system? (improves CPU memory usage)
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0]
Version: v1.9.4
~
Launching Web UI with arguments: --xformers
WARNING:xformers:WARNING[XFORMERS]: xFormers can't load C++/CUDA extensions. xFormers was built for:
PyTorch 2.1.2+cu121 with CUDA 1201 (you have 2.3.1+cu121)
Python 3.10.13 (you have 3.10.12)
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
この行クリックして開くと失敗したやらなくていい作業が書いてある(一応ログとして残しておく)
xformersがcannot loadだ…
いったん全部消して
$ pip uninstall torch torchvision torchaudio xformers
PyTorch 2.3.1と対応するtorchvision、torchaudioをインストールします。
$ pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
とりあえず最新のxformersを入れてみる
$ pip install xformers
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
torchvision 0.18.1 requires torch==2.3.1, but you have torch 2.3.0 which is incompatible.
torchaudio 2.3.1 requires torch==2.3.1, but you have torch 2.3.0 which is incompatible.
むむむ…
いったん削除、pythonのバージョンがちょっと足りないかも?
$ deactivate sd-env
$ rm -rf sd-env/
3.11を入れる
$ sudo apt install python3.11 python3.11-venv python3.11-dev
venv環境作成
$ python3.11 -m venv sd-env
$ source sd-env/bin/activate
$ python --version
Python 3.11.0rc1
pip最新化
$ python -m pip install --upgrade pip
Requirement already satisfied: pip in ./sd-env/lib/python3.11/site-packages (22.0.2)
Collecting pip
Using cached pip-24.1.1-py3-none-any.whl (1.8 MB)
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 22.0.2
Uninstalling pip-22.0.2:
Successfully uninstalled pip-22.0.2
Successfully installed pip-24.1.1
requirementsを入れなおす
$ pip install -r requirements.txt
起動
$ ./webui.sh
~
Launching Web UI with arguments: --xformers
./webui.sh: line 297: 6655 Segmentation fault "${python_cmd}" -u "${LAUNCH_SCRIPT}" "$@"
セグメンテーションフォルト…
何度やってもセグメンテーションフォルトになるので、Pythonのバージョン問題ぽいから元々入ってる3.10.12の最初のやつで環境作りなおす
$ deactivate sd-env
$ rm -rf sd-env
$ cd ~/stable-diffusion-webui # webui.shがあるディレクトリに移動
$ python3 -m venv sd-env # 仮想環境を作成
$ source sd-env/bin/activate # 仮想環境をアクティブ化
$ python --version
3.10.xx
$ pip install -r requirements.txt
∧_∧
∧__∧ (´<_` ) 流石だよな俺ら。
( ´_ゝ`)/ ⌒i
_(__ つ/ ̄ ̄ ̄/i |_
\/___/ ヽ⊃
メモリ対策のやつも入れてみるかMallocなんちゃらとかいうやつ
$ sudo apt install --no-install-recommends google-perftools
webUIは起動するが、ずっつモデルのところがクルクルしたまま
xformersじゃないやつで起動させよう
webui-user.shを以下に変更
#export COMMANDLINE_ARGS="--xformers"
export COMMANDLINE_ARGS="--medvram-sdxl --no-half-vae --opt-sdp-attention"
# install command for torch
#export TORCH_COMMAND="pip install torch==1.12.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113"
export TORCH_COMMAND="pip install torch==2.1.2+cu121 --extra-index-url https://download.pytorch.org/whl/cu121"
で、PC自体再起動!!!!!!
そのあとUbuntuたちあげて
pythonのアクティベートして
$ cd stable-diffusion-webui/
$ source sd-env/bin/activate
$ ./webui.sh
ひとまず動いた…
あとは、モデルを探したりすればいいのか。
モデルの設定方法とかは別途またやろう…
何したら動いたのかも、まとめよう…いつか…
pytho3.11で作るの試す前にxformersじゃないほうの設定入れて、PC再起動したらその時点で動いたかもしれない。
誰かに試してもらいたいが、ううむ。
wsl-openをインストール
wsl2上で動かしてるため、ディレクトリ開くコマンドが動かない。
よって以下のシェルをインストール
sudo wget -O /usr/local/bin/wsl-open https://raw.githubusercontent.com/4U6U57/wsl-open/master/wsl-open.sh
sudo chmod +x /usr/local/bin/wsl-open
sudo ln -s /usr/local/bin/wsl-open /usr/bin/wsl-open
これで精製した画像がエクスぽローラーで開ける!