受到机器学习、自然语言处理、生成式 AI、机器人技术及自治系统等领域技术进步的推动,人工智能 (AI) 和高性能计算 (HPC) 正呈现显著增长。
这些创新的核心是大型分布式训练模型,这类模型通常由分布在多个 GPU 之上的数十亿甚至数万亿个参数所组成。在训练过程中,这些节点通过使用后端 AI 以太网交换矩阵交换大量数据和实时变化以实现同步。然而,丢包会严重影响同步效果,导致重传或通信阻塞,最终引发延迟增加、任务完成时间 (JCT) 延长,以及无法高效利用昂贵的 GPU 资源。
挑战:AI 数据中心交换矩阵中的静默丢包
JCT 是一个关键指标,同时现代 AI 工作负载,尤其是大规模训练和推理任务, 依赖于群集之间的紧密同步。即使丢失一个数据包 ,也可能对性能产生显著影响并增加运维成本。
举例来说,当因流量拥塞而导致交换机缓冲区溢出时,RoCE v2 数据包可能会在 AI 以太网/IP 交换矩阵中出现丢包。这些被丢弃的数据包必须重新传输,进而导致延迟以及训练或推理流程中断。
尽管显式拥塞通知 (ECN) 通过在 IP 报头中标记位数来发出拥塞信号,但其无法确定具体哪些数据包因拥塞而出现丢弃,因此无法确定哪些数据包需要重新发送。
解决方案:丢包拥塞通知 (DCN)
为了解决这一问题,瞻博网络推出了丢包拥塞通知 (DCN),这是为基于 Tomahawk 5 芯片的 QFX5240-OD 和 QFX5240-QD(64 x 800GbE 以太网/IP 平台)所研发的 Junos OS(TM) Evolved 软件版本 23.4x100d40 中的全新拥塞管理功 能。
当发生拥塞时,交换机会通过减少数据包有效负载,借由高优先级队列将这些信息转发给接收主机,从而发送丢包通知。网络交换矩阵中的中转交换机会识别这些经过修整的带有 DCN 标记的丢包,并将其定向至高优先级队列。
因此,终端主机必须处理这些经过修整的 DCN 数据包,确定哪些数据包因拥塞而遭明示丢弃,并立即向源端请求重传这些丢失的数据包。
然而,这些经过修整的数据包并不会发送到目标服务器的内存中,而是用于精确识别哪些数据包需要进行选择性重传——这有助于避免默认的重传过程耗时过长,从而实现更短的端到端延迟,确保任务顺利完成。
下图展示了一套经过简化的拓扑结构:当数据包进入第一个交换机时,若遇到极端拥塞(超过 ECN 阈值),这些数据包不会被丢弃,而是经过修整后发送至目标 GPU 服务器 NIC 卡。虽然修整操作由第一个交换机执行,但中转交换机也可能识别出修整后的帧,并通过高优先级队列将其立即发送至输出接口。修整后的数据包到达目标 NIC 卡后,系统会向源服务器发送重传数据包请求。
图 1:丢包拥塞通知 (DCN)
在 QFX5240- OD 和 QFX5240- QD 交换机中,有一个与数据包队列相互独立的专用队列处理与 DCN 相关的数据包。这种相互独立使用户能够更有效地管理延迟和分配给 DCN 数据包的带宽。
示例配置:
- 该配置用于将自定义 L4 udp 端口号设置为交换机识别 DCN 数据包所用的 DCN 协议号。这是启用 DCN 的必选配置。
set class-of-service drop-congestion-notification udp-port <0.65535>
- 该配置用于设置所有 DCN 丢包的出口队列。此为全局配置。该队列应为其中一个单播队列。用户应将此队列配置为严格高优先级。建议仅将此队列专用于 DCN。与其他 COS 功能类似,此队列通过“forwarding-class”进行指定。这也是启用 DCN 的必选配置。
set class-of-service drop-congestion-notification forwarding-class <fc name>
- 若要使 QFX5240 仅作为 DCN 中转设备,上述两种配置(协议和转发类别)足以满足需求。此处的“中转”仅指识别 DCN 数据包并将其放入高优先级队列进行传输。若要使 QFX5240 在发生拥塞时产生 DCN 丢包,除上述配置外,还需进行以下端口级 DCN 配置。
- 该配置用于在各个端口启用 DCN。当端口启用 DCN 后,如果任何进入该端口的 DCN 数据流量因网络拥塞而在 MMU 中被丢弃,就会触发 DCN 丢包机制。
set class-of-service interface <ingress-interface-name> drop-congestion-notification
- 如果用户希望在所有端口启用 DCN,则必须使用通配符来应用上述配置。
set class-of-service interface et-* drop-congestion-notification
- 仅物理接口以及 AE 父节点支持启用 DCN 的配置。
set class-of-service drop-congestion-notification forwarding-class dcn
set class-of-service drop-congestion-notification udp-port 13742
set class-of-service interface et-0/0/0 drop-congestion-notification
显示 DCN 丢包统计信息的命令
root@QFX5240# run show interfaces queue et-0/0/0 forwarding-class dcn
Physical interface: et-0/0/0, up, Physical link is Down
Interface index: 1205, SNMP ifIndex: 503
Forwarding classes: 12 supported, 9 in use
Egress queues: 10 supported, 9 in use
Queue: 7, Forwarding classes: dcn
Queued:
Packets : 0 0 pps
Bytes : 0 0 bps
Transmitted:
Packets : 0 0 pps
Bytes : 0 0 bps
Tail-dropped packets : 0 0 pps
Tail-dropped bytes : 0 0 bps
RED-dropped packets : 0 0 pps
RED-dropped bytes : 0 0 bps
ECN-CE packets : 0 0 pps
ECN-CE bytes : 0 0 bps
总结:
在 AI 以太网交换矩阵中,保持始终如一的性能和同步操作至关重要,在工作负载跨分布式 GPU 群集扩展时尤为如此。DCN 通过提供严重拥塞期间丢包情况的实时可见性,解决了这一关键问题。通过通知端点丢包情况,DCN 能够实现更快的恢复,尽量降低隐藏的延迟,并帮助保持 AI JCT。
最终,DCN 填补了网络交换矩阵与 AI 工作负载之间的可见性差距,使其成为构建可扩展、高性能 AI 基础架构的关键能力。
请参阅用户指南,了解有关 AI/ML 数据中心功能的更多信息。