3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ateam LifeDesignAdvent Calendar 2024

Day 25

ゲームもAIも両立!ROCm対応進化でRadeon GPUでもLLMライフを捗らせる!

Last updated at Posted at 2024-12-24

この記事は、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と関連ソフトウェアのインストール

bash
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に接続をしてください

PowerShell
wsl --shutdown

rocminfo コマンドをWSL内で実行し、RPCmが正しくインストールされていることを確認してください。

bash
rocminfo

  :        :          :          :
  Name:                    gfx1100
  Marketing Name:          AMD Radeon RX 7900 XTX
  Vendor Name:             AMD
  Feature:                 KERNEL_DISPATCH
  Profile:                 BASE_PROFILE
  :        :          :          :

2. PyTorch ROCm対応バージョンのインストール

必要なPythonパッケージをインストール

bash
sudo apt install python3-pip -y
pip3 install --upgrade pip wheel
bash
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を使用できるようにライブラリを差し替え

bash
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

動作確認

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

True と返ってくれば成功です。

3. Stable Diffusion Web UI のインストール

bash
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui

モデルファイルを入れるディレクトリを作成し、今回は以下のモデルファイルを利用させて頂きます。
Stable Diffusion v1-5-pruned.ckpt

bash
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パッケージをインストール

bash
pip3 install --upgrade pip
pip3 install -r requirements.txt

Web UI の起動

bash
python3 launch.py --precision full --no-half

起動ができたら ブラウザで http://127.0.0.1:7860/ にアクセスできれば成功です。

venvを利用する場合は、venv内にPyTorchを同様にインストールする必要があります。

4. 画像を生成してみる

今回は試しに以下のプロンプトで画像を生成してみます。

Prompt
cute cat, realistic, high quality, masterpiece, HD
Negative prompt
(worst quality, low quality:1.4), (zombie, sketch, interlocked fingers,comic), nsfw

実際に生成された画像は以下のようになりました。

image.png

生成にかかった時間は 5.8秒のようですね。
1秒あたりの処理数は以下になります。

image.png

これくらいであれば十分に耐えられる速度になって来ているのではないでしょうか!

5. NVIDIA GeForce RTX4070 Ti との比較

同様のプロンプトで画像生成してみます。

image.png

image.png

4070 Tiは最新のCUDA最適化が施されており、ROCm対応のAMD環境に比べて計算効率が非常に高いため、処理速度で2倍程度の差が生じています。

ただROCm環境でも安定的に動作できており、日々速度向上もされていっているので今後に期待ですね!

まとめ

今回はゲームもAIも両立!という名目で簡単な比較検証を行ってみましたが如何でしたでしょうか。

AMD ROCm環境でも十分に実用的ですが、高速な画像生成を求める場合はNVIDIA GPU(特に最新世代のRTXシリーズ)が優れた選択肢にはなります。
ただし、AMD GPUは価格性能比に優れるため、コストを抑えてゲームパフォーマンスも求めるなら選択肢に入ってくるかもしれませんね!

参考資料

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?