冒頭:どんな問題が発生するか
AMD GPU(例:Radeon RX 6800、Radeon 780Mなど)を使用してPyTorchで深層学習を実行しようとすると、多くのユーザーが次のような問題に直面します。
- CUDAが認識されない:通常通り
torch.cuda.is_available()を実行するとFalseが返される - GPUが認識されない:
rocm-smiやrocminfoを実行してもGPUが表示されない - PyTorchがROCm対応ではない:pipでインストールした標準のPyTorchではAMD GPUを使用できない
- バージョン互換性の問題:ROCmのバージョンとPyTorchのバージョンが合わず、エラーが発生する
これらの問題は、PyTorchがデフォルトではNVIDIA CUDA向けにビルドされており、AMD GPUではROCmプラットフォーム用の специальные versionが必要なことが原因です。
結論:解決策
Ubuntu境下でROCm対応PyTorchをインストールするには、ROCmプラットフォームを正しくセットアップしたうえで、AMD提供の wheels ファイルを使用してPyTorchをインストールすることが重要です。公式ドキュメントではWSL Ubuntuまたは直接Ubuntuへのインストールを推奨しており、Windows直接インストールは非推奨です。
具体的な手順
ステップ1:システムの確認と準備
まず、現在のシステム情報を確認します。
# OSバージョンの確認
lsb_release -a
# カーネルバージョンの確認
uname -r
# GPUの確認(AMD GPUが認識されているか)
lspci | grep -i amd
ROCmは以下のUbuntuバージョンをサポートしています:
- Ubuntu 20.04.3 LTS(GPUサポートが最も安定)
- Ubuntu 22.04.3 LTS
ステップ2:ROCmリポジトリの追加
ROCm公式リポジトリを追加します。
# ROCmリポジトリの追加(Ubuntu 22.04の場合)
wget https://repo.radeon.com/rocm/rocm.gpg.key -O - | sudo apt-key add -
# Ubuntu 20.04の場合
# echo 'deb [arch=amd64] https://repo.radeon.com/rocm/apt/5.7/ ubuntu main' | sudo tee /etc/apt/sources.list.d/rocm.list
# Ubuntu 22.04の場合
echo 'deb [arch=amd64] https://repo.radeon.com/rocm/apt/6.1/ ubuntu main' | sudo tee /etc/apt/sources.list.d/rocm.list
# パッケージリストを更新
sudo apt update
ステップ3:ROCmのインストール
# ROCmコアパッケージのインストール
sudo apt install -y rocm-dkms rocm-dev rocm-libs
# 現在のユーザーをvideoグループに追加(重要なステップ)
sudo usermod -aG video $USER
# 再ログインまたはグループを更新
newgrp video
# 確認
groups $USER
ステップ4:ROCmの動作確認
# ROCm Sampler Informationの確認
rocm-smi
# GPU情報の確認
rocminfo | grep -A 10 "GPU"
# 環境変数の設定(~/.bashrcまたは~/.profileに追加)
echo 'export PATH=/opt/rocm/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
GPUが正しく表示されればROCmのセットアップは成功です。
ステップ5:ROCm対応PyTorchのインストール
重要:AMD公式ドキュメントによると、ROCm WHLファイルはrepo.radeon.comから入手することを推奨しています。PyTorch.orgのWHLはAMDによって十分にテストされていません。
# まず既存のPyTorchをアンインストール(ある場合)
pip uninstall torch torchvision torchaudio -y
# ROCm対応PyTorchのインストール(例:ROCm 6.1の場合)
# Ubuntu 22.04 + Python 3.10の場合
pip install --no-cache-dir torch==2.1.0+rocm5.7 torchvision==0.16.0+rocm5.7 --index-url https://repo.radeon.com/rocm/wheels/6.1/ubuntu22.04/x86_64/
# 別のバージョンが必要な場合、repo.radeon.comで、利用可能なバージョンを確認してください
ステップ6:インストール確認
# PythonでPyTorchとROCmの動作を確認
python3 -c "import torch; print(f'PyTorch version: {torch.__version__}'); print(f'CUDA available: {torch.cuda.is_available()}'); print(f'Device count: {torch.cuda.device_count()}'); print(f'Current device: {torch.cuda.current_device() if torch.cuda.is_available() else "N/A"}')"
正常に設定されていれば、CUDA availableがTrueとなり、GPU情報が返回されます。
ステップ7:簡単な動作テスト
python3 << 'EOF'
import torch
# GPUが利用可能な場合
if torch.cuda.is_available():
device = torch.device("cuda")
print(f"Using device: {torch.cuda.get_device_name(0)}")
# 簡単な計算テスト
x = torch.randn(1000, 1000).to(device)
y = torch.randn(1000, 1000).to(device)
z = torch.matmul(x, y)
print(f"Matrix multiplication successful!")
print(f"Result shape: {z.shape}")
else:
print("CUDA is not available. Please check your ROCm installation.")
EOF
補足・注意点
バージョン互換性
- ROCmバージョンとPyTorchバージョンの対応:異なるROCmバージョンに対して適切なPyTorchバージョンが必要です。例えば、ROCm 5.7とROCm 6.1では異なるPyTorch wheelsが必要です。
- Pythonバージョン:Python 3.8〜3.11が動作確認されています。
- GPUアーキテクチャ:RDNA2(RX 6000シリーズ)、RDNA3(RX 7000シリーズ)などの新しいGPUでは、比較的新しいROCmバージョンが必要です。
Windowsユーザーの場合
WindowsでROCmを使用する場合、AMD公式ではWSL2(Ubuntu)を使用することを強く推奨しています。Windowsに直接ROCmをインストールするのは推奨されず、コミュニティハックが必要な場合があります(参考情報②)。
よく飛ぶ落とし穴
- videoグループへの追加を忘れる:これが最も多い原因です。必ず
sudo usermod -aG video $USERを実行してください。 - 再起動的重要性:ROCmインストール後はシステム再起動が推奨されます。
- 的环境変数:
PATHとROCm_PATH(またはROCM_PATH)環境変数を正しく設定してください。 - PyTorch.orgのではなくAMDリポジトリから:インストール失敗の多くは、PyTorch.orgの非公式 wheels を使用导致的ことです。
ソースからのビルド
特定のGPUアーキテクチャや最新機能が必要な場合は、ソースからPyTorchをビルドすることも検討してください(参考情報①)。これは時間がかかりますが、カスタマイズ性が高いです。
# ソースビルドが必要な場合(注意:非常に時間ががかかります)
git clone --recursive https://github.com/ROCm/pytorch.git
cd pytorch
export ROCM_HOME=/opt/rocm
export PYTORCH_ROCM_ARCH=gfx1030 # GPUアーキテクチャ指定
python3 setup.py install
参考元
- PyTorch on ROCm installation — ROCm installation (Linux)
- PyTorch via PIP installation — Use ROCm on Radeon and Ryzen
- Install PyTorch for ROCm — Use ROCm on Radeon and Ryzen
- PyTorch for AMD ROCm™ Platform now available as Python package – PyTorch