为消费级Nvidia显卡启用PCI-E P2P将带来超乎你想象的收益

Reddit r/LocalLLaMA 新闻

摘要

通过打补丁的驱动和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 就这样!
查看原文

相似文章

PSA:请勿使用 Intel 消费级平台进行多 GPU 配置

Reddit r/LocalLLaMA

测试表明,搭载Arrow Lake CPU的Intel消费级平台(如Z890)存在硬件/固件限制,阻碍了多GPU之间进行正常的PCIe点对点(P2P)通信。虽然通道数量充足,但这些平台仍不适合多GPU AI工作负载。

Blackwell 与 PDL 性能提升

Reddit r/LocalLLaMA

Llama.cpp 现已支持适用于 Blackwell GPU 的 Nvidia 程序化依赖启动 (PDL),在 Token 生成时可带来 5-10% 的性能提升。该功能默认未启用,需通过编译标志开启。