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環境: デスクトップ利用
  • 最高性能: パフォーマンス最優先
  • 幅広いフレームワーク: ライブラリ多様性

関連用語