ビデオカード RADEON を複数台使ってローカル LLM を動かす

GeForce だけでなく RADEON でもビデオカードを複数台使ってローカル LLM を走らせてみました。自分だけの Chat AI として使えますし、もちろんパラメータ数が同じなら蒸留版 DeepSeek R1 も動きます。

インストール手順

RADEON Vega 64/56 は VM への GPU パススルーができないこともあり、PC には Linux を直接インストールしています。

  1. RADEON を複数枚差した PC に Ubuntu 24.04 をネイティブインストール
    • 通常の Desktop 版を最小インストール
  2. ログインして OS の更新
    • sudo apt update; sudo apt upgrade -y
  3. ollama Linux 版インストーラーを公式の手順に従い実行
    • curl -fsSL https://ollama.com/install.sh | sh
  4. テストするためののモデルのダウンロード
    • ollama pull llama3.3:70b
    • ollama pull qwen2.5:32b
    • ollama pull gemma2:27b
    • ollama pull phi4:14b
    • ollama pull gemma2:9b
    • ollama pull gemma2:2b
  5. 実行
    • 例: ollama run gemma2:27b

特にドライバなどのインストールは不要で、ollama のインストールだけで GPU が認識されます。ただし使用可能な GPU は GCN の場合 Vega 56/64 以降、RDNA2 の場合は RX6800 以上、RDNA3 は RX7600 以上となります。APU は含まれません。

RADEON の推論速度の比較 (27b)

以下は gemma2 27b の結果です。token/s の数値が大きいほど高速に出力できることを意味しています。VRAM 8GB でもビデオカード 3枚使うことで GPU が 100%、14.55 token/s と CPU の 5.7倍の速度で実行できるようになりました。

VRAM合計GPU / CPU必要RAMGPUの割合token/s
なしRyzen 9 3950X18GB0%2.54
8GBRyzen 9 3950X
RX 7600
18GB45%3.52
8GBRyzen 7 9700XX
RX Vega 64
18GB45%4.36
16GB (2台)Ryzen 9 3950X
RX 7600
RX Vega 64
21GB78%6.00
16GB (2台)Ryzen 7 9700X
RX Vega 64
RX Vega 56
21GB79%7.45
24GB (3台)Ryzen 9 3950X
RX 7600
RX Vega 64
RX Vega 56
23GB100%14.55
gemma2 27b の推論速度

RADEON RX7600 (RDNA3) と Vega 64/56 (GCN5) の組み合わせでもきちんと動作しています。GeForce と同じように、異なる世代の混在でも複数の GPU を認識し、マルチ GPU のローカル LLM 推論に使えることがわかりました。

マザーボード上には PCIe x16 スロットが 2つしか無いので、ビデオカードの 3枚目は外部接続です。SSD 用の M.2 スロットに OCulink 変換カードを差し込み、OCulink ケーブル経由で MINISFORUM の DEG1 に接続しています。

RADEON の推論速度の比較 (14b)

14b の結果です。こちらは 8GB のビデオカード 2枚で VRAM に載っています。

VRAM合計GPU / CPU必要RAMGPUの割合token/s
なしRyzen 9 3950X18GB0%4.63
8GBRyzen 9 3950X
RX 7600
10GB82%11.43
8GBRyzen 7 9700XX
RX Vega 64
18GB82%13.97
16GB (2台)Ryzen 9 3950X
RX 7600
RX Vega 64
14GB100%18.00
16GB (2台)Ryzen 7 9700X
RX Vega 64
RX Vega 56
14GB100%22.71
phi4 14b の推論速度

テスト時の PC が異なるので公平な比較とは言えませんが、Vega 64/56 は古い GPU ながらメモリが高速なので RX7600 よりも LLM の推論速度が速いようです。以下は今回使用した GPU のスペックです。

GPUArchspfp32 GflopsVRAMmem b/w
RX 7600RDNA32048 sp217508GB288 GB/s
RX 6400RDNA2768 sp35654GB128 GB/s
RX Vega 64GCN54096 sp126658GB484 GB/s
RX Vega 56GCN53584 sp105448GB410 GB/s

より多くのモデルの結果及び GeForce 含めた結果は以下のページにまとめています。

RADEON RX 6400 (6500XT) でも LLM を使えるようにする

RADEON RX 6400 は RDNA2 世代の下位グレードの GPU です。VRAM 4GB に 12CU 768sp と性能もかなり控えめで、APU 内蔵の GPU に近いスペックです。そのかわり補助電源不要で Low Profile PCI 版のビデオカードも存在します。

公式でも ROCm には非対応ですが、ollama のドキュメントには対応方法が書いてあるので試してみました。なおドキュメント(以下のリンク)には 2025/02/15 現在 RX 5400 と書かれていますが、gfx1034 のことを差しているので RX 6400 (または 6500XT) の間違いだと思われます。

方法: ollama の環境変数 HSA_OVERRIDE_GFX_VERSION に “10.3.0” を設定します。

  1. sudo systemctl edit ollama.service
    • 使用するエディタを指定したい場合は以下のようにする
    • sudo EDITOR=vi systemctl edit ollama.service
  2. エディタが起動したら 3行目からの空行に以下の 2行を挿入する
    • [Service]
    • Environment=”HSA_OVERRIDE_GFX_VERSION=10.3.0″
  3. 保存して終了したら以下のコマンドを実行する
    • sudo systemctl daemon-reload
    • sudo systemctl restart ollama

この設定で RX 6400 でも GPU を使って走らせることができるようになりました。VRAM が 4GB しかないので限界はありますが、小さいモデル限定なら CPU よりは速度が出ています。ただし VRAM 容量や速度を考えると使用できるのは 7b くらいまでになるかと思います。

また同じ世代の GPU 同士に限りますが RX 6400 を複数台使用した場合でもきちんと動作しました。ドキュメントには “HSA_OVERRIDE_GFX_VERSION_番号=10.3.0” のように、環境変数名にデバイス番号を指定することで異なる世代の RADEON を組み合わせられるように記載されていますが、残念ながらうまく動きませんでした。

RX 6400 による推論時間は以下のとおりです。2枚使用した場合と CPU のみの結果も載せています。

model RX6400 x2 (合計 8GB)
token/s
RX6400 (4GB)
Token/s
CPUのみ
Token/s
llama3.3:70b1.05 (16%)1.03 (8%)1.01
qwen2.5:32b2.42 (34%)2.29 (17%)2.16
gemma2:27b2.87 (38%)2.70 (21%)2.54
phi4:14b6.94 (72%)5.60 (39%)4.63
gemma2:9b11.70 (85%)8.52 (51%)6.94
qwen2.5:7b18.52 (100%)13.05 (69%)9.27
gemma2:2b40.60 (100%)46.33 (100%)19.73
RADEON RX 6400 を使った各種モデルの推論時間の比較

関連ページ