【WSL2/ComfyUI】Radeonでもまともな速度で画像生成したい

2024年8月19日Linux,Windows,画像生成

こんにちは、しきゆらです。
今回は、少し前にROCmがWSLをベータサポートしたので、WSL環境にComfyUIを入れて動かしていきます。

以前X(旧Twitter)にて、WSL環境で画像生成するための環境を作ってみたら、うっかりできた、とはしゃいでいました。

この手順を整理したので記録として残しておきます。
なお、環境はWSL2にUbuntu-22.04をインストールして検証しています。

手順

基本的には、AMD公式の下記手順を参考にROCmをインストールし、その後にComfyUIの環境を作っていきます。

なお、WSL自体の環境構築は済んでいる状態を想定しています。
まだWSL自体を準備できていない場合は、古い記事ですが過去記事の「WSLの有効化」~「Linuxディストリビューションのインストール」の手順を参考にするか、MSのドキュメントをご覧ください。

WSL2にROCmをインストールする

# パッケージ類を更新しておく
sudo apt update
sudo apt upgrade -y

# AMDの手順に従ってamdgpu-installをインストールする
wget https://repo.radeon.com/amdgpu-install/6.1.3/ubuntu/jammy/amdgpu-install_6.1.60103-1_all.deb
sudo apt install ./amdgpu-install_6.1.60103-1_all.deb -y

# 手元の環境では一部パッケージが保留されたので更新しておく
sudo apt upgrade python3-update-manager update-manager-core -y

# ROCmをインストール
amdgpu-install -y --usecase=wsl,rocm,hip

特にエラー等は出ずに完了するはずです。
rocminfoで情報が表示されればOK。

手元の環境は、ベンチマーク記事等で記載していますがRX 7900 XTX環境なので以下のように表示されます。

...
  Name:                    gfx1100
  Marketing Name:          AMD Radeon RX 7900 XTX
  Vendor Name:             AMD
...

ROCmを使ったPyTorchをインストールする

こちらもAMD公式手順を参考に進めていきます。

# pipのインストール(デフォルトでインストール済みのはず)
sudo apt install python3-pip -y

# pip、wheelの更新
pip3 install --upgrade pip wheel

# PyTorch等をインストール
wget https://repo.radeon.com/rocm/manylinux/rocm-rel-6.1.3/torch-2.1.2%2Brocm6.1.3-cp310-cp310-linux_x86_64.whl
wget https://repo.radeon.com/rocm/manylinux/rocm-rel-6.1.3/torchvision-0.16.1%2Brocm6.1.3-cp310-cp310-linux_x86_64.whl
wget https://repo.radeon.com/rocm/manylinux/rocm-rel-6.1.3/pytorch_triton_rocm-2.1.0%2Brocm6.1.3.4d510c3a44-cp310-cp310-linux_x86_64.whl
pip3 uninstall torch torchvision pytorch-triton-rocm numpy
pip3 install *.whl numpy==1.26.4

# ライブラリを更新
pushd .
location=`pip show torch | grep Location | awk -F ": " '{print $2}'`
cd ${location}/torch/lib/
rm libhsa-runtime64.so*
cp /opt/rocm/lib/libhsa-runtime64.so.1.2 libhsa-runtime64.so
popd

こちらも特に問題なく完了。
Verify PyTorch installationのコマンドを実行してみて、問題なく動作しているかを確認すると良いかと思います。

特に、以下のコマンドでTrueが返ってこなければComfyUIは動かないので注意。

python3 -c 'import torch; print(torch.cuda.is_available())'

ComfyUIの環境を作る


# ComfyUIをクローン
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI

# ComfyUI Managerのインストール ※オプション
git clone https://github.com/ltdrdata/ComfyUI-Manager.git ./custom_nodes/ComfyUI-Manager
pushd .
cd ./custom_nodes/ComfyUI-Manager
pip3 install -r requirements.txt --user
popd

# 必要なパッケージをインストール
pip3 install safetensors psutil einops transformers scipy torchsde aiohttp spandrel

# ComfyUIを起動
python3 main.py

いくつかエラーは出てきますが、ComfyUIを起動させることができました。
ComfyUI Managerをインストールしていれば、一般的なモデルやVAE等の導入も簡単なので使い始めやすいかと思います。

動作確認

では、画像を生成してみます。
環境はいつも通り以下の環境です。
またWSL環境に48GBのメモリを割り当ててます。

CPUAMD Ryzen 9 7900X
GPUAMD Radeon RX7900XTX
メモリDDR5 96GB (5600MHz)
PC構成

いわゆるハローアスカベンチマークのプロンプト等をそのまま使ってみます。
VAEはorangemixのものを使っています。

18~19it/s程度の速度で生成できました。
10枚生成したとしても、16~17秒ほどです。

過去何度か画像生成のベンチマークを取っていますが、5it/s程度しか速度が出ず
10枚生成すると50~100秒程度かかっていました。
以下に過去計測したベンチマーク結果を貼っておきます。

過去の記録よりも圧倒的に速い速度で生成出来ています。
1枚1~2秒程度で生成できるので、ようやくまともに使えるかな、という印象です。

その他、上記画像を生成したときは18~19it/s程度で回りますが、最近話題のFLUX.1 Schnellを使って1枚生成すると5it/s程度でトータル100秒ほど、SDXLだと3it/s程度でトータル15秒程度かかりました。

まとめ

今回は、Radeonでもまともな速度で画像生成したい、ということでWSL環境下にComfyUIを動かす環境を作って動かしてみました。
Windows上で動かしたときよりもだいぶ速く回ってくれるので、ようやくRadeonでもまともに画像生成できそうな印象でした。

また、以前にメモリを32GBから96GBに増設しましたが、ここで生きてくるとは、という感じでした。
今後もちょいちょい生成していきたいです。

今回は、ここまで。

おわり

Posted by しきゆら