目录CONTENT 1.引言......................................................................1 2.GPU架构和互联方案.................................................2 2.1GPU架构分析......................................................................22.2 GPU互联方案......................................................................5 3.下一代Scale-up互联方案.........................................8 3.1需求分析.............................................................................83.2网络方案...........................................................................10 4.EthLink网络方案..................................................12 4.1EthLink协议栈...................................................................134.2网络拓扑...........................................................................184.3网络接口...........................................................................19 01引言 随着机器学习和人工智能等领域的持续发展,AI模型对GPU集群数据处理能力的需求也在不断提升。AI应用需要GPU集群处理更大的数据集,训练更深的神经网络和处理更多的并发任务,同时还要减少任务执行时间以及提高系统整体效率。这需要GPU集群的Scale-up网络规模持续增大,扩展到机架级甚至多机架级。 以太网技术应用在GPU集群互联架构具有诸多优势,例如:行业领先的高速链路,大容量交换机,成熟的生态系统等。目前,多个行业组织正在开发用于AI集群的Scale-up网络技术,这些技术或是对以太网进行扩展,或是将以太网部分组件用作构建模块。 字节跳动基于以太网技术,为AI集群提供了低延迟、高带宽的下一代Scale-up网络方案,满足了AI应用对于GPU之间的高速互联传输需求。 02GPU架构和互联方案 2.1 GPU架构分析 目前主流的GPU架构都支持Load-Store语义,如下图所示,GPU的计算引擎从寄存器中读写数据并完成数据的处理,LSU(Load-Store Unit)通过Load/Store指令在寄存器和Device Memory之间,以及Device Memory和外部Memory之间完成数据传输。 基于上述架构模型的GPU,计算引擎主要负责数据的处理,LSU负责数据的传输,如下图所示,两个模块可以并行工作形成流水线,数据传输主要依靠Load和Store语义完成。 实际的GPU架构要比上述的GPU架构模型更加复杂,GPGPU(GeneralPurpose GPU)架构通常如下图所示,Device Memory包括L1/L2 Cache和Shared Memory,Shared Memory和L1 Cache位于StreamingMultiprocessor(SM)内部,不能在SM之间进行共享。L2 Cache位于SM外部,可以被所有SM共享。GPU外部Memory为Global Memory,可以被所有的SM访问,也可以被CPU或者其他GPU访问。 在上述GPU的架构中,GPU主要通过LSU完成数据的传输,如下图所示。计算引擎通过寄存器进行数据的访问,IO时延为ns级。LSU通过Load/Store操作实现Shared Memory与寄存器之间,以及Shared Memory与/L1/L2Cache之间的数据传输,IO时延为10ns级,IO Size通常为寄存器级(32/64 bit)。当出现Cache Miss时,LSU需要进行Global Memory和 Shared Memory之间的数据传输,IO时延为100ns级,IO Size为CacheLine Size(64/128/256 Byte)。 在AI应用场景中,计算引擎需要处理大量的数据信息,LSU可以实现数据的高效传输,但是LSU每次传输的数据块比较小,在传输大块数据时,需要LSU下发多个Load/Store指令来完成数据的搬运。Load/Store指令的内存地址或者寄存器地址信息,需要计算引擎提前生成并发给LSU,Load/Store指令的地址信息处理会消耗计算引擎的算力资源。因此通过LSU来完成大块数据的传输,会伴随计算引擎的部分算力资源的消耗。 为了优化GPU数据传输方案,降低计算引擎用于数据传输的算力资源,新型号的GPU在片内增加了类似于DMA引擎的传输模块,如NVIDIA从Hopper系列的GPU开始,在SM内增加了Tensor Memory Accelerator(TMA),专门用于Global Memory到Shared Memory之间的数据传输,如下图所示。 GPU在增加了TMA模块之后,不再需要计算引擎消耗算力资源来在数据传输过程中持续计算Load/Store指令的地址信息,只需要计算引擎将数据传输的描述符下发给TMA模块,TMA模块自行计算数据的内存地址信息,独立完成数据在Global Memory和Shared Memory之间的传输。数据传输流程如下图所示,TMA通过DMA Read和DMA Write语义完成Global Memory和Shared Memory之间的数据传输,LSU通过Load/Store语义完成SharedMemory到寄存器之间的数据传输。 2.2 GPU互联方案 AI集群的训练和推理任务,通常需要多个GPU协同完成,计算引擎需要处理的数据可能位于多个GPU的Global Memory中,这时就需要通过Scale-up网络和Scale Out网络来完成GPU之间的数据传输。GPU的互联架构通常如下图所示,Scale-up网络的特点是带宽高,时延小,通常基于Load/Store语义执行同步操作,业界典型的Scale-up协议包括PCIe,NVLINK,UALINK等。字节跳动也提出了自研的Scale-up网络协议EthLink,支持Load/Store语义和RDMA语义,覆盖了Scale-up网络的所有应用场景。Scale Out网络的带宽相对较低,时延相对较高,通常基于RDMA语义执行异步操作,业界典型的Scale Out协议包括IB、RoCEv2、UEC等。 GPU通过Scale-up网络访问远端GPU Global Memory的数据流程如下图所示,通过LSU实现远端Global Memory和本地Shared Memory之间的数据传输,数据传输的IO时延通常小于1us,IO Size通常为Cache Line Size(64/128/256 Byte),不同GPU之间的内存可通过Scale-up网络保证Cache Coherency。目前业界主流的GPU主要通过Load/Store操作在Scale-up网络实现大块数据的传输,进行数据传输时仍然需要消耗算力资源处理内存地址信息。 GPU通过Scale Out网络访问远端GPU的Global Memory的数据流程如下图所示,通过RDMA Engine实现远端Global Memory和本地Global Memory之间的数据传输,数据传输的IO时延通常为10us级,Max IO Size为2GB。GPU本地GlobalMemory和本地Shared Memory之间的数据传输,仍然通过TMA/LSU进行处理。 03下一代Scale-Up互联方案 3.1需求分析 随着AI集群规模的增大,Scale-up网络规模也需要随之增大,Scale-up网络需要传输的数据量也在逐步增大。通过对当前GPU架构和互联方案的分析,可以得到下一代Scale-up网络的互联需求如下: 1)Load/Store语义传输小块数据的效率高,时延小,特别适合用于传输控制信息和内存中位置不连续的数据,以及用于对时延要求较高的AI推理场景。为了更好的支持推理应用场景,实现小块数据和GPU内存中位置不连续的数据的高效传输,Scale-up网络需要承接Load/Store语义。 2)Load/Store语义在数据传输过程中需要计算引擎持续生成Load/Store的地址信息,会消耗计算引擎的算力资源。而RDMA语义传输大块数据的效率 较高,在数据传输过程中几乎不需要消耗计算引擎的算力。AI大模型训练中,张量并行、专家并行等模型并行的数据流量需要通过Scale-up网络进行传输,模型并行的数据量非常大,通常在MB级~GB级。而且,AI大模型训练通常会通过优化算法实现数据计算和数据传输的交叠,降低对数据传输时延的要求。通过RDMA语义实现大块数据的传输,可以有效节省计算引擎的算力资源。因此,Scale-up网络需要承接RDMA语义。RDMA语义的缺点也比较明显,交互操作复杂,传输时延大,不适合传输小块数据。 3)Shared Memory作为Device Memory,正在发挥越来越重要的作用,Scale-up网络提供的RDMA引擎,既要实现远端Global Memory和本地Global Memory之间的数据传输,也需要实现远端Global Memory和本地Shared Memory之间的数据传输。 4)Scale-up网络的RDMA语义,不能完全照搬传统RDMA协议,因为传统RDMA协议提供的是一套软硬件交互接口,交互操作复杂而且效率低下(相对于纯硬件接口)。Scale-up网络的RDMA Engine是GPU内部模块,需要更加简洁的接口来实现RDMA Engine与GPU内部其他模块之间的交互操作。 5)随着Scale-up网络范围的扩大,通过网络硬件实现Cache Coherency的代价越来越大。由于AI集群的通信存在明显的周期规律,GPU之间没有必要继续通过网络硬件来保证Cache Coherency,可以由系统软件保证CacheCoherency。 6)Scale-up网络需要对任意两个GPU之间相同传输路径的语义操作和数据报文进行保序,而不同路径上的操作可以乱序执行。 7)由于单个协议栈的数据处理带宽有限,GPU通常会部署多个Scale-up协议栈实现超大网络带宽。在这种多协议栈的网络架构中,需要保证网络负载在 多个协议栈之间,以及在同一个协议栈的多个端口之间尽可能均衡。网络负载均衡引入的报文乱序,需要由Scale-up网络的上层应用进行乱序处理。 3.2网络方案 下一代Scale-up网络的系统架构如下图所示,GPU可以通过Load/Store语义执行同步操作,Load/Store语义由LSU发起,主要用于数据传输时延敏感的应用场景。GPU也可以通过RDMA语义执行异步操作,RDMA语义由RDMA Engine发起,主要用于带宽大,时延不敏感的应用场景。 Scale-up网络承接Load/Store语义的数据传输流程如下图所示,由于网络硬件不再需要保证Cache Coherency,L1/L2 Cache只用于缓存数据,并由系统软件周期性对Cache进行Clear。 Scale-up