ROCm
概要
ROCm
(Radeon Open Compute)は、AMD GPU
でローカルLLM運用を可能にするオープンソースのGPUコンピューティングプラットフォームです。NVIDIA CUDA
の代替として、PyTorch、TensorFlowでのAI推論処理をサポートします。
HIP(Heterogeneous-Compute Interface for Portability)により、CUDAコードをAMD GPUで実行可能にし、コストパフォーマンスに優れたAI環境を提供します。
ROCmの特徴
オープンソース
- MIT/Apache 2.0ライセンス: 商用利用可能
- ソースコード公開: 完全に透明な開発
- コミュニティ開発: 開発者による改善
- ベンダーロックイン回避: オープンな選択肢
CUDA互換性
- HIP API: CUDAコードの移植
- hipify-perl: 自動変換ツール
- PyTorch対応: 公式ROCm版
- TensorFlow対応: ROCm最適化版
インストールと設定
Ubuntu 22.04でのセットアップ
# ROCm リポジトリ追加
wget https://repo.radeon.com/amdgpu-install/latest/ubuntu/jammy/amdgpu-install_latest.deb
sudo dpkg -i amdgpu-install_latest.deb
# ROCm インストール
sudo apt update
sudo apt install amdgpu-dkms rocm
# ユーザーをgroupに追加
sudo usermod -a -G render,video $USER
# 再起動後、ROCm確認
rocm-smi
rocminfo
PyTorch ROCm版
# PyTorch ROCm版インストール
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.6
# ROCm利用確認
python3 -c "
import torch
print(f'CUDA (ROCm) available: {torch.cuda.is_available()}')
print(f'Device count: {torch.cuda.device_count()}')
if torch.cuda.is_available():
print(f'Device name: {torch.cuda.get_device_name()}')
"
ローカルLLMでの使用例
Transformersライブラリ
# ROCmでのLLM推論
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# AMD GPU利用設定
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
print(f"Using device: {device}")
# モデル読み込み
model = AutoModelForCausalLM.from_pretrained(
"microsoft/DialoGPT-large",
torch_dtype=torch.float16,
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("microsoft/DialoGPT-large")
# 推論実行
inputs = tokenizer.encode("Hello, how are you?", return_tensors="pt").to(device)
outputs = model.generate(inputs, max_length=50, do_sample=True)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)
llama.cpp(ROCm対応)
# llama.cpp ROCm版ビルド
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
# ROCm有効でコンパイル
make LLAMA_HIPBLAS=1
# AMD GPUで実行
./main -m models/llama-2-7b-chat.q4_0.gguf \
-p "User: What is machine learning?" \
-ngl 35 \ # GPU層数指定
-c 2048
対応AMD GPU
推奨GPU(gfx90a/gfx940系)
- MI250X: データセンター、128GB HBM2e
- MI210: ワークステーション、64GB HBM2e
- MI100: エントリー、32GB HBM2
コンシューマーGPU(実験的対応)
- RX 7900 XTX: 24GB、コスパ重視
- RX 7900 XT: 20GB、ミドルハイ
- RX 6900 XT: 16GB、前世代
パフォーマンス最適化
環境変数設定
# ~/.bashrcに追加
export ROCM_PATH=/opt/rocm
export HIP_VISIBLE_DEVICES=0
export HSA_OVERRIDE_GFX_VERSION=10.3.0 # 互換性向上
# PyTorch最適化
export PYTORCH_ROCM_ARCH=gfx1030 # GPU世代指定
export HIP_LAUNCH_BLOCKING=0 # 非同期実行
メモリ最適化
- Mixed Precision: FP16使用で高速化
- Gradient Checkpointing: メモリ使用量削減
- Model Parallel: 大規模モデル対応
- Dynamic Batching: 効率的なバッチ処理
制限事項と課題
技術的制約
- Linux限定: Windows公式未対応
- ドライバ依存: 適切なカーネルバージョン必要
- 最適化レベル: CUDA比で劣る場合あり
- フレームワーク対応: 一部ライブラリで制限
パフォーマンス比較
- NVIDIA CUDA: 100%(基準)
- AMD ROCm: 70-85%(モデル・処理依存)
- 最適化後ROCm: 80-95%(適切な設定時)
実用的な選択指針
ROCm推奨ケース
- コスト重視: AMD GPUの価格優位性
- Linux環境: サーバー・開発環境
- オープンソース志向: ベンダーロックイン回避
- 実験・研究用途: 個人プロジェクト
CUDA推奨ケース
- 商用運用: 安定性・サポート重視
- Windows環境: デスクトップ利用
- 最高性能: パフォーマンス最優先
- 幅広いフレームワーク: ライブラリ多様性