第4章 分布式网络通信调优
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
在当今的人工智能领域,GPU、存储设备和网络接口之间实现无缝、低延迟的数据传输已成为必然需求。本章将介绍用于训练的NVIDIA Magnum IO(如NCCL、GPUDirect RDMA、GDS)以及用于解耦推理的NIXL技术。我们将结合现代GPU及NVL72等集群环境展开讨论,阐释这些库及其底层硬件如何构筑超大规模AI系统所需的关键基础设施。
在大规模系统中,即使最快的GPU也可能因内存与磁盘间低效的通信和数据传输而受限。我们将探讨加速数据传输的策略、正确的数据分片技术、如何直接调用高速存储子系统,以及在GPU上实现通信与计算重叠的高级模式。通信与计算重叠作为常见模式,在AI系统性能工程的探索中将反复出现。
我们将借助NVIDIA的Magnum IO I/O加速平台组件(包含NCCL、GPUDirect RDMA及GPUDirect Storage)阐释通信与计算重叠的重要性,演示如何运用这些库降低通信延迟、减少CPU开销,并在多节点多GPU人工智能系统的所有层级实现吞吐量最大化。
PyTorch等高级AI框架可借助这些底层库实现计算与通信的重叠。将这些技术集成到AI系统中,能为超大规模模型训练和分布式推理服务器扩展提供整体加速方案,从而支撑数十亿用户的应用场景。
所有这些优化确保每个组件都经过调优以实现峰值性能。性能工程师需要精心配置和调优网络与存储架构,以维持高水平的GPU利用率和"有效吞吐量"(goodput)。
通信与计算交叠(流水线处理)
通信与计算的重叠处理(流水线技术) 在构建高效的大规模训练与推理系统中发挥关键作用。此类环境下,保持GPU持续工作并减少数据等待时间至关重要。
核心思想在于确保数据传输与计算任务并行进行:当前任务完成时,后续阶段所需的结果已开始处理或已交付。现代框架如PyTorch支持异步操作,使集体通信(如梯度全局归约)能与计算任务并行运行。这有效减少了GPU空闲时间(见图4-1),从而提升整体系统吞吐量。
图4-1. 基于多个CUDA流0-3的计算中,主机到设备(H2D)与设备到主机(D2H)通信的重叠机制
基于CUDA的库充分利用了多流处理能力:当一个流执行密集型矩阵乘法时,另一个流可同时处理聚合梯度等通信任务。神经网络各层完成计算时,前一层的输出数据已进入聚合或后续处理流程。这种任务重叠确保系统在无冗余等待的情况下持续产出结果,维持数据流的稳定性。
在通信事件间增加计算量可进一步降低通信的相对开销。当系统处理更大批量的数据时,可在暂停交换信息前执行更多计算。
在分布式训练中,这体现为梯度累加机制——将多个小批次的更新合并至单次同步步骤。通过降低通信事件频率,系统既减少了每次交换的开销,又提升了整体吞吐量。
另一项支持计算与通信无缝重叠的技术是压缩。压缩可减少需传输的数据量。例如,若模型在发送前压缩梯度,网络传输的数据量便会缩减,从而缩短传输时间并缓解拥塞。
传输时间的缩短意味着通信阶段对计算阶段的干扰更小。虽然压缩本身不会直接产生重叠,但它缩短了数据在网络中传输的时间窗口,使计算工作能够更有效地并行进行.
现代深度学习框架还会将大型张量通信拆分为小数据块以促进重叠。PyTorch等框架会自动将大型梯度或激活张量分割为多个数据块,这些数据块在生成后立即传输。例如,无需等待整层梯度准备就绪,部分梯度即可立即启动全局归一化操作。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access