2023/9/8(海外では9/6)にRX7800XT/RX7700XTが発売されました。
それに合わせてRadeon software for Linuxも「amdgpu-install_5.7.50700-1_all.deb」にアップデートされましたのでROCm5.7でStable Diffusion WebUIが動かないかどうかテストしてみました。
先にお断りしておきますが、今回の試みでは動きませんでした。
動くか動かないかだけにしか興味の無い方はここから先は読み進めないことをお勧めしておきます。
※ 初めて来た方へ:こちらのページでROCm5.6のセットアップスクリプトを配布中しています。
一応、同じ疑問を持つ方のために私が行ったことの一通りの流れを説明しておきます。
Radeon™ Software for Linux® 23.20 リリースノート(AMD公式)
ドライバは上からダウンロードできます。
リリースノートには以下のようにあります。
Linux用Radeonソフトウェアのインストール
Radeon Software for Linux のインストールまたはアンインストール方法の詳細については、Radeon Software for Linux のインストール手順を参照してください。
Note:このリリースでは、ROCmおよびROCm関連のインストールのユースケースはサポートされていません。
私は当初RX7800XT/RX7700XTとROCm5.6.1組み合わせだと思っていました。
そのため、性能は変わらないけどPytorchが動くのだろうなと思っていました。
理由は対応ドライバが無いとRX7800XT/RX7700XTでROCm5.6が動かせない可能性があるからです。
「動かせないのはおかしい」と言う先入観と言うか思い込みです。
残念ながらAMDさんの考えは違ったようですね。
ちなみに、この記事を書いている現在の / MIOpen のMilestoneは上のように80%になっています。
テスト環境
- CPU:Intel Core i7-13700K
- CPUクーラー:サイズ Big shuriken3 RGB
- マザーボード:Asrock Z690M-ITX/ax
- SSD:M2_2(チップセット側) Moment MT34 NVMe Gen3 SSD 256GB(今回は使用していません)
- M2_1(CPU側) FPI256MWR7(今回は使用していません)
- NVMe-USB3.2 Gen2X2 アルミエンクロージャー BLM20C:SUNEAST SE900NVG3-256G(システムドライブ)
- 電源:Corsair SFX 750W電源 SF-750
- メモリ:G Skill Trident Z DDR4-3600 OCメモリ16GB*2=32GB
- ケース:QDIY 0040-*PCJMK6-ITX(テストベンチ)
- OS:Lubuntu 22.04LTS(jammy-jellyfishベース)
- GPU Sapphire Pulse Radeon RX7900XTX 24GB
いつも通りになります。
テストしたこと
ソフトウェア環境
前回のセットアップスクリプトでセットアップしたStable diffusion WebUI+ROCm 5.6+ユーザービルドPytorch環境
ROCm5.6を削除し、「amdgpu-install_5.7.50700-1_all.deb」をROCmオプション付きでインストール
ROCm5.6.1なのかROCm5.7なのかを調べてみることにしました。
今までのようにどのバージョンの「amdgpu-install」がインストールされているかを調べるだけではROCmの正確なバージョンがわからないのでROCmを入れ替えた後、以下のコマンドを実行しました。
apt show rocm-libs -a
結果
:~$ apt show rocm-libs -a
Package: rocm-libs
Version: 5.7.0.50700-45~22.04
Priority: optional
Section: devel
Maintainer: ROCm Libs Support <rocm-libs.support@amd.com>
Installed-Size: 13.3 kB
Depends: hipblas (= 1.1.0.50700-45~22.04), hipblaslt (= 0.3.0.50700-45~22.04), hipfft (= 1.0.12.50700-45~22.04), hipsolver (= 1.8.1.50700-45~22.04), hipsparse (= 2.3.8.50700-45~22.04), miopen-hip (= 2.20.0.50700-45~22.04), rccl (= 2.17.1.50700-45~22.04), rocalution (= 2.1.11.50700-45~22.04), rocblas (= 3.1.0.50700-45~22.04), rocfft (= 1.0.23.50700-45~22.04), rocrand (= 2.10.17.50700-45~22.04), rocsolver (= 3.23.0.50700-45~22.04), rocsparse (= 2.5.4.50700-45~22.04), rocm-core (= 5.7.0.50700-45~22.04), hipblas-dev (= 1.1.0.50700-45~22.04), hipblaslt-dev (= 0.3.0.50700-45~22.04), hipcub-dev (= 2.13.1.50700-45~22.04), hipfft-dev (= 1.0.12.50700-45~22.04), hipsolver-dev (= 1.8.1.50700-45~22.04), hipsparse-dev (= 2.3.8.50700-45~22.04), miopen-hip-dev (= 2.20.0.50700-45~22.04), rccl-dev (= 2.17.1.50700-45~22.04), rocalution-dev (= 2.1.11.50700-45~22.04), rocblas-dev (= 3.1.0.50700-45~22.04), rocfft-dev (= 1.0.23.50700-45~22.04), rocprim-dev (= 2.13.1.50700-45~22.04), rocrand-dev (= 2.10.17.50700-45~22.04), rocsolver-dev (= 3.23.0.50700-45~22.04), rocsparse-dev (= 2.5.4.50700-45~22.04), rocthrust-dev (= 2.18.0.50700-45~22.04), rocwmma-dev (= 1.2.0.50700-45~22.04)
Homepage: https://github.com/RadeonOpenCompute/ROCm
Download-Size: 1,012 B
APT-Sources: https://repo.radeon.com/amdgpu/23.20/rocm/apt/5.7 jammy/main amd64 Packages
Description: Radeon Open Compute (ROCm) Runtime software stack
と言うわけで驚くべきことにROCmは5.6.1ではなく、5.7開発版と言うことになっています。
では早速、PytorchをNightlyの5.6に入れ替えてrun_test.pyを実行してみました。
※ run_test.pyは私が作成したPytorchがGPUを認識しているかどうかを表示するスクリプトです。ROCm 5.6のStable diffusion WebUIセットアップファイルの中に含まれており、自動的にStable diffusion WebUIフォルダの中にコピーされます。
cd ~/stable-diffusion-webui
rm -r venv
python3 -m venv venv
source venv/bin/activate
python3 -m pip install --upgrade pip wheel
pip3 install --pre torch torchvision --index-url https://download.pytorch.org/whl/nightly/rocm5.6
python3 run_test.py
実行結果
(venv) *******@******-**********:~/stable-diffusion-webui$ python3 run_test.py
CUDA有効:False
CUDAデバイス数:0
CUDA IDナンバー:Traceback (most recent call last):
File “/home/linadm/stable-diffusion-webui/run_test.py”, line 9, in <module>
print(torch.cuda.current_device())
File “/home/linadm/stable-diffusion-webui/venv/lib/python3.10/site-packages/torch/cuda/__init__.py”, line 769, in current_device
_lazy_init()
File “/home/linadm/stable-diffusion-webui/venv/lib/python3.10/site-packages/torch/cuda/__init__.py”, line 298, in _lazy_init
torch._C._cuda_init()
RuntimeError: No HIP GPUs are available
結果は上のようにPytorchがGPUを掴んでいません。
よってROCm5.7開発版環境でROCm5.6のPytorchを使うのが不可能と言うことがわかります。
既存のPytorchでは駄目っぽいのでコンパイルしてみました。
Pytorch2.0.1+torchvision0.15.2をビルド
Pytorch2.0.1→ビルド成功
torchvision0.15.2→以下のメッセージを吐いてビルド失敗
Traceback (most recent call last):
File “/home/linadm/vision-0.15.2/setup.py”, line 547, in <module>
ext_modules=get_extensions(),
File “/home/linadm/vision-0.15.2/setup.py”, line 170, in get_extensions
hipify_python.hipify(
File “/home/linadm/vision-0.15.2/venv/lib/python3.10/site-packages/torch/utils/hipify/hipify_python.py”, line 1061, in hipify
preprocess_file_and_save_result(output_directory, filepath, all_files, header_include_dirs,
File “/home/linadm/vision-0.15.2/venv/lib/python3.10/site-packages/torch/utils/hipify/hipify_python.py”, line 188, in preprocess_file_and_save_result
result = preprocessor(output_directory, filepath, all_files, header_include_dirs, stats,
File “/home/linadm/vision-0.15.2/venv/lib/python3.10/site-packages/torch/utils/hipify/hipify_python.py”, line 764, in preprocessor
if fin.readline() == HIPIFY_C_BREADCRUMB:
File “/usr/lib/python3.10/codecs.py”, line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xff in position 22: invalid start byte
どうもvenvにインストールしてあるHIP関連のpythonにもエラーが出ています。
今度はPytorch2.1.0+torchvision0.16.0でテストしてみました。
Pytorch2.1.0→ビルド成功
torchvision0.16.0→以下のメッセージを吐いてビルド失敗
Traceback (most recent call last):
File “/home/linadm/vision/setup.py”, line 561, in <module>
ext_modules=get_extensions(),
File “/home/linadm/vision/setup.py”, line 173, in get_extensions
hipify_python.hipify(
File “/home/linadm/vision/venv/lib/python3.10/site-packages/torch/utils/hipify/hipify_python.py”, line 1120, in hipify
preprocess_file_and_save_result(output_directory, filepath, all_files, header_include_dirs,
File “/home/linadm/vision/venv/lib/python3.10/site-packages/torch/utils/hipify/hipify_python.py”, line 206, in preprocess_file_and_save_result
result = preprocessor(output_directory, filepath, all_files, header_include_dirs, stats,
File “/home/linadm/vision/venv/lib/python3.10/site-packages/torch/utils/hipify/hipify_python.py”, line 797, in preprocessor
if fin.readline() == HIPIFY_C_BREADCRUMB:
File “/usr/lib/python3.10/codecs.py”, line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xff in position 22: invalid start byte
残念ながらまだバグが残っており、Pytorchやtorchvisionを正常にビルド出来ないようです。
今後、ROCm5.7が正式にロンチされたらまたスクリプトを配布したいと思います。
AMDさんはFSR3やHYPER-RXなど周辺ソフトウェア環境の整備で手が回らないのでしょうから、ROCm5.7のロンチは次のリリースでと言うことになりそうです。
気になっていた方、疑問は解消されたでしょうか?
それでは、また、何か進捗があったらお伝えします。
なお、ご自分でビルドしてみたい方は以下のユーザーさんのHPでビルドの方法を公開しています。
ユーザビルドのパッケージを公開されているgithubユーザー「evshiron」氏のページ
メモリは32GB以上無いと途中で止まります。
ビルドにはCore i7-13700Kでも40-60分程度かかりますのでその旨ご了承ください。
※1 RDNA3(RX7000シリーズ)から1SP当たりの演算器が倍増され、RDNA2と比較するとAI/ML関連の処理速度が大きく上がっていますので、ROCm(Linux版)でAI/ML関連の環境を整備されたい方は無理をしてでもRDNA3(RX7000シリーズ)を購入されることをお勧めしておきます。
※2 ROCmはノーマルの一般向けRadeonは正式にサポートされていません。Radeon Pro及びRadeon Instinct向けのソフトウェアです。絶対にノーマルRadeonで動作するという保証はありませんし、AMD側に対応する義務もないのでご注意ください。Radeon ProとRadeonは同じGPUチップを使っている関係上動作するだけです。