llama.cpp で GPU 2台構成で性能向上


CUDA13で確認。GPU2台で利用している場合、 –split-mode tensor を使えば分散が2倍近く高速になる。
gemma 4-31b で利用したところ、デフォルト( –split-mode layer)で 23t/s だったものが –split-mode tensor で 45 t/s 超えた。 GPUは GeForce RTX 5060 Ti 16GB x2 を利用。
–split-mode tensor 高速化はB9095 の “NCCL-free AllReduce implementation” が有効な模様。
以下 llama-server -h より–split-mode 説明を引用
-sm, –split-mode {none,layer,row,tensor}
how to split the model across multiple GPUs, one of:
– none: use one GPU only
– layer (default): split layers and KV across GPUs (pipelined)
– row: split weight across GPUs by rows (parallelized)
– tensor: split weights and KV across GPUs (parallelized,-sm, --split-mode {none,layer,row,tensor} how to split the model across multiple GPUs, one of: - none: use one GPU only - layer (default): split layers and KV across GPUs (pipelined) - row: split weight across GPUs by rows (parallelized) - tensor: split weights and KV across GPUs (parallelized,EXPERIMENTAL)
ちなみに llama-server で mtp有効にすると gemma 4-31b で 2割近く向上した。
mtpなしで 20 t/s 程度が、mtp を有効にすると 23 t/s 。–spec-type draft-mtp と -md MTP.gguf ファイル指定が必要。
また –spec-draft-n-max の指定でパフォーマンスが少し変わる。利用環境では 2 が一番数値が良かった。デフォルトは3.
llama-server 利用オプション例
llama-server
-c 40192
-ngl all
-ngld all
-m model/unsloth/gemma-4-31B-it-UD-Q4_K_XL.gguf
-mm model/unsloth/mmproj-F16-gemma-4-31B-it.gguf
-md model/unsloth/gemma-4-31B-it-F16-MTP.gguf
--spec-type draft-mtp
--spec-draft-n-max 2
--split-mode tensor