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を入れれば大体動くのでそうそう変更する必要はないです。