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 9700X | 19GB | 100% CPU | 1.97 tps | |
3 GPU | 2070S + 1080 + 1070 | 8+8+8=24GB | 23GB | 100% GPU | 12.89 tps |
2 GPU | 4060Ti + 2070S | 16+8=24GB | 23GB | 100% GPU | 15.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 9700X | 22GB | 100% CPU | 1.77 tps | |
3 GPU | 2070S + 1080 + 1070 | 8+8+8=24GB | 25GB | 3% CPU + 97% GPU | 7.69 tps |
2 GPU | 4060Ti + 2070S | 16+8=24GB | 23GB | 100% GPU | 13.56 tps |
14B phi4:14b
14B はもちろん動きます。4060Ti (16GB) の場合は一枚に収まりました。8GB 2枚でも動くかもしれませんが残念ながら未確認です。余裕があれば後ほど試したいと思っています。
種類 | GPU | 合計VRAM | メモリ使用量 | 容量の割合 | 速度 |
---|---|---|---|---|---|
CPU のみ | Ryzen 7 9700X | 11GB | 100% CPU | 3.06 tps | |
3 GPU | 2070S + 1080 + 1070 | 8+8+8=24GB | 16GB | 100% GPU | 17.38 tps |
1 GPU | 4060Ti | 16GB | 14GB | 100% GPU | 37.38 tps |
70B llama3.3:70b
70B はさすがに大きく、手持ちのビデオカード 4枚全部繋いでもメモリに入りませんでした。
種類 | GPU | 合計VRAM | メモリ使用量 | 容量の割合 | 速度 |
---|---|---|---|---|---|
CPU のみ | Ryzen 7 9700X | 46GB | 100% CPU | 0.88 tps | |
3 GPU | 2070S + 1080 + 1070 | 8+8+8=24GB | 50GB | 52% CPU + 48% GPU | 1.09 tps |
2 GPU | 4060Ti + 2070S | 16+8=24GB | 48GB | 49% CPU + 51% GPU | 1.46 tps |
3 GPU | 4060Ti + 2070S + 1080 | 16+8+8=32GB | 49GB | 35% CPU + 65% GPU | 1.69 tps |
4 GPU | 4060Ti + 2070S + 1080 + 1070 | 16+8+8+8=40GB | 51GB | 21% CPU + 79% GPU | 2.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 あればそれなりに使えると思いますので、アプリケーションから呼び出すテストに使ったりと色々活用できそうです。