为消费级Nvidia显卡启用PCI-E P2P将带来超乎你想象的收益
摘要
通过打补丁的驱动和vLLM环境变量为消费级Nvidia GPU启用PCI-E点对点(P2P),如基准测试所示,可免费获得约25%的预填充吞吐量提升。
免责声明 - 本文/笔记未使用任何LLM撰写
关于我的设置的更详细文章稍后会发布,想给使用VLLM且拥有>= 2张GPU的朋友们提个醒。
我有一台相当强悍的服务器(8通道AMD EPYC,约150GB/s内存带宽),4张5060Ti 16GB运行在PCI-E 4.0 8x模式下。考虑到CPU强悍、内存带宽高、没有瓶颈,折腾P2P应该收益微乎其微,对吧?我之前也是这么想的,现在看看两个相同测试的结果:
测试提示词:`llama-benchy --base-url http://localllm/v1 --model localllm --depth 0 4096 8192 16384 32768 --latency-mode generation`
1) 未启用p2p:
| model | test | t/s | peak t/s | ttfr (ms) | est_ppt (ms) | e2e_ttft (ms) |
|:---------|----------------:|----------------:|---------------:|-----------------:|-----------------:|-----------------:|
| localllm | pp2048 | 1648.96 ± 8.49 | | 1241.77 ± 8.66 | 1131.60 ± 8.66 | 1241.77 ± 8.66 |
| localllm | tg32 | 89.86 ± 7.05 | 92.76 ± 7.28 | | | |
| localllm | pp2048 @ d4096 | 1654.51 ± 6.44 | | 3504.72 ± 11.71 | 3394.55 ± 11.71 | 3504.72 ± 11.71 |
| localllm | tg32 @ d4096 | 102.98 ± 3.95 | 106.30 ± 4.08 | | | |
| localllm | pp2048 @ d8192 | 1631.74 ± 10.72 | | 5821.87 ± 82.46 | 5711.71 ± 82.46 | 5821.87 ± 82.46 |
| localllm | tg32 @ d8192 | 109.27 ± 4.42 | 112.79 ± 4.56 | | | |
| localllm | pp2048 @ d16384 | 1601.33 ± 3.18 | | 10502.40 ± 46.13 | 10392.23 ± 46.13 | 10502.94 ± 46.27 |
| localllm | tg32 @ d16384 | 98.61 ± 5.01 | 116.87 ± 5.94 | | | |
| localllm | pp2048 @ d32768 | 1544.66 ± 1.10 | | 20598.44 ± 65.95 | 20488.27 ± 65.95 | 20598.44 ± 65.95 |
| localllm | tg32 @ d32768 | 93.24 ± 15.89 | 122.15 ± 15.63 | | | |
2) 启用p2p:
| model | test | t/s | peak t/s | ttfr (ms) | est_ppt (ms) | e2e_ttft (ms) |
|:---------|----------------:|----------------:|---------------:|-----------------:|-----------------:|-----------------:|
| localllm | pp2048 | 2305.20 ± 49.73 | | 913.50 ± 27.47 | 808.72 ± 27.47 | 913.50 ± 27.47 |
| localllm | tg32 | 97.92 ± 8.26 | 101.07 ± 8.53 | | | |
| localllm | pp2048 @ d4096 | 2268.40 ± 6.48 | | 2615.57 ± 28.00 | 2510.79 ± 28.00 | 2615.57 ± 28.00 |
| localllm | tg32 @ d4096 | 103.60 ± 9.04 | 106.95 ± 9.33 | | | |
| localllm | pp2048 @ d8192 | 2214.54 ± 8.39 | | 4307.55 ± 49.46 | 4202.77 ± 49.46 | 4312.27 ± 55.30 |
| localllm | tg32 @ d8192 | 122.88 ± 5.89 | 126.84 ± 6.09 | | | |
| localllm | pp2048 @ d16384 | 2164.10 ± 8.34 | | 7809.37 ± 73.29 | 7704.59 ± 73.29 | 7809.37 ± 73.29 |
| localllm | tg32 @ d16384 | 111.51 ± 7.92 | 125.93 ± 3.14 | | | |
| localllm | pp2048 @ d32768 | 2082.02 ± 3.86 | | 15224.08 ± 21.55 | 15119.30 ± 21.55 | 15224.08 ± 21.55 |
| localllm | tg32 @ d32768 | 96.02 ± 7.55 | 136.62 ± 24.75 | | | |
好吧,白赚约25%的预填充(PP)性能。
使用的HF模型:Qwen/Qwen3.6-27B-FP8
KV量化 - 未使用,因此为F16
并行模式 - 张量并行(tensor-parallelism)
如何启用P2P
你的硬件需要支持ReBAR,请在BIOS中启用它。
从 https://github.com/aikitoria/open-gpu-kernel-modules 安装打过补丁的驱动(请仔细阅读readme!)
将以下环境变量添加到VLLM启动命令中:
NCCL_P2P_DISABLE=0
VLLM_SKIP_P2P_CHECK=1
NCCL_P2P_LEVEL=SYS
就这样!
相似文章
关于在 4x5060 ti 分叉上排查 P2P 问题的发现
关于 PCIe 分叉和 4 路 GPU 配置中 P2P 性能问题的详细发现,包括张量并行和流水线并行的解决方法及替代方案。
PSA:请勿使用 Intel 消费级平台进行多 GPU 配置
测试表明,搭载Arrow Lake CPU的Intel消费级平台(如Z890)存在硬件/固件限制,阻碍了多GPU之间进行正常的PCIe点对点(P2P)通信。虽然通道数量充足,但这些平台仍不适合多GPU AI工作负载。
1800美元(GPU成本,使用P2P运行Qwen/Qwen3.6-27b-FP8,262K上下文,BF16 KV缓存,55 tok/s)
一位用户分享了使用4块RTX 5060 Ti 16GB显卡(支持P2P)运行Qwen3.6-27B-FP8的配置,在262K上下文下实现55 tok/s的速度,强调单用户推理成本仅约1800美元。
Blackwell 与 PDL 性能提升
Llama.cpp 现已支持适用于 Blackwell GPU 的 Nvidia 程序化依赖启动 (PDL),在 Token 生成时可带来 5-10% 的性能提升。该功能默认未启用,需通过编译标志开启。
超低成本20GB显存,448GB/s带宽,仅需100美元。
演示了如何用约100美元通过两张NVIDIA P102-100显卡实现20GB显存和448GB/s带宽,运行llama.cpp服务并搭载Qwen模型,支持3个并发用户处理大上下文。