はじめに
私のメインマシンはRTX 5060 TiとRTX 3060のデュアルGPU構成である。普段はこの2つのGPUを使ってローカルLLMを動作させている。1つのGPUに乗り切らないLLMモデルも、2つのGPUを使うことで動作させることができている。
しばしば、コンシューマー用のPC環境で複数GPUを使うと、GPU間の転送速度がネックになり性能低下が発生するという話を目にするが、実際にどの程度の性能低下が発生しているか確認したことがなかった。このため、シングルGPUとマルチGPUで、推論時にどの程度の速度差が出るかの検証を行った。
同一モデルのGPUの構成での検証の方が、マルチGPUによる性能への影響を正しく確認することができるが、私の環境は異なるモデルのマルチGPU環境である。このため、性能の異なるモデルを混ぜた場合にどうなるかという観点で見ていただければ幸いだ。
測定環境
測定環境(OS, ハードウェア構成)は以下の通り。
| 項目 (Item) | 内容 (Content) |
|---|---|
| OS | Kubuntu 24.04.03 |
| CPU | Ryzen 5 7600 |
| メモリ (Memory) | DDR5-5600 64GB |
| マザーボード (Motherboard) | MSI MAG B650 TOMAHAWK WIFI |
| GPU1 | ZOTAC GAMING GeForce RTX 5060 Ti 16GB Twin Edge |
| GPU2 | MSI GeForce RTX 3060 VENTUS 2X 12G OC |
| GPUドライババージョン | 575.64.03 |
nvidia-smiコマンドを実行すると2つのGPUが認識されている。推論前であるが、メインのGPU(5060ti)は画面出力にも使用しているため、1.1GBほどVRAMを消費している。
tadashi@kubuntu:~$ nvidia-smi
Thu Aug 14 13:49:37 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 575.64.03 Driver Version: 575.64.03 CUDA Version: 12.9 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 5060 Ti Off | 00000000:01:00.0 On | N/A |
| 0% 39C P3 14W / 180W | 1129MiB / 16311MiB | 1% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
| 1 NVIDIA GeForce RTX 3060 Off | 00000000:06:00.0 Off | N/A |
| 0% 37C P8 13W / 170W | 15MiB / 12288MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
測定に用いるソフトウェア
llama.cppのllama-serverのdockerイメージを使用。
docker run \
--rm \
--gpus all \
-v ./models:/models \
-p 22015:8000 \
-e CUDA_VISIBLE_DEVICES=0,1 \
ghcr.io/ggml-org/llama.cpp:server-cuda-b6140 \
--model /models/Qwen3-8B-Q8_0.gguf \
--port 8000 \
--host 0.0.0.0 \
--ctx-size 16384 \
--jinja \
--n-gpu-layers 100 \
--flash-attn \
--top-p 0.95 \
--repeat-penalty 1.05 \
--temp 0.6 \
--top-k 20 \
--min-p 0 \
--tensor-split 1,1
なお、最近知ったのだが、llama-serverには以下のようなチャットのUIが付随している。シンプルでとても使いやすい。マルチモーダルにも対応している。
以下、llama-serverの起動パラメータの細かいところの説明。
コンテナで使用可能なGPUを指定。0がRTX5060ti, 1がRTX3060。
1つのGPUだけで推論したい場合は0または1のみを指定する。
-e CUDA_VISIBLE_DEVICES=0,1
複数GPUでの推論時に、それぞれのGPUに載せるモデルの割合。
今回は、RTX5060ti, RTX3060に均等に載るように1対1を指定した。
--tensor-split 1,1
測定結果
次の2モデルについて、推論を実行し、toknes per secondと測定。
- Qwen3-8B-Q8_0
- gpt-oss-20b-Q4_K_M
| LLMモデル | GPU | tokens per second |
|---|---|---|
| Qwen3-8B-Q8_0 | RTX3060 12GB | 38.16 |
| Qwen3-8B-Q8_0 | RTX5060ti 16GB | 43.47 |
| Qwen3-8B-Q8_0 | RTX5060ti 16GB+RTX3060 12GB | 39.65 |
てっきり、もっと極端に遅くなるのかと思っていたがそうでもなかったというのが正直な感想。
デュアルGPUにするとRTX3060単体よりも遅くなるのかな?と思っていたが、RTX5060tiがひっぱってくれたようで、むしろRTX3060単体よりも3%ほど高速になっている。また、RTX5060ti単体から見ても9%程度の速度低下に収まっているため、十分許容範囲と思える。この程度の差だと、実用上、差を感じられることはなさそう。
| LLMモデル | GPU | tokens per second |
|---|---|---|
| gpt-oss-20b-Q4_K_M | RTX5060ti 16GB | 106.51 |
| gpt-oss-20b-Q4_K_M | RTX5060ti 16GB+RTX3060 12GB | 82.16 |
いっぽう、gpt-oss-20b-Q4_K_MはRTX5060ti単体時の77%くらいの速度となった。ただ、それでも82.16トークン/秒と非常に高速であり、実用上は問題なさそう。
まとめ
今回はマルチGPU環境での推論速度低下を行った。もっと極端に性能劣化するものだと思っていたが、今回の検証の範囲では、速度低下は十分許容できる程度だった。
