三万卡集群用的国产自研网络,到底解决了什么问题?
前几天看到有同行分享了参观中科曙光郑州三万卡集群的经历提到一个细节那个集群用的是自研的ScaleFabric400网络交换机80个口网卡支持856K个队列对。这两个数字让很多人感兴趣它们到底意味着什么结合公开的技术资料我们来拆解一下背后的设计逻辑。80个口是为了少走一层三万卡按每台服务器8卡算那就是3750台服务器。这些服务器之间要通信最常见的拓扑是Spine-Leaf——下面一堆Leaf交换机连服务器上面一堆Spine交换机把所有的Leaf连起来形成一个全互联的“网”。那么问题来了如果一台Leaf交换机只有48个口或者64个口你连完服务器之后剩下的口要往上连Spine。3750台服务器假设每台Leaf连40台服务器留一部分口上行你大概需要94台Leaf。每台Leaf要和所有Spine连Spine就得有94个下行口。但市面上的交换机大多只有64口单台Spine根本不够得两三台绑在一起拓扑就复杂了光纤布线也乱了。ScaleFabric400交换机做了80个口。多出这16个口让每台Spine能连更多的Leaf整个网络可以只用两层就打通不需要搞什么“核心层”或者“Director Switch”。80口带来的端口密度提升让组网时需要的设备总数更少拓扑更简洁。在万卡规模下少一层意味着延迟更可控故障点更少运维更简单。856K个队列对给并发留够空间再说网卡上的856K个队列对QP。这玩意儿是什么简单说两个GPU要通信得先在网卡上建立一个QP相当于开一条专用通道。通道开得越多能同时通信的GPU对数就越多。三万卡同时做AllReduce理论上要建立将近十亿对通信关系显然不可能每对都开一个独立QP。实际工程中QP是复用的——比如一轮通信开一批用完了关掉下一轮再开。但问题在于如果QP数量不够频繁创建销毁本身就有开销而且万一遇到通信模式特别复杂的阶段比如张量并行里那种细粒度的切分可能同时需要维持的QP数量会暴涨。NVIDIA ConnectX-7支持128K个QP在万卡级别已经够用。ScaleFabric做到了856K是它的6.7倍。这意味着什么意味着网卡上可以长期维持更多的活跃通道通信模式切换时不用频繁重建系统调度更灵活。尤其是在做那种混合并行数据并行张量并行流水线并行的时候通信图本身就很复杂QP多就是容错空间大。自研协议不走RoCE的路还有一个细节ScaleFabric的RDMA是自研协议不走RoCEv2老路。从协议设计的角度RoCE的问题是依赖PFC优先级流控来保无损但PFC在超大规模下容易引发连锁反应——某个交换机缓冲区满了发个暂停帧给上游上游也满了再往上发最后整个网络卡死。业界管这叫PFC风暴。自研协议可以绕开这个坑用端到端Credit的方式做流控类似InfiniBand。每个数据包发送前先确认接收端有空间没有就不发从机制上杜绝丢包。代价是生态不互通——你要用这套协议就得全套用曙光的交换机和网卡不能混搭。但换个角度想InfiniBand也是封闭的一样跑得很好。封闭本身不是问题关键是能不能把垂直优化做到位。ScaleFabric的硬件规格有明显的“超大规模优先”倾向。80口交换机减少组网层级856K QP支撑密集并发自研协议实现确定性无损。这些设计都围绕一个目标在三万卡规模下跑出稳定的通信性能目前来看物理层面是稳的。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2431137.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!