見出し画像

Stable Diffusion 環境をWSLでサクっと作る

2024年11月4日更新
なんと、CUDAのインストールはいらないことが判明しました。
以下の記事を参照ください。
[改訂版] Stable Diffusion 環境をWSLでサクっと作る|いりじうむ

この記事はメモのため残しておきます。

結論から書くと、この記事の中で示す方法を使えば、Windows上で以下の2行を打つだけでStable Diffusionが動くWSLのUbuntu環境が作成されます。(スクリプトにまとめてあるだけとも言います)

PS> wsl --install Ubuntu-24.04
PS> wsl -d Ubuntu-24.04 bash setup.sh

これだけ簡単だと、なにかやらかして壊してしまってもさくっと作り直せます。精神的な敷居が非常に低いです。使用するプログラムごとに個別の環境を作ったりしてもよいと思います。
苦労してWindowsにpythonとかgitとかをインストールするよりは楽かと思います。

作成時も使うときも、Windows側での操作でできます。Linuxの知識は基本的には要りません。

この記事では、NVIDIAのGPUが搭載され、WindowsにGPUドライバーがインストールされているWindows10/11 PCを想定しています。

WSLの基本的な操作は次の記事を参照ください。→WSL2 基本知識|いりじうむ

WSL遅いんじゃないの?という不安があるかと思いますが、なぜかWindows上で動かすより(無視できる誤差レベルですが)やや速いです。ライブラリとかの差じゃないかと思いますが。
なお本物のLinuxはさらに5〜10%くらい速い感じです。ちょっとした生成や学習に使うなら無視できる程度の差ですが、大規模になにかやるなら生のLinuxのほうが良いかも。


WSLにUbuntuをインストール

PowerShell上で以下のコマンドを打って、新規環境をインストールします。

PS> wsl --install Ubuntu-24.04

アカウント名とパスワードを聞かれるので設定します。別に何でもよいです。
Windowsのログインアカウントと同じにしておくと、sshなどで繋ぐときに便利なので私はそうしています。

Ubuntuの環境設定

以下のスクリプトを実行します。

スクリプトをファイルにして、Windowsのユーザーディレクトリにでも保存しておきます。
ここからコピペして保存して下さいと言うと、改行コードがLFじゃなくて動かない人が多発する未来が見えたので、ファイルも置いておきます。
ダウンロードしたファイルを好きなフォルダに放り込んでください。

setup.sh

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-6 python3-pip python3-venv
echo 'export PATH=/usr/local/cuda-12.6/bin${PATH:+:${PATH}}' >> ~/.setcuda
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.setcuda
echo '. ~/.setcuda' >> ~/.bashrc

このスクリプトは、現時点で最新のCUDA12.6をインストールし、パスを設定。python関連で必要なものをインストールします。
インストールするCUDAバージョンの選定基準や変更については、この記事の末尾にある補足を読んでください。

WindowsのPowerShellからsetup.shのおいてあるフォルダに移動して、このスクリプトをwslに実行させます。Windows側から直接実行できます。

PS> wsl -d Ubuntu-24.04 bash setup.sh

WSL上にLinux環境が一つしかない場合は、OS名は省略できます。

PS> wsl bash setup.sh

sudo(管理者権限実行)でインストールする関係上、スクリプトの途中で一度、パスワードを求められますので設定したパスワードを入力してください。

これでOS環境の構築は完了。簡単。

Stable Diffusionアプリのインストール

ComfyUIインストール

WSLのUbuntu24.04を起動してその中で以下を実行。

git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI/
python3 -m venv venv
. venv/bin/activate
pip install -r requirements.txt

ComfyUI起動

cd ~/ComfyUI
. venv/bin/activate
python3 main.py 

インストールは一回きり&たかだか4行なので、WSLのターミナルを起動して上のコマンドをコピペして実行すれば良いと思います。
しかし、起動は、3行とはいえ毎回手で打つのは面倒です。

スクリプトとしてファイルに保存しておけばWindows側からコマンド一発で起動できます。
comfyui.shという名前でUbuntu側のホームディレクトリ(/home/ユーザ名)にでも入れておくとよいでしょう。Ubuntuのファイルシステムもエクスプローラで見えますので放り込むのも簡単です。

Windowsから起動する場合はこうです。
このコマンドをショートカットにでもしておくと簡単に起動できて良いでしょう。

PS> wsl -d Ubuntu24.04 bash ~/comfyui.sh

PowerShell上のURLをCtrl+クリックするとブラウザが立ち上がってComfyUIにアクセスできます。

WebUI

ComfyUIとほぼ同じです。
ただし、Ubuntu24.04だとエラーが出ます。これはWebUIが悪いです。python 3.10か3.11にしか対応していないとのことです。

公式guthubでは新しいOS(Ubuntu24.04)の場合はpython 3.11を入れろと書いてあります。

公式の言うように、これを24.04上で解決することはできますが、もともと入っているpython 3.12との競合をしないようにごちゃごちゃやる必要があります。せっかく動いたComfyUIが動かなくなったら嫌ですよね。

わざわざそんなことで苦労するよりは、一つ古いUbuntu 22.04を使ったほうが良いです。22.04であればプリインストールのpythonが3.10なのですんなり動きます。こういうことができるのがWSLの醍醐味です。

PS> wsl --install Ubuntu-22.04
PS> wsl -d Ubuntu-22.04 bash setup.sh

WebUIインストール

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui
python3 -m venv venv
. venv/bin/activate
pip install -r requirements.txt

WebUI起動

cd stable-diffusion-webui
. venv/bin/activate
bash webui.sh


(オプション)OS環境の整理

さて、動くようになりました。

このまま使ってもよいですが、またUbuntu-24.04を作成したくなった時に邪魔になるので、このあたりでvhdxファイルをコピーして、別の名前でwslに登録するとよいと思います。

まずWSLをシャットダウン。起動したままディスクイメージをいじると、ファイルシステムがおかしくなりますので必ずwslを停止してから行います。

PS> wsl --shutdown

以下の場所からvhdxを好きな場所にコピー。

Ubuntu 24.04
C:\Users\ユーザ名\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu24.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx

Ubuntu 22.04
C:\Users\ユーザ名\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx

インポート

PS> wsl --import-in-place ComfyUI .\wsl\ComfyUI\ext4.vhdx
PS> wsl --import-in-place SDWebUI .\wsl\SDWebUI\ext4.vhdx

デフォルトユーザーの修正

このようにインポートすると、デフォルトユーザー設定が消えてrootユーザーでのログインになってしまいます。
以下のように。WSL内の/etc/wsl.conf に[user]節を追加することでデフォルトユーザーの設定ができます。

/etc/wsl.conf

Ubuntu-24.04の削除

PS> wsl --unregister Ubuntu-24.04
PS> wsl --unregister Ubuntu-22.04

これで、必要になったらまた素のUbuntu-24.04がインストールできます。

Ububutuインストール直後のvhdxファイルは1,2GBほどでしたが、CUDAを入れると22GBほどになります。でけえ…。



(補足)インストールするCUDAバージョン

この記事示したコマンドでは、CUDA 12.6をインストールしましたが、本来であれば、自分の望みのCUDAバージョンにあったコマンドをCUDA公式ページで確認してインストール必要があります。

スクリプトのCUDAインストール部分を適時書き換えて使用してください。

GPU確認

Windows側にNVIDIAのGeforceドライバがインストールされていれば、何もしなくてもWSL側で動きます。
起動したUbuntu-24.04上で以下を実行して、正しく動いているかを確認します。

$ nvidia-smi

次のような出力が出ればGPUが正しく認識されています。右上のCUDA Versionを確認します。

これは、「このドライバで利用できるCUDAの最大バージョン」です。
インストールされているCUDAバージョンではないので注意。
古いGPUを使っていると、低いバージョンにしか対応していないことがありますが、最新ドライバをインストールしたRTXシリーズであれば基本的には最新のCUDAが対応しているはずです。

基本的には、setup.shの12.6、12-6とある箇所(3か所)の数字を変更すれば大丈夫です。

正式なコマンドは以下の用意CUDA公式を参照して下さい。

CUDAインストールコマンド

https://developer.nvidia.com/cuda-downloads  で、CUDAの最新バージョンとコマンドが確認できるので、それを参考にしてスクリプトを書き換えます。

とはいえ、最新版のCUDAを入れれば大体動くのでそうそう変更する必要はないです。

いいなと思ったら応援しよう!