姓名:姬文浩 学号:22011210610 学院:通信工程学院
一、概述
AI业务既不同于大数据处理,也不同于高性能计算业务。直接采用传统数据中心架构来构建AI集群,会面临很多问题,导致集群的扩展性和规模受到很大限制。AI业务与通用大数据处理业务有着不同的计算模型。如下图所示,传统大数据处理业务是通量型负载,其子任务独立性强,处理流程以流式或单向图为主。而AI业务则是高性能计算负载,子任务之间交互频繁,一个迭代的计算任务启动依赖于上一迭代的计算完成。此外,AI业务与高性能计算业务有着不同的通信模型。传统高性能计算业务以GPU等加速器为协处理器,以CPU为中心,负责节点间通信。而AI业务大量采用GPU等加速器作为业务计算的主体,仍然沿用原有以CPU为中心的通信架构,势必引入复杂的通信层次,造成极低的通信效率。
如上图所示,传统服务器架构存在三种拥塞。首先,传统的数据中心服务器通常只配备一个网络接口(独立网卡或者Bond网卡),当该服务器配备多个高速IO设备时(比如GPU)并通过网络接口直接通信,就会面临很大的流量汇聚,成为系统的瓶颈。其次,类似的端口拥塞会发生在PCIe Root Port上。当多个高速IO设备同时访问系统主存时,PCIe Root Complex需要接收所有设备发来的访存请求,并转发至CPU内部总线,再通过DDR总线访问系统主存。需要说明的是, AI训练过程也被划分为多个迭代,每个迭代中都要进行梯度的同步和参数更新,然后才能启动下一批次的数据载入。因此,对分布式AI训练任务而言,同步式的网络接口和内存访问非常常见。此外,GPU之间的通信距离的差异会导致显著的性能差异。CPU socket之间的QPI/UPI进一步加剧了这一性能差异。而AI训练任务的梯度AllReduce是一个全局性的同步操作,其完成时间往往受限于最慢的链路。所以这种链路带宽的不公平性也会导致系统性能的下降。
二、EFLOPS网络架构
为了降低上述端口拥塞问题,我们在每个服务器内配备了与GPU等量的NIC,并将GPU和NIC进行绑定配对,使每一对绑定的GPU和NIC处于同一PCIe Switch之下,约束GPU的网络通信只能经由自己绑定的NIC。这样,GPU的网络通信流量全部被局限在PCIe Switch之内,避免了网络接口上的拥塞。同时,我们将包括GPU和NIC在内的所有高速IO设备尽量平均分布于所有可用的Root Port上,以缓解对同步式访存对Root Complex的压力。最后,在PCIe Fabric流量较大的情况下,可以禁用GPU之间通过PCIe Fabric直接通信,使其通过网络接口进行通信,利用网络协议栈的流量控制机制来降低系统的拥塞程度。
当前很多数据中心的网络拓扑都采用Fat-tree,它将网络中的交换服务器划分为多个层次,各层都具有相同的对剖带宽。但由于路径选择的哈希算法总是存在碰撞的可能,网络中的拥塞是无法避免的。虽然TCP/IP网络的拥塞控制算法已经非常成熟,而拥塞控制在RDMA网络中仍然是一个巨大的挑战。在EFlops项目中,我们并不是从拥塞控制算法角度出发,而是从更上层进行网络的流量管理,以彻底解决网络的拥塞问题。
如图所示,配合多网卡服务器结构,我们在EFlops项目中提出了BiGraph网络拓扑。该拓扑与传统的Fat-tree拓扑有相似之处,也存在根本的区别。与Fat-tree拓扑类似,我们将网络中的分为两部分(Upper和Lower),各部分之间通过Clos架构进行互连,形如两层Fat-tree拓扑的Spine和Leaf交换机。与Fat-tree不同的是,我们在两部分交换机上都可以直接接入计算服务器;即每一个交换机都扮演了Fat-tree拓扑中的Spine和Leaf两个角色,最大跳步数为3。