TLDR:我进行了一系列在GPU之间使用不同通信方法的DDP训练实验,以下是结果。编辑:我低估了除PCIe版本和通道数量之外的系统规格对GPU通信的重要性,所以之前的结论是错误的。阅读此评论线程。新结论:1. 除了PCIe版本和通道数量之外的系统规格对GPU通信非常重要。我仍然不知道这些重要的系统规格是什么以及它们为什么重要,有人建议是RAM速度,但我还无法确定……2. 在DDP训练中,PCIEx16似乎接近NVLINK,但这些实验不是决定性的。旧结论:1. ~~对于训练来说,NVLINK通常比PCIe好得多,即使是16x通道。~~2. PCIe 1x对于训练来说是绝对的垃圾。但4/8/16在大批次规模下还不错3. ~~去看看我做的图。~~我一直在试图弄清楚我的GPU设备绝对需要什么样的通信方式。所以我测量了在2x4090中不同数量的PCIe 4.0通道的DDP训练吞吐量,并比较了在2x3090中PCIe与NVLINK在扩散模型DDP训练中的情况。我在vast.ai实例上运行所有内容。我使用的设置可能与“本地LLaMA”特定需求有些不同,但我认为它对你们很多人仍然相关。 - 仅训练。这些实验不一定能说明很多关于推理效率的情况。 - DDP分布式方法。这意味着整个模型适配到每个GPU,前向传播和反向传播独立计算。之后,梯度被同步(这是可能出现通信瓶颈的地方),最后我们进行优化步骤。这应该是通信开销最小的方法。 - SDXL扩散训练。这是一个图像生成模型,但你在训练类似规模的LLM(这个是2.6B)时应该有类似的结果。 - 总的来说,我相信这些实验对任何想要使用多个3090/4090进行训练或微调的人都有用。我只使用了DDP,这是通信开销最小的并行方式,所以这意味着如果通信速度对DDP训练重要,那么它对任何类型的分布式训练都重要。我报告的是批次时间/批次大小*#GPUs。我期望单个GPU在这个指标上是最优的,因为没有通信开销,并且通过乘以GPU数量,在这个指标中浮点运算次数没有优势。问题是通过双GPU我们能多接近单GPU效率。因为DDP每批次同步一次梯度,批次越大,前向/反向传播所需时间越长,通信开销的相对重要性就越低。顺便说一下,这是通过在小批次上累积梯度完成的,在整个批次完成之前GPU之间没有同步。现在是之前承诺的图表。第一个结果。PCIe速度很重要。1x非常差,当我们增加批次大小时,4x、8x、16x之间的差异很小。https://llminfo.image.fangd123.cn/images/sik67hdc7ope1.png!/format/webp理想情况下,对于单GPU训练,PCIe速度不应该重要,我将差异归因于某些云提供商可能对GPU的欠压或者服务器之间的其他系统差异。我也不确定为什么8x和4x之间没有太大差异。也许是不同的PCIe拓扑结构或者其他东西?或者也许是我没有测量的不同系统规格会影响通信速度。第二组结果。NVLINK比PCIe好得多。https://preview.redd.it/hv4p6mdh7ope1.png?width=3569&format=png&auto=webp&s=b3bc061d00df2104b34c2c94b3b3e700e9217bc6这些结果是针对3090而不是4090的,因为NVLINK不可用。作为参考,第二个图的橙色线在某种程度上对应于第一个图的红线(PCIe 16x)。越接近单GPU线越好,NVLINK无论批次大小都非常接近,比PCIEe 16x要好得多。这指出了NVLINK的重要性。另外,我认为你不能同时用NVLINK连接超过2个3090,这很不幸:)关注https://x.com/benetnu :)实验代码在:https://github.com/benoriol/diffusion_benchmark
讨论总结
原帖作者进行了不同GPU通信方式(PCIe4.0不同通道数和NVLINK)在DDP训练中的基准测试并给出结果,之后修正了部分结论。评论者们从多个方面进行回应,包括对硬件性能补充如4090可通过补丁启用对等功能等,对原帖中的图表表示疑惑、提出各种关于不同硬件组合性能比较的疑问,还有人提出关于性能瓶颈的推测,以及对原帖价值判断产生争议。总体氛围比较理性,大家围绕GPU通信相关的技术话题进行交流。
主要观点
- 👍 [NVLINK在相关测试中性能表现好于PCIe]
- 支持理由:[原帖中的测试结果显示]
- 反对声音:[无]
- 🔥 [帖子存在严重缺陷应删除]
- 正方观点:[原帖使用较差CPU和RAM配置,结论错误]
- 反方观点:[帖子有用]
- 💡 [瓶颈可能是CPU内存控制器带宽而非RAM本身]
- [评论者从数据存储和下载情况等方面推测]
- 💡 [可通过驱动补丁在4090上启用对等功能]
- [给出了具体可对4090进行的操作及效果]
- 💡 [建议原帖作者检查是否开启特定BIOS设置]
- [阐述该设置对PCIe设备和CPU - GPU数据传输的重要性]
金句与有趣评论
- “😂你可以通过驱动补丁在4090上启用对等功能。它肯定会降低延迟并使卡到卡的传输加倍。”
- 亮点:[提供了对4090性能提升的一种有效方式]
- “🤔Thanks for the tests! I’m quite confused on the graphs, is 2x3090 with nvlink faster than 1x4090/2x4090?”
- 亮点:[表达对原帖测试的肯定同时提出疑惑]
- “👀我可能是错的,但我认为瓶颈可能也是CPU内存控制器带宽,而不是RAM本身。”
- 亮点:[提出与常规看法不同的关于瓶颈的推测]
- “😉Xamanthas: Delete the post as its completely flawed. Due_Car8412: no, its very useful post for me”
- 亮点:[体现出对原帖价值判断的争议]
- “😎你可能已经这样做了,如果没有的话,确保进入AMD的BIOS“PCI子系统”或“高级设置”并启用“Above 4G Decoding”。”
- 亮点:[给出对原帖可能有用的优化建议]
情感分析
总体情感倾向比较中性。主要分歧点在于对原帖价值的判断,一方认为原帖因为测试配置问题结论错误应该删除,另一方认为原帖有用。可能的原因是大家对于测试中硬件配置对结果的影响权重有不同的看法。
趋势与预测
- 新兴话题:[关于特定硬件组合下的推理速度的基准测试]
- 潜在影响:[对有类似GPU通信测试需求或硬件优化需求的人有指导意义,可能影响相关硬件设备的使用和优化方式]
详细内容:
标题:关于 GPU 通信方式的热门讨论
在 Reddit 上,有一个题为“Benchmark results: PCIe4.0 1x/4x/8x/16x/NVLINK 3090/4090”的帖子引起了广泛关注。此帖获得了众多点赞和大量评论。
原帖作者进行了一系列关于不同 GPU 通信方式的实验,并分享了结果。作者起初得出了一些结论,但后来发现由于低估了除 PCIe 版本和通道数量外的系统规格对 GPU 通信的重要性,之前的结论有误。新的结论包括:系统规格对 GPU 通信影响很大;PCIEx16 在 DDP 训练中似乎接近 NVLINK,但实验并非结论性的。
讨论中的主要观点有: 有人认为 4090 可以通过驱动补丁启用点对点功能,能降低延迟并使卡间传输翻倍。也有人觉得带宽本应双倍的 PCIe 8x 和 16x 差别不大,可能是延迟问题。还有人指出一切都取决于最慢的部分,如果 RAM 速度在 60/80GB/s ,需要访问 RAM 时速度就无法更快。
有人分享称租到了系统规格更好的 PCIe4.0x16 和 2x4090 实例,速度明显更快。有人询问不同 GPU 组合的 P2P 情况,以及是否存在 5090 的 P2P 速度相关问题。
有人认为瓶颈可能是 CPU 内存控制器带宽,而非 RAM 本身,甚至提到通过超频处理器能加快训练速度。
也有人希望能有关于推理方面的 x1 通道与 x8+和/或使用 NVLINK 的基准测试。
讨论中的共识在于大家都在积极探讨和分析各种因素对 GPU 通信的影响。
特别有见地的观点是对瓶颈原因的深入分析,丰富了整个讨论。
这场关于 GPU 通信方式的讨论为想要使用多个 3090/4090 进行训练或微调的人提供了有价值的参考,但结论仍有待进一步完善和明确。
感谢您的耐心阅读!来选个表情,或者留个评论吧!