🐙

デスクトップPCでROCmを導入してAMD GPUでAI開発を始める方法(2025.08時点)

に公開

はじめに

AI開発といえばNVIDIA GPUが主流ですが、最近はAMD GPUでも十分実用的な開発ができるようになってきました。私自身、普段はNVIDIAとAMDの両方でAI関連の開発を行っているのですが、AMDの環境も思った以上に使えるので、その導入方法と実際に使ってみた感想をまとめてみます。

AMDのROCmで実際にできること

CUDAコードの互換実行

ROCmの大きな魅力の一つが、既存のCUDAコードをある程度そのまま動かせることです。HIPコンパイラー(hipcc)を使うことで、CUDAカーネルをHIPコードに変換して、AMD GPU上で実行できます。

PyTorchなどのメジャーなフレームワークの基本機能は、ほぼすべて問題なく動作します。特にTritonの存在が大きくて、これがあるおかげでNVIDIA・AMD両方の環境で開発を進められるようになりました。正直、Tritonを使えばほとんどのケースで困ることはないというのが実感です。

制限もある

ただし、完璧ではありません。HIPCCの互換性には限界があって、NVIDIA TensorCoreを直接使うようなコードや、Shared Memoryを極限まで最適化したようなコードは動かないことがあります。

実際に使ってみて困ったこと

一番困ったのがFlash Attentionの対応状況です。AMD InstinctやRadeonの最上位モデルでは使えるのですが、Navi32などの下位モデルではデフォルトでFlash Attentionカーネルが使えません。

とはいえ、vLLMなどのFlash Attention Triton実装を使うことで回避はできるので、完全に詰むわけではありません。

マルチGPU環境での注意点

デスクトップPCでROCmを使う際に一番気をつけたいのが、PCI Express Atomicsの対応状況です。ROCmはCPU-GPU間のメモリ管理でこの機能を使っているため、サポートされていないPCIスロットに刺すと動作しません。

最近のマザーボードのメインGPUスロットは、大抵CPU直結レーンなので問題ないのですが、マルチGPU構成にする場合は要注意です。一般的なマザーボードでは、メインスロット以外はチップセット経由になることが多く、この場合PCI Atomicsがサポートされていません。

実際に私も知らずにマザーボードを買い直す羽目になったので、マルチGPU環境を考えている方は事前に確認することをおすすめします。( PCI Express x8が2本にできるモノを探す)

Ubuntu 24.04での導入手順

ROCmはLinux環境での動作を前提に設計されているので、今回はUbuntu 24.04での導入方法を説明します。

1. 事前準備

まずはAMD ROCmの公式サイトで前提条件を確認しましょう。Ubuntuを選択して、prerequisitesの内容に従って環境を整備します。

2. ROCmのインストール

パッケージマネージャーでのインストール手順に従って、リポジトリの登録とインストールを行います。

ここで重要なのが、単純に sudo apt install rocm だけだとhip-sdkが含まれないため、hipccの恩恵を受けられません。必ず以下のようにインストールしてください:

sudo apt install rocm rocm-hip-sdk

3. 動作確認

インストール後は再起動して、ターミナルから rocm-smi と入力してGPUが認識されているか確認しましょう。

PyTorchの導入

ROCm版のPyTorchを使えば、面倒な設定なしでPyTorchが使えるようになります:

pip3 install torch torchvision --index-url https://download.pytorch.org/whl/rocm6.4

バージョン番号(6.4の部分)は、対象のROCmバージョンに合わせて変更してください。

注意点として、hipccを併用してCUDA(HIP)カーネルをPyTorchで使用する場合は、インストールされているROCmのバージョンとPyTorchのバージョンを一致させる必要があります。

まとめ

AMD GPUでのAI開発は、以前と比べて格段に環境が整ってきました。完璧ではないものの、実用的なレベルで開発ができるようになっています。特にTritonの存在が大きく、ほとんどのケースで、NVIDIA,AMD両対応な開発が行えるようになりました。

みんな、Rocmつかおうね。

P.S

AMD InstinctをデスクトップPCに入れるのはかなり難儀でした
https://youtu.be/aAIjY3tceOM

Discussion