なぜ今、AMD GPUでローカルLLMなのか?コストと可用性の現実解
「NVIDIAのGPUが手に入らない、あるいは予算オーバーだ」
ここ数年、多くのAI開発現場でこのような声を聞くようになりました。データセンター向けの高性能GPUは依然として調達のハードルが高く、一般向けのハイエンドモデルでさえ、生成AIブームや為替の影響で価格が高騰しています。しかし、これを単なる「リソース不足」と嘆くのではなく、論理的に代替案を検証し、最適な解決策を探ることが重要です。
そこで現実的な選択肢として浮上するのが、AMD製GPU(Radeon RXシリーズやInstinct MIシリーズ)と、それを動かすためのソフトウェア基盤であるROCm(Radeon Open Compute)の活用です。
NVIDIA GPU不足と価格高騰への対抗策
かつて、AI開発といえば「NVIDIA一択」という認識が一般的でした。NVIDIAの提供する開発環境(CUDA)が非常に使いやすかったためです。しかし、現在その状況は大きく変わりつつあります。AMDはAI専用の強力なチップ(Instinct MI300Xなど)を展開し、継続的な技術投資を行っています。実証データとしても、文章生成の速度(推論スループット)など特定の処理において、競合製品に匹敵、あるいはそれを上回るパフォーマンスを示すケースが報告されています。
開発現場にとって特に注目すべきは、24GBのメモリ(VRAM)を搭載したハイエンドモデル「Radeon RX 7900 XTX」が、同等クラスの競合製品よりも比較的安価に入手できるという事実です。VRAM 24GBという容量は、数十億パラメータ規模のLLM(大規模言語モデル)をローカル環境で動かすための重要な基準となります。この貴重な計算資源をコストを抑えて確保できるのであれば、仮説検証(PoC)の段階から積極的に検討する価値があります。
ROCm(Radeon Open Compute)の進化と現状
「でも、AMDの環境(ROCm)は設定が難しくて動かないのでは?」と疑問に思う方もいるかもしれません。
しかし、ROCmの最新バージョン(6系以降)では、安定性が飛躍的に向上しています。特にLinux(Ubuntu)環境での動作はすでに実用段階にあり、日常的なAIモデルの検証に十分活用できます。
ROCmは、NVIDIAのCUDAに相当する、AMDのオープンソース開発基盤です。現在では、PyTorchやTensorFlowといった主要なAI開発ツールがROCmを標準でサポートしています。公式のDockerコンテナ(仮想環境)を使ったり、簡単なインストールコマンドを実行したりするだけで、以前のような複雑な作業なしに環境が整うケースが増えました。
もちろん、すべてが全自動で動くわけではなく、環境構築には論理的なトラブルシューティングのスキルが求められます。しかし、ハードウェアコストを最適化しつつ高度なAI開発環境を構築できれば、プロジェクトの効率化と競争力の向上に直結します。
【導入前診断】あなたのGPUは本当に動くのか?動作保証要件の完全理解
AI環境の構築で最もつまずきやすいのは、「ハードウェアとソフトウェアの不整合」という初期設定のミスです。やみくもにコマンドを打ち込む前に、手元のGPUがシステム上でどのように認識されるべきか、論理的に理解しておくことが成功への近道です。
公式サポート(Instinct/Radeon Pro)と民生機(RXシリーズ)の壁
AMDの公式ドキュメントを確認すると、サポート対象のGPUリストには主にデータセンター向けの業務機が並んでいます。一般向けのRadeon RX 6000/7000シリーズは、公式サポート外、あるいは限定的なサポートにとどまっているのが現状です。
しかし、適切な設定を行えば動作させることは十分に可能です。ここで鍵となるのが、GPUのアーキテクチャを識別するGFX ID(Target ID)という概念です。
GPUアーキテクチャ(RDNA 2/3 vs CDNA)の確認方法
ROCmは、GPUの設計(アーキテクチャ)ごとに最適化されたプログラムを使用します。この設計の種類を示すコードがGFX IDです。
- gfx90a: Instinct MI200シリーズ(データセンター向け)
- gfx1100: Radeon RX 7900 XTX/XTなど(最新の一般向け)
- gfx1030: Radeon RX 6800/6900 XTなど(一世代前の一般向け)
手持ちのGPUがどのGFX IDに対応しているかは、以下のコマンドやGPUの仕様書で確認できます。
# 既にドライバが入っている場合の確認例
/opt/rocm/bin/rocminfo | grep "Name:"
AI開発ツールのPyTorchなどが、お使いのGPUのGFX IDに対応していないとエラーが発生します。一般向けのRadeon RXを使用する場合、このIDの不一致がよく問題になりますが、後述する設定の工夫(環境変数の調整)で論理的に回避できます。
OSバージョンとLinuxカーネルの厳密な依存関係
次に確認すべきはOS(オペレーティングシステム)です。Windows環境も進化していますが、本格的なLLM開発や推論速度の最適化を行うなら、Ubuntu Linuxを直接インストールした環境が最も確実です。実証データに基づくと、現在はUbuntu 22.04 LTSが非常に安定しています。
ここで注意したいのが、OSの中核である「Linuxカーネル」のバージョンです。ROCmのドライバはカーネルと密接に連携して動作するため、特定のバージョンに依存します。新しすぎるカーネルでは、ドライバの組み込みに失敗することがあります。
- 推奨: Ubuntu 22.04.x LTS (Kernel 5.15 または 6.5系)
システム開発において「最新バージョンが常に最良」とは限りません。安定して動作する組み合わせを見つけたら、そのバージョンを固定して運用することが、効率的なシステム管理の基本です。
ステップ1:クリーンな土台を作るOS・カーネル設定
ここからは、具体的な構築手順を解説します。まずは、不要な古い設定を整理し、クリーンな土台を作るところから始めましょう。
既存ドライバの完全削除とクリーンアップ
過去に別のGPUドライバをインストールしたことがある場合は、それらを完全に削除してください。古いファイルが残っていると、新しいシステムと衝突して予期せぬエラーを引き起こす原因になります。
# 既存のAMDドライバを削除(もしあれば)
amdgpu-uninstall
# 不要なパッケージの削除
sudo apt autoremove
推奨されるUbuntuバージョンとカーネルの固定
Ubuntuは初期設定でシステムの自動更新が有効になっています。これにより、気づかないうちにカーネルがアップデートされ、突然GPUが動かなくなるというトラブルがよく発生します。これを防ぐため、カーネルのバージョンを意図的に固定します。
# 現在のカーネルバージョンを確認
uname -r
# カーネルの更新を保留にする(例:5.15.0-xx-genericの場合)
sudo apt-mark hold linux-image-generic linux-headers-generic
この論理的な予防策が、システムの長期的な安定稼働を支えます。
ユーザー権限とグループ設定(render/videoグループ)
Linux環境では、GPUというハードウェアにアクセスするための「権限」を正しく設定する必要があります。管理者権限(sudo)なしで安全にGPUを利用できるように、現在のユーザーを特定のグループ(renderとvideo)に追加します。
sudo usermod -aG render $USER
sudo usermod -aG video $USER
設定後は、必ず一度ログアウトして再ログイン(またはPCを再起動)し、変更をシステムに反映させてください。この手順を飛ばすと、後でAIモデルを動かそうとした際に「アクセス権限がありません」というエラーが出てしまいます。
ステップ2:ROCmドライバとライブラリの正しいインストール手順
土台が整ったら、いよいよROCm本体をインストールします。ここでは、安定性が確認されているUbuntu 22.04環境に、ROCm 6.0系を導入する手順を解説します。
パッケージリポジトリの適切な追加手順
ソフトウェアのインストールには、必要な関連ファイルを自動で揃えてくれるパッケージマネージャ(apt)を使用するのが最も確実で安全なアプローチです。
まず、AMDの公式サーバーからソフトウェアをダウンロードするための設定(リポジトリの追加)を行います。ここで重要なポイントは、インストールしたいROCmのバージョンをURLで明確に指定することです。これにより、予期せぬバージョンの混入を防ぎます。
# 必要なツールのインストール
sudo apt update && sudo apt install -y wget gnupg2
# キーリングの追加(例)
wget -q -O - https://repo.radeon.com/rocm/rocm.gpg.key | sudo apt-key add -
# リポジトリの追加(ROCm 6.0.2の例)
echo 'deb [arch=amd64] https://repo.radeon.com/rocm/apt/6.0.2/ jammy main' | sudo tee /etc/apt/sources.list.d/rocm.list
echo 'deb [arch=amd64] https://repo.radeon.com/amdgpu/6.0.2/ubuntu/ jammy main' | sudo tee /etc/apt/sources.list.d/amdgpu.list
sudo apt update
ユースケース別インストール(amdgpu-dkms vs rocm-hip-sdk)
ROCmには多数のソフトウェアが含まれていますが、LLMを動かす目的であれば、すべてをインストールする必要はありません。効率化の観点から、以下の2つのコアコンポーネントに絞ります。
- amdgpu-dkms: GPUをOSに正しく認識させるための、根本となるドライバです。
- rocm-hip-sdk: PyTorchなどのAIフレームワークがGPUの計算能力を引き出すために必要なライブラリ群です。
# カーネルドライバとSDKをインストール
sudo apt install amdgpu-dkms rocm-hip-sdk
インストール中に、システムに合わせたドライバの最適化(ビルド)が自動で行われます。ここでエラーが出なければ、OSとの整合性は完璧です。完了後は、設定を反映させるために必ずPCを再起動してください。
環境変数(PATH, LD_LIBRARY_PATH)の永続化設定
ソフトウェアをインストールしただけでは、OSは「どこにそのプログラムがあるのか」を認識していません。そのため、プログラムの場所を教えてあげる設定(パスを通す作業)が必要です。
設定ファイル(.bashrc または .zshrc)に以下の2行を追記します。
export PATH=$PATH:/opt/rocm/bin:/opt/rocm/llvm/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/lib
この設定を忘れると、後でAIモデルを動かす際に「必要なファイルが見つかりません」というエラーが出てしまうため、確実に実行しましょう。
ステップ3:PyTorch連携と「民生機GPU」特有のハック
ここからが実践的なアプローチの見せ所です。公式サポート外である一般向けのRadeon RXシリーズを、システム上でサポート対象のGPUであるかのように認識させて動かす手法を解説します。
ROCm対応PyTorchのインストールとバージョン整合性
AI開発の標準ツールであるPyTorchは、NVIDIA向け(CUDA版)とは別に、AMD向け(ROCm版)のプログラムを提供しています。公式サイトの導入ガイドに従い、ROCm対応版を指定してインストールします。
# 例:PyTorch Nightly or Stable (ROCm 6.0対応版)
pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/rocm6.0
単に pip install torch と入力すると、誤ってNVIDIA向けのバージョンがインストールされてしまうことがあるため、必ず --index-url を使ってROCm専用のダウンロード元を明示してください。
公式サポート外GPUを動かす「HSA_OVERRIDE_GFX_VERSION」
一般向けのRadeon RX 6000/7000シリーズを使用する場合、「PyTorchがGPUを認識しない」「計算中に突然エラーで終了する」といった問題によく直面します。これは、PyTorchが想定しているGPUのID(GFX ID)と、実際のGPUのIDが一致していないことが原因です。
この不整合を解決するために、HSA_OVERRIDE_GFX_VERSION という環境変数を使用します。これは、GPUがシステムに対して「私はサポート対象のモデルです」とIDを偽装して伝えるための、実践的なハック(工夫)です。
設定例:
- RDNA 3 (RX 7000系) の場合: 多くの場合
11.0.0と互換性があります。export HSA_OVERRIDE_GFX_VERSION=11.0.0 - RDNA 2 (RX 6000系) の場合:
10.3.0が安定して動作する傾向にあります。export HSA_OVERRIDE_GFX_VERSION=10.3.0
この設定を行うことで、公式サポート外のGPUでもLLMの処理が可能になります。この変数を設定した状態で、Pythonのプログラムを実行してください。
torch.cuda.is_available() での最終確認
すべての設定が正しく完了していれば、PyTorchがGPUを認識できるようになっています。興味深い点として、AMDのROCm環境であっても、プログラム上はNVIDIAと同じ cuda という名称を使用して操作します。
import torch
print(torch.cuda.is_available()) # Trueと表示されれば成功です
print(torch.cuda.get_device_name(0)) # 認識されたGPUの名前が表示されます
# 簡単な計算テスト
a = torch.tensor([1.0, 2.0]).cuda()
b = torch.tensor([3.0, 4.0]).cuda()
print(a + b)
この簡単な計算テストがエラーなく実行できれば、LLMの推論やファインチューニングに進む準備は万端です。
よくあるエラーとトラブルシューティング集
最後に、環境構築時によく発生するエラーとその論理的な対処法を解説します。エラーメッセージは、問題を解決するための重要なデータです。
「HSA_STATUS_ERROR_...」が出た時の対処フロー
HSA_STATUS_ERROR_GRAPHICS_RESOURCE_ERR などのエラーが表示された場合、GPUとシステム(ドライバ)の間で通信がうまくできていないことを意味します。以下の仮説に基づいて検証を行ってください。
- GFX IDの確認: 先ほど設定した
HSA_OVERRIDE_GFX_VERSIONの値が適切か見直します。GPUの世代に合わせて値を微調整する検証が必要な場合もあります。 - 権限の確認: 現在のユーザーが正しく
renderグループに追加されているか、再度確認します。 - システムの再起動: ドライバが一時的にフリーズしている可能性があるため、PCを再起動して状態をリセットします。
VRAM不足時の挙動とメモリ管理
巨大なLLMを読み込む際、GPUのメモリ(VRAM)が足りずにプログラムが強制終了されることがあります。ROCm環境では、VRAMが足りない時にパソコン本体のメモリ(RAM)を代用する機能が不安定になる傾向があります。
原因を特定するために、dmesg コマンドでシステムログを確認し、「Out of memory(メモリ不足)」のエラーが出ていないかチェックしましょう。もしVRAMが不足している場合は、モデルの精度を保ちながらサイズを圧縮する「量子化技術(4bit化など)」を活用するのが、最も効率的で現実的な解決策です。
Dockerコンテナ利用時のデバイスパススルー設定
環境を汚さずに開発を進めるために、Docker(仮想コンテナ技術)を利用するのも優れたアプローチです。ROCm公式のDocker環境を使う場合、仮想環境の中から物理的なGPUにアクセスできるようにする設定(デバイスパススルー)が必要です。
docker run -it --network=host --device=/dev/kfd --device=/dev/dri --group-add=video --ipc=host --cap-add=SYS_PTRACE --security-opt seccomp=unconfined rocm/pytorch:latest
ここで指定している --device=/dev/kfd と --device=/dev/dri は必須のオプションです。これを忘れると、コンテナ内部からGPUを認識できなくなります。
まとめ
AMD GPUを活用したAI開発は、ROCmというソフトウェア基盤の成熟により、非常に実用的でコストパフォーマンスの高い選択肢へと進化しました。特定のハードウェアの入手難を嘆くのではなく、論理的なアプローチで手元のリソースを最大限に活用し、効率的な解決策を見出すことが重要です。
今回解説した環境構築の手順は、AI開発の第一歩です。生成AIやTransformerモデルの技術は日々進化しており、ソフトウェアのアップデートによって最適な設定方法も常に変化していきます。実証データに基づいた検証を続けながら、最適なAIシステムを構築していきましょう。
コメント