云计算革新:以太网 Scale-UP 网络为 GPU 加速赋能

embedded/2024/12/23 6:00:43/

 

谈谈基于以太网的GPU Scale-UP网络

   

Intel Gaudi-3 采用 RoCE 互联技术,促进了 Scale-UP 解决方案。业界专家 Jim Keller 倡导以太网替代 NVLink。Tenstorrent 成功应用以太网实现片上网络互联。RoCE 和以太网已成为互联解决方案的新兴趋势,为高性能计算提供了强大且高效的连接选项。

要实现以太网替代 NVLink,需要对 GPU 架构进行全面修改,本质上等同于将 HBM 连接到以太网上并实现一系列通信优化。全球仅有少数公司掌握这项技术,包括针对计算需求的 In-Network-Computing 优化,如 SHARP。

博通打造NVLink竞品,需解决关键挑战:
- 数据传输速度和延迟优化
- 产品互联性和兼容性提升
- 生态系统发展和合作伙伴支持

链接延迟是不可避免的,源于高吞吐量高速 Serdes FEC 和超大型互连。单纯修改包协议或采用 HPC 以太网并不能解决此问题。

2.传输的语义是什么?做网络的这群人大概只懂个SEND/RECV。举个例子,UEC定义的Reliable Unordered Delivery for Idempotent operations(RUDI)其实就是一个典型的技术上的错误,一方面它满足了交换律和幂等律,但是针对一些算子,例如Reduction的加法如何实现幂等?显然这群人也没做过,还有针对NVLink上那种细颗粒度的访存,基于结合律的优化也是不支持的。更一般来说,它必须演进到Semi-Lattice的语义才行。

优化 NVLINK 上的内存池化,解决计算密集型算子(如 KV Cache)的时间/空间权衡问题,从而增强计算能力。

4.动态路由和拥塞控制能力1:1无收敛的Lossless组网对于万卡集群通过一些hardcode的调优没什么太大的问题,而对于十万卡和百万卡规模集群来看,甚至需要RDMA进行长传,这些问题目前来看没有一个商业厂商能解决的。

考虑到超大规模模型训练的一系列需求,把HBM直接挂载在以太网上并实现了一系列集合通信卸载的,放眼全球现在也就只有少数几个团队干过,前三个问题我是在四年前做NetDAM项目时就已经完全解决干净了,第四个去年也在某个云的团队一起解决干净了。下面我们将介绍一些Gaudi3/Maia100/TPU等多个厂商的互联,然后再分析一下NVLink的演进,最后再来谈谈如何能够真正地解决这些问题 at Scale

1. 当前ScaleUP互联方案概述

1.1 Intel Gaudi3

Gaudi的Die架构采用24个RoCE 200Gbps链路,21个用于内部全互联,3个用于外部连接,形成超大规模组网拓扑。每个边缘交换机的交换容量为25.6T。Intel WhitePaper值得深入研究,解决其提出的问题。

1.1.1 拥塞控制

Intel 采用 Selective ACK 机制取代 PFC,并使用 SWIFT 作为拥塞控制算法,避免 ECN。这种方法类似于 Google Falcon 在 Intel IPU 上的 Reliable Transport Engine,为数据中心网络提供了可靠、高效的传输。

1.1.2 多路径和In-Network Reduction

Intel 宣称支持 Packet Spraying,但使用博通交换机而非自有 Tofino。In-Network Reduction 兼容 FP8/BF16 等,而 Operator 仅支持求和、最小值和最大值。UEC 的 In-Network-Computing (INC) 工作组已明确此配置。

1.2 Microsoft Maia100

没有太多的信息,只有4800Gbps单芯片的带宽,然后单个服务器机框4张Maia100,整个机柜8个服务器构成一个32卡的集群。e7565a141158ed6e801440e4d1e8e49f.jpeg放大交换机和互联的线缆来看,有三个交换机,每个服务器有24个400Gbps网络接口,网口间有回环的连接线(图中黑色),以及对外互联线(紫色)。52e8916fea5aae8fee3dd70228ecd6c3.jpeg也就是说很有可能构成如下的拓扑:12b2378a12cd7ced7929d72f7ab5ad64.jpeg即在主板内部构成一个口字形的互联,然后在X方向构成一个环,而在Y方向则是分别构成三个平面连接到三个交换机。交换机上行进行机柜间的Scale-Out连接,每个机柜每个平面总共有32个400G接口, 再加上1:1收敛,上行交换机链路算在一起正好一个25.6T的交换机,这样搭几层扩展理论应该可行,算是一个Scale-Up和Scale-Out两张网络合并的代表。

至于协议对于Torus Ring来看,简单的点到点RoCE应该问题不大,互联到Scale-Out交换机时就需要多路径的能力了。缺点是延迟可能有点大,不过这类自定义的芯片如果不是和CUDA那样走SIMT,而是走脉动阵列的方式,延迟也不是太大的问题。另外Torus整个组就4块,集合通信延迟影响也不大。但是个人觉得这东西可能还是用于做推理为主的,一般CSP都会先做一块推理用的芯片,再做训练的。另外两家CSP也有明确的训练推理区分AWS Trainium/Inferentia, Google也是V5p/V5e。

1.3 Google TPU

TPU互联大家已经很清楚了,Torus Ring的拓扑结构和光交换机来做链路切换。6bd466fe2b6727d09ef1de83a80d8580.jpeg2c3f48f7237ccbdb99014410d69e83b2.jpegOCS有两个目的,一个是按照售卖的规模进行动态切分,例如TPUv5p 单芯片支持4800Gbps的ICI(Inter-Chip Interconnect)连接,拓扑为3D-Torus,整个集群8960块TPUv5p 最大售卖规模为6144块构成一个3D-Torus。d4b18c7ffd41bdfda6fed79f8ac101f6.jpeg通过OCS可以切分这些接口进行不同尺度的售卖, 另一个是针对MoE这些AlltoAll的通信做扩展bisection 带宽的优化。f65b056fe15d0c65c00fd1f453add8db.jpeg还有一个是容错,这是3D Torus拓扑必须要考虑的一个问题,有一些更新是这周NSDI‘24 讲到一个《Resiliency at Scale: Managing Google’s TPUv4 Machine Learning Supercomputer》[2] 后面我们将专门介绍。另一方面Google还支持通过数据中心网络扩展两个Pod构建Multislice的训练,Pod间做DP并行。d8b99aa3ea15e698cd0ce0ed674a77d3.jpeg796fba852b40fed472a86025cbdaf6b4.jpeg

1.4 AWS Trainium

Trainium 架构由 16 片组成一个小型簇集,采用 2D Torus Ring 结构进行片间互连。这种结构确保了高速、低延迟的数据传输,为 AI 和机器学习模型的训练提供了卓越的性能。

1.5 Tesla Dojo

Tesla Transport Protocol(TTP)由 Tesla 开发,简化了芯片内部和外部通信。它整合了 Wafer/NOC 和以太网扩展,实现了统一通信,提升了效率和性能。

54a4c65a1fd04fe0d874d300fa2630ff.jpeg

它通过台积电的System-on-Wafer将25个D1计算单元封装在一个晶圆上, 并采用5x5的方式构建2D Mesh网络互联所有的计算单元, 单个晶圆构成一个Tile.每个Tile有40个I/O Die。2742627e564ff73606234a77ee525f97.jpegTile之间采用9TB/s互联。724f2e0c11eb8c4bdf1172a42aaea3f5.jpeg可以通过片上网络路由绕开失效的D1核或者Tile。92acb763c4d4a55e68961869b9e4fe31.jpeg

对外Scale-Out的以太网有一块DIP,每个D1计算引擎有自己的SRAM, 而其它内存放置在带HBM的Dojo接口卡(DIP)上。f5bd2549af36398aa396e737b0327826.jpeg每个网卡通过顶部的900GB/s特殊总线TTP(Tesla Transport Protocol)连接到Dojo的I/O Die上, 正好对应800GB HBM的带宽,  每个I/O Die可以连接5个Dojo接口卡(DIP)。

001ff3b669c5b9690a9be9b3d38bf794.jpeg

由于内部通信为一个2D Mesh网络, 长距离通信代价很大, 针对片上路由做了一些特殊的设计。bc8bf8392e5d6cbf9f3f0f3ed6b5636a.jpeg路由在片上提供多路径,并且不保序, 同时针对大范围长路径的通信, 它很巧妙的利用Dojo接口卡构建了一个400Gbps的以太网TTPoE总线来做shortcut。ed77895ffb3e8c9ddaee2f9e3ae6df69.jpegDojo通过System-on-wafer的方式构建了基于晶圆尺度的高密度的片上网络, 同时通过私有的片间高速短距离总线构建了9TB/s的wafer间的通信网络. 然后将I/O和内存整合在DIP卡上,提供每卡900GB/s连接到晶圆片上网络的能力,构建了一个超大规模的2D Mesh网络, 但是考虑到片上网络通信距离过长带来的拥塞控制, 又设计了基于DIP卡的400Gbps逃生通道,通过片外的以太网交换机送到目的晶圆上。

1.6 Tenstorrent

Tenstorrent 的片上网络采用简单有效的以太网设计,由 Tensor+ 控制头组成以太网报文,支持多种通信语义。网络结构划分为阶段,每个阶段的指令数和带宽可估计,从而简化映射到核上的约束。
该2D Mesh 结构可扩展至 40960 个核心的大规模互联,提供高效且可扩展的片间通信。

2. Scale-UP的技术需求

2.1 拓扑选择

我们可以注意到在ScaleUp网络选择中,Nvidia当前是1:1收敛的FatTree构建,而其它几家基本上都是Torus Ring或者2D Mesh,而Nvidia后续会演进到DragonFly。5b08c304d692ee996a0a77d02c854f78.jpeg背后的逻辑我们可以在hammingMesh的论文中看到的选择如下:7033ca51058af67f4ce29e8564dbb6f9.jpeg可以看到对于Allreduce带宽来看,Torus是最便宜的,性能也能够基本跑到峰值。但是针对MoE这类模型的AlltoAll就要考察bisection带宽了,而DragonFly无论是在布线复杂度还是GlobBW以及网络直径上都还不错,所以明白了Bill Dally的选择了吧?

2.2 动态路由和可靠传输

网络规模扩展至十万卡时,现有的流量工程解决方案存在局限性。单板级优化,如RoCE缺陷修复、Adaptive Routing和Packet Spraying,只能部分解决万卡规模问题。
对于超大规模网络,需要同时解决流量工程和亲和性控制的难题。

基于元数据的静态路由,管控平面调度和多轨道技术都可以作为解决方案的组成部分。通过综合应用这些技术,可以有效管理超大规模网络中的海量流量,确保网络性能和可靠性。

算法应对突发流量十分困难。令人担忧的是,人们往往忽视突发流量的根源,执着于通过测试交换机缓冲区来抑制它。一些人甚至诉诸确定性网络和傅立叶分析,这显然是徒劳的。


在工业界,优化调度仍面临挑战,取决于其他厂商的洞察力。
谷歌的研究表明,系统失效和弹性售卖会导致数据碎片,从而增加调度难度。
ICI内部路由解决方案与OCS交换机协作,提供完善的解决方案。
这篇论文深入披露了ICI的架构,包括物理层、可靠传输层、路由层和事务层,为理解该解决方案提供详细的技术见解。

以太网的路由层对于支持 ScaleUP 至关重要,因为它提供 DragonFly 和失效链路切换能力,确保以太网在复杂网络环境下保持高可用性。

3. Scale UP延迟重要么?

GPU延迟隐藏优化
GPU延迟隐藏通过以下方式实现:
* NVLink:内存语义,提供高带宽、低延迟。
* RDMA:消息语义,主要用于异构计算,延迟会更高。
GPU作为吞吐量优化的处理器,追求低延迟会导致实现问题。NVLink的内存语义使其具有较低延迟,而RDMA的消息语义和异构计算实现导致延迟较高。

3.1 RDMA实现的缺陷

RDMA相较NVLink延迟高的问题因CPU限制而起。NVIDIA引入GDA-KI技术,有效降低访存延迟,使得访问延迟变得更加容易隐藏。

3.2 细粒度的内存访问

NVLink 的细粒度访问对传输效率和延迟至关重要。利用以太网 RDMA 替换 NVLink 时,需要采用 HPC 以太网来支持较长的数据包。
此外,为实现 RDMA 消息的内部半格语义,需要遵循 NetDAM 中提出的解决方案。通过满足这些要求,可以有效弥补以太网 RDMA 在替换 NVLink 方面的不足。

  1. 交换律可以保证数据可以用UnOrder方式提交。
  2. 幂等性确保丢包重传不会导致重复处理。但在涉及副作用的加法操作(如 Reduce)时,需要采用事务或数据幂等性来处理。
  3. 结合律针对细粒度的内存访问,通过结合律编排,提升传输效率。

对于访存的需求,在主机内的协议如下:b1ea783e8dc3a8c1ad03078d01ca2899.jpeg通常是一个FLIT的大小,而在这个基础上要支持超大规模的ScaleUP互联和支撑可靠性又要加一些路由头,还有以太网头,还有如果超大规模集群要多租户隔离还有VPC头,这些其实支持起来都没有太大问题的,因为当你考虑到了 结合律即可。但是UEC似乎完全没理解到,提供了RUDI的支持交换律和幂等律支持了,结合律忘了,真是一个失误。而英伟达针对这个问题怎么解的呢?结合律编码:2ddee46de669f321f76ea97c3b873e20.jpegd5e4a10136ebc51440ed979d7f8b3339.jpeg最终细颗粒度访存的问题解决了。34d4ce05cf8a660f7d885cb67a67de01.jpeg下一代的NVLink一定会走到这条路里面来Infiniband和NVLink这两张ScaleOut和ScaleUP网络一定会融合。

3.2 ScaleUP的内存池化

大模型面临 HBM 容量不足的挑战。英伟达通过 Grace 和 NVLink C2C 扩展解决了该问题,采用池化内存以支持 ScaleUP 网络。值得关注的是,英伟达正在探索其他方式来应对这一挑战,如论文中所展示的。

3. 结论

任何一家公司如果想做Ethernet的Scale UP,需要考虑以下大量的问题:

  1. 通过优化访问内存协议并利用 GPU 的缓存,FinePack 可显著缩短延迟。其创新的 Message 语义和缓存处理机制能有效隐藏延迟,提升整体性能。
  2. ScaleUP 网络的动态路由和租户隔离功能至关重要,优化路由以避免碎片问题,特别是当资源受链路故障影响时。
  3. RDMA语义不完善,且直接复制SHARP存在隐患。为实现幂等,需要完善Semi-Lattice语义,支持有副作用操作的幂等实现。
  4. Fabric的多路径转发和拥塞控制,提升整个Fabric利用率;
  5. 大规模内存池化。

NetDAM研究突破性地实现了以太网ScaleUP直连HBM,其消息编码策略与Jim Keller的成就一致,但基于不同出发点。此外,大规模池化和原生In-Network-Computing/Programming加速进一步增强了其功能。通过与多个团队合作,引入了先进的拥塞控制和多路径转发,完善了该方案。NetDAM的论文为以太网在HPC领域应用提供了宝贵的见解,值得深入研读。

探索英特尔® 高迪 3 AI 加速器,实现令人难以置信的 AI 性能。
这款业界领先的加速器提供:
- 高达 40 倍的训练性能提升
- 高达 10 倍的推理延迟降低
- 支持广泛的 AI 框架和模型
通过高迪 3,解锁前所未有的 AI 创新,推动您的业务实现新高度。


Google TPUv4:弹性超算
Google TPUv4 超级计算机是业界首屈一指的机器学习平台,拥有惊人的规模:
* 5,760 个 TPU 单元
* 600 万个 AI 模型训练
* 每天处理 200 PB 数据
该平台采用了创新技术,实现了前所未有的弹性:
* 弹性部署:按需部署 TPU,无需预先配置
* 故障隔离:将工作负载隔离到独立的 TPU,确保可靠性
* 动态弹性:自动扩展和缩小 TPU 容量,优化利用率
TPUv4 的弹性优势使 Google 能够高效管理其庞大的 ML 工作负载,加速模型训练并推动 AI 创新。


 

-对此,您有什么看法见解?-

-欢迎在评论区留言探讨和分享。-


http://www.ppmy.cn/embedded/23451.html

相关文章

C语言扫雷游戏完整实现(下)

文章目录 前言一、排雷函数菜单二、排雷函数菜单的实现三、拓展棋盘功能四、源码1. test.c源文件2. game.h头文件3. game.c源文件 总结 前言 C语言实现扫雷游戏的排雷菜单,以及功能的实现,拓展棋盘功能,以及源码等。 上半部分的链接地址: C语…

uniapp app权限说明弹框2024.4.23更新

华为上架被拒绝 用uni-app开发的app,上架华为被拒,问题如下: 您的应用在运行时,未见向用户告知权限申请的目的,向用户索取(电话、相机、存储)等权限,不符合华为应用市场审核标准。…

设计模式之中介者模式

详细介绍 中介者模式(Mediator Pattern)是一种行为设计模式,它通过定义一个中介类来封装多个对象之间的交互,使各对象不需要显示地相互引用,从而降低耦合度,提高系统的可维护性和灵活性。中介者模式将原本一…

后端面试---分布式微服务

分布式&微服务 分布式1、什么时候用到分布式开发三级目录 微服务 分布式 1、什么时候用到分布式开发 三级目录 微服务 1、谈谈你对微服务的理解,什么时候用微服务 2、若A服务请求B服务B1接口,B1接口又请求A服务的A2接口,会不会有问题…

微信小程序:基于MySQL+Nodejs的汽车品牌管理系统

各位好,接上期,今天分享一个通过本地MySQLNodejs服务器实现CRUD功能的微信小程序,一起来看看吧~ 干货!微信小程序通过NodeJs连接MySQL数据库https://jslhyh32.blog.csdn.net/article/details/137890154?spm1001.2014.3001.5502 …

前端开发攻略---用原生JS在网页中也能实现文本转语音

1、原理 语音合成 (也被称作是文本转为语音,英语简写是 tts) 包括接收 app 中需要语音合成的文本,再在设备麦克风播放出来这两个过程。 Web API中对此有一个主要控制接口 SpeechSynthesis,外加一些处理如何表示要被合成的文本 (也被称为 utte…

react挂载后函数

在React中,当组件被挂载到DOM后,你可以使用生命周期方法 componentDidMount() 来执行某些操作。这是React组件生命周期中的一个重要阶段,此时组件已经被渲染并插入到DOM中。 componentDidMount() 是一个在组件输出到DOM后立即自动调用的方法…

Redux(类似vue中的vuex和pina)

什么是Redux Redux 是React最常用的集中状态管理工具,类似于Vue中的Pinia(Vuex),可以独立于框架运行 作用:通过集中管理的方式管理应用的状态 为什么要使用Redux? 独立于组件,无视组件之间的层…