
私はメインのサーバー機として「Minisforum UM870 Slim」を使用してきましたが、これまで内蔵GPUのリソースをほとんど活用できていませんでした。せっかくAMD Ryzen 8000シリーズのRadeon 780M(内蔵GPU)が搭載されているのに、これはもったいない。
そこで、ROCmを使ってPyTorchベースのモデルを含め、GPU推論を活用できないか試してみることにしました。
音声の文字起こしツールとして有名なWhisperは、通常NVIDIA GPUでの利用が主流です。しかし、AMD内蔵GPUでもROCmを活用すれば高速な文字起こしが可能なはず。
今回は、Ubuntu Server 24.04上でROCm 6.4.1とwhisper.cppを組み合わせ、AMD内蔵GPUを使った文字起こし環境の構築に挑戦してみました。
環境情報
項目 | -- |
|---|---|
製品 | Minisforum UM870 Slim |
OS | Ubuntu Server 24.04 |
CPU | AMD Ryzen 7 8745H (16スレッド) |
GPU | AMD Radeon 780M (Phoenix3 iGPU, gfx1103) |
RAM | 32GB |
ROCm | 6.4.1 |
なぜwhisper.cppなのか
OpenAIのWhisperには複数の実装がありますが、whisper.cppを選んだ理由は以下の通りです:
- 軽量: C++実装で依存関係が少ない
- 高速: 量子化モデルに対応し、メモリ効率が良い
- 柔軟: コマンドラインで手軽に使える
セットアップ手順
1. ROCmリポジトリの追加
# ROCmリポジトリを追加
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/rocm-archive-keyring.gpg] https://repo.radeon.com/rocm/apt/6.4.1 noble main" | sudo tee /etc/apt/sources.list.d/rocm.list
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/rocm-archive-keyring.gpg] https://repo.radeon.com/amdgpu/6.4.1/ubuntu noble main" | sudo tee /etc/apt/sources.list.d/amdgpu.list
sudo apt update
sudo apt upgrade2. ROCm関連パッケージのインストール
# 基本パッケージ
sudo apt install -y rocm-core rocm-hip-runtime rocminfo
# 開発ツール
sudo apt install -y hip-dev rocm-dev hipblas-dev rocblas-dev
# ビルドツール
sudo apt install -y cmake build-essential ffmpeg3. 環境変数の設定
Radeon 780Mはgfx1103アーキテクチャですが、ROCmではgfx1100として扱う必要があります。
# クローン
git clone https://github.com/ggerganov/whisper.cpp
cd whisper.cpp
# HIP/ROCmを有効にしてビルド
export CMAKE_PREFIX_PATH=/opt/rocm
cmake -B build -DGGML_HIP=ON
cmake --build build --config Release -j$(nproc)5. モデルのダウンロード
# 量子化版mediumモデル(推奨)
curl -L -o models/ggml-medium-q5_0.bin \
https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-medium-q5_0.bin
# その他のモデル
bash ./models/download-ggml-model.sh small
bash ./models/download-ggml-model.sh large使い方
基本的な使用例
# 基本的な文字起こし
./build/bin/whisper-cli -m models/ggml-medium-q5_0.bin -f input.mp3 -l ja
# SRT字幕形式で出力
./build/bin/whisper-cli -m models/ggml-medium-q5_0.bin -f input.mp3 -l ja -osrt
# JSON形式で出力
./build/bin/whisper-cli -m models/ggml-medium-q5_0.bin -f input.mp3 -l ja -oj
# 出力先を指定
./build/bin/whisper-cli -m models/ggml-medium-q5_0.bin -f input.mp3 -l ja -oj -of ./output/resultよく使うオプション
-l ja: 日本語として処理-osrt: SRT字幕形式で出力-oj: JSON形式で出力-of <path>: 出力ファイルのパスを指定-t <threads>: CPU使用スレッド数を指定
トラブルシューティング
GPU Hangエラーが発生する場合
非量子化モデルを使用していませんか? 内蔵GPUでは量子化版(q5_0, q8_0など)の使用を強く推奨します。
量子化モデルとは?
量子化(Quantization)は、モデルの重みパラメータを低精度(例: 32bit → 5bit)に変換する技術です。これにより以下のメリットがあります:
- メモリ使用量の削減: mediumモデルの場合、約1.5GB → 約500MBに削減
- 推論速度の向上: メモリ帯域幅の負荷が減り高速化
- GPU Hangの回避: 内蔵GPUの限られたVRAMでも動作可能
量子化モデルの種類
モデル名 | ビット数 | サイズ目安 | 精度 | 推奨用途 |
|---|---|---|---|---|
ggml-medium.bin | 32bit(FP32) | ~1.5GB | 最高 | 専用GPU向け ⚠️内蔵GPUでは非推奨 |
ggml-medium-q8_0.bin | 8bit | ~900MB | 高 | バランス重視 |
ggml-medium-q5_0.bin | 5bit | ~500MB | 中〜高 | 内蔵GPU推奨 ✅ |
ggml-medium-q4_0.bin | 4bit | ~400MB | 中 | メモリ制約が厳しい場合 |
なぜ内蔵GPUで量子化が必要なのか
Radeon 780Mは共有メモリ(システムRAMの一部を使用)のため、専用GPUと比べてメモリ管理が異なります。今回の環境では32GBのRAMを搭載していましたが、それでも非量子化のmediumモデル(1.5GB)でGPU Hangエラーが発生しました。
これは単純なメモリ不足ではなく、以下の要因が考えられます:
- 内蔵GPUのメモリ帯域幅の制約: 共有メモリアクセスは専用GPUのGDDRメモリより遅い
- ROCmドライバーの最適化: 内蔵GPU向けの大規模モデル処理が完全には最適化されていない
- gfx1103アーキテクチャの制限:
HSA_OVERRIDE_GFX_VERSIONで11.0.0としてエミュレートしているため
実際の経験では、32GBのRAMがありながら非量子化モデルで「GPU Hang」エラーが発生しましたが、q5_0モデル(約500MB)に切り替えたところ安定して動作しました。これは、モデルサイズが小さくなることで、メモリ帯域幅への負荷とGPU処理の複雑さが軽減されたためと考えています。
精度への影響
q5_0モデルでも、実用上は十分な精度が得られます。日本語の文字起こしにおいて、ほとんどのケースで品質の差は感じられませんでした。どうしても最高精度が必要な場合は、largeモデルのq5_0版を検討してください。
GPUが認識されない場合
# GPU認識確認
rocminfo | grep -E "Name|gfx"
# 環境変数を確認
echo $HSA_OVERRIDE_GFX_VERSION # 11.0.0 になっているかビルドエラーが発生する場合
# ROCmのバージョン確認
apt show rocm-core | grep Version
# HIP_PATHが正しく設定されているか確認
echo $HIP_PATH # /opt/rocm になっているか動作確認コマンド集
# ROCmバージョン確認
apt show rocm-core | grep Version
# GPU認識確認
rocminfo | grep -E "Name|gfx"
# PyTorchでGPU認識確認(PyTorchインストール済みの場合)
python3 -c "import torch; print(torch.cuda.is_available())"まとめ
AMD Ryzen 8000シリーズの内蔵GPU(Radeon 780M)でも、適切な設定と量子化モデルを使用することで、十分実用的な速度での文字起こしが可能でした。
ポイントは以下の3点です:
HSA_OVERRIDE_GFX_VERSION=11.0.0 の設定が必須- 量子化モデル(q5_0など)を使用する
- ROCm 6.4.1との組み合わせで安定動作
NVIDIA GPUを持っていなくても、最新のAMD CPUがあれば高速な文字起こし環境が手に入ります。ぜひ試してみてください。