比较 llama.cpp 行/张量分割与 ik_llama 图分割的双GPU推理速度

Reddit r/LocalLLaMA 新闻

摘要

一位用户使用llama.cpp(行/张量切分)和ik_llama(图切分)在两张RTX 3080 20GB上对双GPU推理速度进行了基准测试,使用Qwen3.6-27B GGUF模型,比较了token生成和提示处理速度。

## 设置: ``` +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 610.43.02 KMD 版本: 610.43.02 CUDA UMD 版本: 13.3 | +-----------------------------------------+------------------------+----------------------+ | GPU 名称 持久性模式 | 总线-ID 显示状态 | 易失性未纠正 ECC | | 风扇 温度 性能 功耗:使用/上限 | 内存使用 | GPU 利用率 计算模式 | | | | MIG 模式 | |=========================================+========================+======================| | 0 NVIDIA GeForce RTX 3080 关闭 | 00000000:01:00.0 关闭 | N/A | | 40% 30C P8 10W / 320W | 238MiB / 20480MiB | 0% 默认 | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 1 NVIDIA GeForce RTX 3080 关闭 | 00000000:03:00.0 关闭 | N/A | | 40% 29C P8 8W / 320W | 17MiB / 20480MiB | 0% 默认 | | | | N/A | +-----------------------------------------+------------------------+----------------------+ ``` 是的,这是刚刚到货的阿里云 3080 20GB 显卡。说实话,买得很值。我使用了 llama-benchy 来测试提示处理速度和令牌生成,分别采用 ik_llama 和 llama.cpp 的行分割(row)、张量分割(tensor)和图分割(graph)模式。使用的模型:https://huggingface.co/unsloth/Qwen3.6-27B-GGUF/blob/main/Qwen3.6-27B-Q8_0.gguf 本次基准测试未使用 MTP。使用了今天最新版本的 ik_llama 和 llama.cpp,并在基准测试前更新并重新编译。所有三次运行使用的参数: ``` -m '<...>/Qwen3.6-27B-Q8_0.gguf' \ --temp 0.6 --top-p 0.95 --top-k 20 --min-p 0.0 \ -np 1 -c 135000 -ngl 99 ``` llama.cpp 使用的参数: ``` -sm row ``` ``` -sm tensor ``` ik_llama 使用的参数: ``` -sm graph ``` ## -sm row: VRAM 使用情况:GPU0:18.2 / GPU1:18.5 结果: | 模型 | 测试 | t/s | 峰值 t/s | ttfr (ms) | est_ppt (ms) | e2e_ttft (ms) | |:-----------------|-----------------:|----------------:|-------------:|-------------------:|-------------------:|-------------------:| | Qwen/Qwen3.6-27B | pp4096 @ d4000 | 1732.89 ± 14.86 | | 4673.37 ± 40.08 | 4673.07 ± 40.08 | 4673.37 ± 40.08 | | Qwen/Qwen3.6-27B | tg128 @ d4000 | 23.03 ± 0.01 | 24.00 ± 0.00 | | | | | Qwen/Qwen3.6-27B | pp4096 @ d8000 | 1766.49 ± 7.45 | | 6848.27 ± 29.08 | 6847.97 ± 29.08 | 6848.27 ± 29.08 | | Qwen/Qwen3.6-27B | tg128 @ d8000 | 22.83 ± 0.01 | 23.00 ± 0.00 | | | | | Qwen/Qwen3.6-27B | pp4096 @ d16000 | 1756.67 ± 9.84 | | 11441.05 ± 63.85 | 11440.74 ± 63.85 | 11441.05 ± 63.85 | | Qwen/Qwen3.6-27B | tg128 @ d16000 | 22.44 ± 0.00 | 23.00 ± 0.00 | | | | | Qwen/Qwen3.6-27B | pp4096 @ d32000 | 1670.17 ± 7.88 | | 21613.73 ± 101.44 | 21613.42 ± 101.44 | 21613.73 ± 101.44 | | Qwen/Qwen3.6-27B | tg128 @ d32000 | 21.71 ± 0.01 | 22.00 ± 0.00 | | | | | Qwen/Qwen3.6-27B | pp4096 @ d64000 | 1481.15 ± 4.23 | | 45976.46 ± 130.94 | 45976.15 ± 130.94 | 45976.46 ± 130.94 | | Qwen/Qwen3.6-27B | tg128 @ d64000 | 20.41 ± 0.00 | 21.00 ± 0.00 | | | | | Qwen/Qwen3.6-27B | pp4096 @ d128000 | 1195.01 ± 2.36 | | 110541.23 ± 217.70 | 110540.93 ± 217.70 | 110541.23 ± 217.70 | | Qwen/Qwen3.6-27B | tg128 @ d128000 | 18.23 ± 0.00 | 19.00 ± 0.00 | | | | ## -sm tensor: VRAM 使用情况:GPU0:18.1 / GPU1:17.9 | 模型 | 测试 | t/s | 峰值 t/s | ttfr (ms) | est_ppt (ms) | e2e_ttft (ms) | |:-----------------|-----------------:|----------------:|-------------:|-------------------:|-------------------:|-------------------:| | Qwen/Qwen3.6-27B | pp4096 @ d4000 | 1412.73 ± 15.38 | | 5732.50 ± 61.94 | 5732.15 ± 61.94 | 5732.50 ± 61.94 | | Qwen/Qwen3.6-27B | tg128 @ d4000 | 38.95 ± 0.05 | 40.00 ± 0.00 | | | | | Qwen/Qwen3.6-27B | pp4096 @ d8000 | 1400.96 ± 5.46 | | 8635.04 ± 32.88 | 8634.68 ± 32.88 | 8635.04 ± 32.88 | | Qwen/Qwen3.6-27B | tg128 @ d8000 | 38.68 ± 0.10 | 39.00 ± 0.00 | | | | | Qwen/Qwen3.6-27B | pp4096 @ d16000 | 1381.89 ± 4.16 | | 14543.59 ± 43.73 | 14543.23 ± 43.73 | 14543.59 ± 43.73 | | Qwen/Qwen3.6-27B | tg128 @ d16000 | 38.14 ± 0.11 | 39.00 ± 0.00 | | | | | Qwen/Qwen3.6-27B | pp4096 @ d32000 | 1328.03 ± 2.82 | | 27181.67 ± 57.72 | 27181.31 ± 57.72 | 27181.67 ± 57.72 | | Qwen/Qwen3.6-27B | tg128 @ d32000 | 37.13 ± 0.01 | 38.00 ± 0.00 | | | | | Qwen/Qwen3.6-27B | pp4096 @ d64000 | 1219.17 ± 2.61 | | 55856.47 ± 119.00 | 55856.12 ± 119.00 | 55856.47 ± 119.00 | | Qwen/Qwen3.6-27B | tg128 @ d64000 | 35.18 ± 0.01 | 36.00 ± 0.00 | | | | | Qwen/Qwen3.6-27B | pp4096 @ d128000 | 1036.75 ± 1.70 | | 127414.43 ± 208.98 | 127414.08 ± 208.98 | 127414.43 ± 208.98 | | Qwen/Qwen3.6-27B | tg128 @ d128000 | 31.72 ± 0.12 | 32.00 ± 0.00 | | | | ## -sm graph (ik_llama): VRAM 使用情况:GPU0:17.8 / GPU1:19.2 | 模型 | 测试 | t/s | 峰值 t/s | ttfr (ms) | est_ppt (ms) | e2e_ttft (ms) | |:-----------------|-----------------:|----------------:|-------------:|-------------------:|-------------------:|-------------------:| | Qwen/Qwen3.6-27B | pp4096 @ d4000 | 1420.56 ± 17.77 | | 5700.41 ± 70.54 | 5699.81 ± 70.54 | 5700.41 ± 70.54 | | Qwen/Qwen3.6-27B | tg128 @ d4000 | 32.15 ± 0.03 | 33.00 ± 0.00 | | | | | Qwen/Qwen3.6-27B | pp4096 @ d8000 | 1387.88 ± 13.61 | | 8716.90 ± 84.91 | 8716.29 ± 84.91 | 8716.90 ± 84.91 | | Qwen/Qwen3.6-27B | tg128 @ d8000 | 31.81 ± 0.01 | 33.00 ± 0.00 | | | | | Qwen/Qwen3.6-27B | pp4096 @ d16000 | 1362.43 ± 8.36 | | 14751.24 ± 90.08 | 14750.64 ± 90.08 | 14751.24 ± 90.08 | | Qwen/Qwen3.6-27B | tg128 @ d16000 | 31.13 ± 0.01 | 32.00 ± 0.00 | | | | | Qwen/Qwen3.6-27B | pp4096 @ d32000 | 1318.72 ± 9.42 | | 27373.72 ± 195.00 | 27373.12 ± 195.00 | 27373.72 ± 195.00 | | Qwen/Qwen3.6-27B | tg128 @ d32000 | 30.32 ± 0.02 | 31.00 ± 0.00 | | | | | Qwen/Qwen3.6-27B | pp4096 @ d64000 | 1216.07 ± 8.43 | | 55999.88 ± 388.37 | 55999.27 ± 388.37 | 55999.88 ± 388.37 | | Qwen/Qwen3.6-27B | tg128 @ d64000 | 28.86 ± 0.04 | 30.00 ± 0.00 | | | | | Qwen/Qwen3.6-27B | pp4096 @ d128000 | 1055.71 ± 7.36 | | 125132.30 ± 869.60 | 125131.69 ± 869.60 | 125132.30 ± 869.60 | | Qwen/Qwen3.6-27B | tg128 @ d128000 | 26.35 ± 0.00 | 27.00 ± 0.00 | | | |
查看原文

相似文章

双GPU llama.cpp加速

Reddit r/LocalLLaMA

llama.cpp的一个分支修复了量化KV缓存中的--split-mode tensor问题,在双GPU配置上实现高达40%的速度提升,且无质量损失。