ai」タグアーカイブ

ビデオカード 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 を使った各種モデルの推論時間の比較

関連ページ

普通の PC に GPU 5枚繋いで Llama 70b を動かしてみる

最近は一般の PC でも LLM (Large Language Model) を走らせることができるようになっています。いわゆる ChatGPU のローカル版で、自分の PC 上で動くため API 利用料金などを気にせずに使うことが可能です。ただし動作可能な LLM の規模はビデオカードの VRAM 容量に依存します。

Ollama は複数の GPU に対応しており、前回 VRAM 8GB の GeForce GTX でも十分戦力になることがわかったので更にいろいろと台数をやしてみました。

結果、llama 70b のモデルを GPU 上で走らせるために必要だったビデオカードは 5台で合計 VRAM は 56GB、最終的な速度は 4 tps。CPU よりは数倍速いですが、少々実用には厳しいようです。

使用したビデオカードは以下の通りです。

70b の生成速度のまとめ

ビデオカードの種類や枚数毎の llama 70b の生成速度の違いを表にまとめました。下に行くほどビデオカードの台数が増えています。

VRAM合計GPU / CPU必要RAMCPUの割合GPUの割合token/s
なしRyzen 7 9700X46GB100%1.02
8GBRyzen 7 9700X
GTX 1080
47GB83%17%1.32
8GBRyzen 7 9700X
RX Vega 64
47GB83%17%1.34
16GB (2台)Ryzen 7 9700X
GTX 1080
GTX 1070
48GB67%33%1.45
16GB (2台)Ryzen 7 9700X
RX Vega 64
RX Vega 56
48GB65%35%1.55
32GB (2台)Ryzen 9 3950X
RTX 4060Ti
RTX 4060Ti
47GB32%68%2.22
40GB (3台)Ryzen 9 3950X
RTX 4060Ti
RTX 4060Ti
RTX 2070S
49GB17%83%3.08
48GB (4台)Ryzen 9 3950X
RTX 4060Ti
RTX 4060Ti
RTX 2070S
GTX 1080
51GB5%95%3.94
56GB (5台)RTX 4060Ti
RTX 4060Ti
RTX 2070S
GTX 1080
GTX 1070
55GB100%4.09
llama 70b の推論速度

表にある必要 RAM 及び CPU/GPU の割合はそれぞれ実行時に ollama ps コマンドで表示される数値です。複数のビデオカードに分割できるとはいえ、台数が増えれば増えるほど必要 RAM が増えており、メモリ効率も悪くなっていることがわかります。

枚数を増やすほど消費メモリが増え、ますますビデオカードを増やす必要が生じてしまいます。5台使用時の必要メモリは CPU 単体のみの場合と比べて 10GB ほど増えおりあまり効率はよくありません。やはり VRAM は多ければ多い方が良いです。

動作環境など

マザー上には PCIe x16 スロットが 2つしか無いのでそれ以外の GPU は外付けです。SSD 用の M.2 (PCIe x4) とマザーボード上の PCIe x1 スロットを利用して外部に 3台のビデオカードを繋いでいます。

↓動作時の様子。一番上が MINISFORUM DEG1 (OCulink 接続) に載った GeForce RTX 2070 Super、床に立ててあるのが PCIe x1 接続の GeForce GTX 1080 と GTX 1070。

前回Proxmox 上の VM にパススルーしていましたが、少しでも性能を上げるために今回は SSD に直接 Ubuntu をインストールしています。M.2 スロットはすべて GPU の接続に使用したため SATA SSD を使用しています。

前回は VM だったので RADEON RX Vega 64/56 をパススルーできなかったのですが、OS を直接インストールしたことで Vega でも動くようになりました。Ollama が対応しているのは Vega 56/64 以降なので残念ながら RADEON RX 480 (Polalis) は使用できませんでした。とりあえず手持ちの RADEON でも複数台使用した動作を確認することができました。

GPU 台数とモデルサイズの関係

複数台 GPU を使用した場合に VRAM に 100% 載るモデルサイズの目安は以下のとおりです。

VRAM の組み合わせ合計 VRAM 容量モデルサイズ(Q4)モデルの例
8GB + 8GB16GB14bphi4:14b など
8GB + 8GB + 8GB24GB27bgemma2:27b など
16GB + 8GB24GB32bqwen2.5:32b など

組み合わせの例。

VRAM の組み合わせ合計 VRAM 容量モデルtoken/s
GeForce GTX 1080
GeForce GTX 1070
16GBphi4:14b16.19
RADEON RX Vega 64
RADEON RX Vega 56
16GBphi4:14b22.71
GeForce RTX 2070 Super
GeForce GTX 1080
GeForce GTX 1070
24GBgemma2:27b12.89
GeForce RTX 2070 Super
GeForce RTX 4060Ti
24GBqwen2.5:32b13.56

より詳しい数値は以下のページにまとめています。

関連ページ

VRAM 8GB の GPU 3枚で 30B 前後の LLM を動かす。Ollama でマルチ GPU 速度の比較

PC 上でローカル LLM を実行する場合、VRAM 容量が足りなくてもビデオカードを複数枚集めれば GPU 上で動作することがわかったので、色々組み合わせて速度を比較してみました。

家に眠っていた古いビデオカードを集めて 30B 前後のモデルが動いています。流石にパフォーマンスでは GeForce RTX 4090 等の上位モデルに敵わないと思いますが、13 tps ほど出ていますので動かすだけなら十分かと思います。

以下その結果です。速度は変動があるので数値はあくまで参考程度にお願いします。

27B gemma2:27b

VRAM 8GB のビデオカード 3枚で動作させることができました。使用したのは GeForce RTX 2070 Super (8GB)、GeForce GTX 1080 (8GB)、GeForce GTX 1070 (8GB) といった組み合わせです。GTX 1000 世代は TensorCore がありませんが、それでも CPU よりずっと高速です。

種類GPU合計VRAMメモリ使用量容量の割合速度
CPU のみRyzen 7 9700X19GB100% CPU1.97 tps
3 GPU2070S + 1080 + 10708+8+8=24GB23GB100% GPU12.89 tps
2 GPU4060Ti + 2070S16+8=24GB23GB100% GPU15.94 tps

うまく動いたので、あとから他の PC で使っていた RTX 4060ti (16GB) も持ってきました。「メモリ容量」と「容量の割合」は「ollama ps」コマンドで表示される値です。

32B qwen2.5:32b

32B はギリギリ入りませんでした。同じ 24GB でも GeForce RTX 4060 Ti (16GB) + GeForce RTX 2070 Super (8GB) の場合はメモリに載ります。やはり分割は少ない方がメモリの利用効率が上がるようです。

種類GPU合計VRAMメモリ使用量容量の割合速度
CPU のみRyzen 7 9700X22GB100% CPU1.77 tps
3 GPU2070S + 1080 + 10708+8+8=24GB25GB3% CPU + 97% GPU7.69 tps
2 GPU4060Ti + 2070S16+8=24GB23GB100% GPU13.56 tps

14B phi4:14b

14B はもちろん動きます。4060Ti (16GB) の場合は一枚に収まりました。8GB 2枚でも動くかもしれませんが残念ながら未確認です。余裕があれば後ほど試したいと思っています。

種類GPU合計VRAMメモリ使用量容量の割合速度
CPU のみRyzen 7 9700X11GB100% CPU3.06 tps
3 GPU2070S + 1080 + 10708+8+8=24GB16GB100% GPU17.38 tps
1 GPU4060Ti16GB14GB100% GPU37.38 tps

70B llama3.3:70b

70B はさすがに大きく、手持ちのビデオカード 4枚全部繋いでもメモリに入りませんでした。

種類GPU合計VRAMメモリ使用量容量の割合速度
CPU のみRyzen 7 9700X46GB100% CPU0.88 tps
3 GPU2070S + 1080 + 10708+8+8=24GB50GB52% CPU + 48% GPU1.09 tps
2 GPU4060Ti + 2070S16+8=24GB48GB49% CPU + 51% GPU1.46 tps
3 GPU4060Ti + 2070S + 108016+8+8=32GB49GB35% CPU + 65% GPU1.69 tps
4 GPU4060Ti + 2070S + 1080 + 107016+8+8+8=40GB51GB21% CPU + 79% GPU2.22 tps

データ

より詳しい結果を以下のページにまとめました。

使用した環境など

Proxmox VE 上の VM に Ubuntu 22.04 をインストールし、その上で ollama を走らせています。GPU は最大 4枚を VM にパススルーしています。ビデオカードはそれぞれ以下の方法で接続しています。

  • マザーボード上の PCIe x16 スロット 1 (PCIe 3.0 x16 で RTX 2070Super)
  • マザーボード上の PCIe x16 スロット 2 (PCIe 4.0 x4 で RTX 4060Ti)
  • M.2 スロット + Oculink 経由で外部の DEG1 に接続 (PCIe 3.0 x4 で GTX1080)
  • マザーボード上の PCIe x1 スロットからライザーケーブル (PCIe 3.0 x1 で GTX1070)

GPU を接続した PC は Ryzen 9 3950X + X570 です。CPU のみの結果は別の PC (Ryzen 7 9700X) によるものです。

VM へのパススルーではなく Linux を直接インストールした場合ではもう少しパフォーマンスが上がるかもしれません。

GeForce RTX 4090 や RTX 3090 といった上位 GPU がなくても、家にあった古いビデオカードを利用して組み合わせるだけで 30B 前後のモデルが使えるようになりました。その分パフォーマンスは限られていますが、13 tps あればそれなりに使えると思いますので、アプリケーションから呼び出すテストに使ったりと色々活用できそうです。

関連エントリ

Proxmox VE の GPU パススルー設定

Proxmox VE の GPU パススルーを色々試しています。以下のページにまとめました。

GeForce の外付け GPU であれば、Proxmox 上の GUI だけで簡単に設定できることがわかりました。

AMD CPU はもともと設定不要ですし、Intel CPU でも Proxmox VE 8.2 から intel_iommu=on がデフォルトで有効化されており grub 上のカーネルオプションの設定が不要になっています。

実際に Ryzen 9 3950X + X570 にビデオカードを最大 4枚繋いでパススルーを行うことができました。

2枚はマザー上の x16 スロットに直接、もう一つは PCIe x1 からライザーケーブル経由、最後は M.2 スロットから OCulink で DEG1 に外部 GPU として接続しています。

それぞれ異なる VM に割り当ててもいいですし、全部同じ VM で使うこともできます。

例えば VRAM 8GB のビデオカードでも、3台集めれば 27b の LLM モデルを GPU で走らせることができます。GeForce RTX 2070 Super + GeForce GTX 1080 + GeForce GTX 1070 はいずれも VRAM 8GB ですが、3台使うことで ollama 上の Gemma2:27b が 13 token/s ほどになりました。CPU のみだと 1.5 token/s くらいです。

試した GPU は以下の通りです。動かなかったのは今のところ RADEON RX Vega 56 のみです。詳しくはまとめたページの方をご覧ください。

  • GeForce RTX 4060 Ti
  • GeForce RTX 2070 Super
  • GeForce GTX 1080
  • GeForce GTX 1070
  • GeForce GTX 970
  • GeForce GTX 960
  • RADEON RX 6400
  • RADEON RX 480

関連ページ