0
点赞
收藏
分享

微信扫一扫

RDMA网络

在Kubernetes的标准框架里,容器是只有1个网络平面的。即容器里面,只有1个eth0网卡。所以无论是利用overlay实现容器隧道网络,还是underlay实现容器网络直通,其目的都是解决容器网络“通与不通”的问题。

而大规模AI集群中,百亿、千亿级别参数量的大模型通常需要做分布式训练,这时参数梯度等信息要在节点间交换,就需要使用RDMA网络来传递。否则以普通以太网进行传输,其仅仅解决“通与不通”这种入门要求,参数信息传的实在太慢了。

RDMA可以绕过TCP/IP协议栈,并且不需要CPU干预,直接从网卡硬件上开始网络数据传递,网络传输性能可以大幅的提升,大大加快训练参数的交换。

RDMA网络_IP

所以咱们的AI集群中,必须要将RDMA网络管理起来,使得所有AI容器可以通过这条路,完成各种集合通信算法(AllReduce等)。

RDMA网络_复杂度_02

如上图,除了「底部」那条咱们平时看到的容器网络那条线外,顶部还有一个「参数面」网络。一般成本考虑咱们都是走RoCE方案,即用IB网卡+以太网交换机(而不是IB专用交换机)实现。而且由于RDMA协议要求网络是无损的(否则性能会受到极大的影响),而咱们要在以太网上实现无损网络,就需要引入PFC(Priority-Based Flow Control)流控逻辑。

RDMA网络_调优_03

这个就需要同时在交换机和服务器RoCE网卡上,两侧同时配置PFC策略进行流控,以实现无损网络。

可见,「参数面」网络的管理,会比普通主机网络,多一份PFC调优的复杂度。而且,由于NCCL性能直接影响训练速度,所以定位NCCL性能掉速or调优NCCL性能,也是系统必须提供的运维能力之一。

并且RoCE网卡的管理,也属于“异构资源”,也需要开发Device-plugin来告知K8s如何分配这种RoCE网卡。而且GPU和RoCE网卡是需要进行联合分配的,因为硬件连接关系,必须是靠近在一起的配对一起用,如下:

RDMA网络_IP_04

- 因此,除了「参数面」网络设备的管理分配以外,还得关联调度逻辑来感知这个RoCE网卡的硬件拓扑。

举报

相关推荐

0 条评论