この記事は、Ateam LifeDesign Advent Calendar 2024 の 25日最終記事になります。
はじめに
Ryzen 7 9800X3D が 11月15日(金) AM11:00 に日本国内で発売された瞬間品切れになり中々入手できない中、偶然手に入れることができたので、20数年ぶりに自作PCをした@kopugです。
どうせならGPUもAMDのRadeon 7900XTXにし、年末年始はゲーム三昧!と思っていたのですが、個人開発でもAIやLLMを触ることがあるので、Radeonで今どれくらい動くのか?というのを検証した記事になります。
ゲーム側の対応に関係なくフレームレートを約2倍程向上させられるAFMF2(AMD Fluid Motion Frames)は魅力的だけど、AIやLLMの機能面/パフォーマンスはどうなの?と気になっている方に少しでも参考になれば幸いです。
ROCm: AMDのGPUコンピューティングソリューション
ROCm(Radeon Open Compute)は、AMDが開発した並列コンピューティング用のオープンソースソフトウェアスタックです。NVIDIAのCUDAに相当し、GPUコンピューティングのために設計されています。
主な特徴
- オープンソース: 開発者の柔軟性とアクセシビリティを向上
- マルチGPUサポート: 複数のRadeon RXおよびRadeon PRO GPUの構成をサポート(構成によって性能が変動)
-
WSL 2対応(ベータ版): Windows環境でのAI開発が可能。ただし一部機能に制限あり(例:
rocm-smi
非対応) - 機械学習フレームワーク対応: TensorFlow、PyTorch、ONNX Runtimeを公式サポート
CUDAとの比較
特性 | CUDA | ROCm |
---|---|---|
エコシステム | 広範なライブラリとツール | 一部主要フレームワークをサポート |
互換性 | 業界標準 | CUDAとの互換性に課題 |
パフォーマンス | 最適化が進んでいる | 特定のAMD GPUで最適化 |
学習曲線 | 広く普及している | 開発者による調整が必要 |
ROCmは、ハイパフォーマンスコンピューティング(HPC)、AI、科学計算、CADなど、様々な分野でAMD GPUを効果的に活用することを目指しています。RDNA 3アーキテクチャなどの新世代ハードウェアでのパフォーマンス向上が報告されており、オープンソースの特性を活かし、今後さらなる発展が期待されています。
今回はROCmを用いて、WSL2でAUTOMATIC1111/Stable Diffusion WebUIを構築し、どれくらいの生成速度なのか、またNVIDIA GeForce RTX4070 Tiと比較してどうなのかを検証していきます。
構築環境
- OS: Windows 11 + WSL2 Ubuntu 22.04
- CPU: Ryzen 7 9800X3D
- GPU: Radeon RX 7900 XTX
- MEM: DDR5 32GB x 2
1. ROCmと関連ソフトウェアのインストール
sudo apt update
wget https://repo.radeon.com/amdgpu-install/6.2.3/ubuntu/jammy/amdgpu-install_6.2.60203-1_all.deb
sudo apt install -y ./amdgpu-install_6.2.60203-1_all.deb
sudo amdgpu-install -y --usecase=wsl,rocm --no-dkms
sudo usermod -a -G render,video $LOGNAME
--no-dkms オプションについて
Dynamic Kernel Module Support (DKMS) モジュールのインストールを省略するためのものです。WSL2ではカーネルモジュールをカスタマイズできないため、このオプションを指定することで、不要なモジュールのビルドエラーを回避します。特にWSL環境でのROCmのセットアップ時に推奨されます。
ROCmを認識させるためにWSLをshutdownさせた後に再度WSLに接続をしてください
wsl --shutdown
rocminfo
コマンドをWSL内で実行し、RPCmが正しくインストールされていることを確認してください。
rocminfo
: : : :
Name: gfx1100
Marketing Name: AMD Radeon RX 7900 XTX
Vendor Name: AMD
Feature: KERNEL_DISPATCH
Profile: BASE_PROFILE
: : : :
2. PyTorch ROCm対応バージョンのインストール
必要なPythonパッケージをインストール
sudo apt install python3-pip -y
pip3 install --upgrade pip wheel
wget https://repo.radeon.com/rocm/manylinux/rocm-rel-6.2.3/torch-2.3.0%2Brocm6.2.3-cp310-cp310-linux_x86_64.whl
wget https://repo.radeon.com/rocm/manylinux/rocm-rel-6.2.3/torchvision-0.18.0%2Brocm6.2.3-cp310-cp310-linux_x86_64.whl
wget https://repo.radeon.com/rocm/manylinux/rocm-rel-6.2.3/pytorch_triton_rocm-2.3.0%2Brocm6.2.3.5a02332983-cp310-cp310-linux_x86_64.whl
pip3 uninstall torch torchvision pytorch-triton-rocm numpy
pip3 install *.whl numpy==1.26.4
PyTorchのROCm版が、正しいlibhsa-runtime64.soを使用できるようにライブラリを差し替え
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
動作確認
python3 -c 'import torch; print(torch.cuda.is_available())'
True
と返ってくれば成功です。
3. Stable Diffusion Web UI のインストール
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui
モデルファイルを入れるディレクトリを作成し、今回は以下のモデルファイルを利用させて頂きます。
Stable Diffusion v1-5-pruned.ckpt
mkdir -p models/Stable-diffusion
wget -O models/Stable-diffusion/v1-5-pruned.ckpt https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5/resolve/main/v1-5-pruned.ckpt?download=true
必要なPythonパッケージをインストール
pip3 install --upgrade pip
pip3 install -r requirements.txt
Web UI の起動
python3 launch.py --precision full --no-half
起動ができたら ブラウザで http://127.0.0.1:7860/ にアクセスできれば成功です。
venv
を利用する場合は、venv内にPyTorchを同様にインストールする必要があります。
4. 画像を生成してみる
今回は試しに以下のプロンプトで画像を生成してみます。
cute cat, realistic, high quality, masterpiece, HD
(worst quality, low quality:1.4), (zombie, sketch, interlocked fingers,comic), nsfw
実際に生成された画像は以下のようになりました。
生成にかかった時間は 5.8秒のようですね。
1秒あたりの処理数は以下になります。
これくらいであれば十分に耐えられる速度になって来ているのではないでしょうか!
5. NVIDIA GeForce RTX4070 Ti との比較
同様のプロンプトで画像生成してみます。
4070 Tiは最新のCUDA最適化が施されており、ROCm対応のAMD環境に比べて計算効率が非常に高いため、処理速度で2倍程度の差が生じています。
ただROCm環境でも安定的に動作できており、日々速度向上もされていっているので今後に期待ですね!
まとめ
今回はゲームもAIも両立!という名目で簡単な比較検証を行ってみましたが如何でしたでしょうか。
AMD ROCm環境でも十分に実用的ですが、高速な画像生成を求める場合はNVIDIA GPU(特に最新世代のRTXシリーズ)が優れた選択肢にはなります。
ただし、AMD GPUは価格性能比に優れるため、コストを抑えてゲームパフォーマンスも求めるなら選択肢に入ってくるかもしれませんね!