Open main menu
首页
专栏
课程
分类
归档
Chat
Sci-Hub
谷歌学术
Libgen
GitHub镜像
登录/注册
搜索
关闭
Previous
Previous
Next
Next
高级技术专家详解:基于阿里云 eRDMA 的 GPU 实例如何大幅提升多机训练性能
sockstack
/
289
/
2024-02-27 00:02:38
<p><span style="color: red; font-size: 18px">ChatGPT 可用网址,仅供交流学习使用,如对您有所帮助,请收藏并推荐给需要的朋友。</span><br><a href="https://ckai.xyz/?sockstack§ion=detail" target="__blank">https://ckai.xyz</a><br><br></p> <article class="baidu_pl"><div id="article_content" class="article_content clearfix"> <link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/kdoc_html_views-1a98987dfd.css"> <link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/ck_htmledit_views-25cebea3f9.css"> <div id="content_views" class="markdown_views prism-atom-one-light"> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path></svg><blockquote> <p>2023 年 3 月 23 日,NVIDIA GTC 开发者大会阿里云开发者社区观看入口正式开放,阿里云高级技术专家李伟男、阿里云弹性计算产品专家宋迪共同带来了题为《基于阿里云 eRDMA 的 GPU 实例大幅提升多机训练性能》的分享,本文基于演讲内容整理而成。</p> </blockquote> <p><strong>eRDMA 基于 RDMA 技术研发,RDMA 具有的特性和优势在 eRDMA 上同样适用。</strong><br> <img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/2ec887ad947440919950efd417be4b9b.jpeg#pic_center" alt="在这里插入图片描述"></p> <p>最初,RDMA 技术的出现以及被广泛应用,得益于其相较于传统的 TCP 网络通信协议有着明显的优势。数据从内存到网卡的搬移不再需要 CPU 的持续介入,而是通过集成在物理网卡中的 DMA 引擎,通过直接内存访问的方式完成数据搬移。同时,在搬移过程中避免了频繁的用户态和内核态切换,由应用层直接触发物理网卡上的 DMA 访问,从而大幅节约了 CPU 的开销,降低了延时,最终大幅提升了通讯效率。</p> <p>在服务器节点间的数据通信过程中,CPU 仅负责指定 RDMA 通信的源及目的物理地址,并触发通信动作,其余工作全部由物理网卡上的 DMA 引擎负责完成。</p> <p>相比传统的 TCP 通信,近端及远端的物理网卡通过协作可以直接将本地的内存数据写入远端的内存地址空间,或从远端的物理内存空间读取数据到本地内存,待数据传输全部完成后,再通知 CPU 进行下一步动作,将数据传输和计算分开,从而实现高效的并行计算处理。<br> <img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/e65e56675644431480c4acddeeae09d3.jpeg#pic_center" alt="在这里插入图片描述"></p> <p><strong>RDMA 高效处理分布式节点间的内存数据搬移,其本质是 DMA 的访问。</strong></p> <p>DMA 引擎同样可以对设备地址进行直接访问。在异构计算的应用场景中,服务器节点间同步的不仅是内存的数据,还有 GPU 显存的数据。GDR 便是为了实现物理绑卡在服务节点间直接搬移 GPU 显存的数据而实现。</p> <p>为了支持该功能,NVIDIA 的 GPU 驱动提供了一套标准接口,用于获取应用层申请的显存对应的物理地址。物理网卡可以使用这一物理地址完成 DMA 的直接访问。该部分详细的实现以及应用实例代码可以在 NVIDIA 的官网上获取到。</p> <p>GPU 作为标准的 PCI 设备,根据物理服务器的硬件拓扑结构不同,与 RDMA 设备通信的链路也会有很大不同。如上图所示,展示了不同的硬件拓扑结构下 GDR 通信的链路以及效率的对比。</p> <p>RDMA 设备与上图中的 GPU1 连接在同一 PCIeS Witch 下,两者之间的通信通过 PCIe Switch 即可完成。该种类型被称为 PIX 通信,通讯效率最好。</p> <p>而 RDMA 设备和 GPU2 位于两个不同的 Root Complex 下,两者之间的通信需要穿过两个 PCIe Switch 以及两个 RC。该种类型的通信被称为 PHB,通讯效率会受到影响。</p> <p>RDMA 设备与 GPU3 的距离更远,它位于两个 CPU 的 socket 下,两者之间的通信需要穿过 CPU 之间的 UPI 通道才能完成。该种通信的类型被命名为 SYS,效率最差。</p> <p>在一些 CPU 架构上能够支持这一级别的 GDR,但在实际使用中需要根据实际应用情况进行权衡,选择打开或关闭。<br> <img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/430c3de803f440e687c84545177b64aa.jpeg#pic_center" alt="在这里插入图片描述"></p> <p><strong>eRDMA 技术由阿里云在 2021 年云栖大会发布,与 RDMA 生态完全兼容。在 RDMA 环境中运行的应用层代码可实现无修改、直接迁移至 eRDMA 环境中。</strong></p> <p>另外,其基于阿里云弹性 VPC 的特点,可以支持更高的弹性扩展,同时可以复用 VPC 网络的租户隔离,实现数据通信安全。在 VPC 网络覆盖的区域均可以实现 eRDMA 组网,突破集群限制,实现近 10 万级的超大规模组网。</p> <p>eRDMA 基于第四代神龙 CIPU,带宽可达 200G,可以通过扩展硬件的方式实现更高的带宽,极限时延可低至 5us,吞吐量可达到 30M 数据包/s。</p> <p><img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/36a4a086ebbb4a528428e5860da7db95.jpeg#pic_center" alt="在这里插入图片描述"></p> <p><strong>如何在阿里云弹性计算实例中激活 eRDMA?</strong></p> <p>可以通过弹性 RDMA 网卡(ERI)实现。它可以绑定到 ECS 实例的虚拟网卡,但必须依附于弹性网卡,在弹性网卡的基础上开启 RDMA 的功能。</p> <p>ERI 复用了弹性网卡所属的网络(VPC),无需改变业务组网,可在原有的网络上使用 RDMA 功能,体验 RDMA 带来的超低延时。在基于第四代神龙架构的阿里云服务器上均可使用 eRDMA。</p> <p>eRDMA 基于阿里云的 VPC 网络,因此不论是纯粹的 CPU 服务器还 GPU 服务器,均可以通过添加 eRDMA 设备激活 eRDMA 功能。现有业务可以平滑进行升级,完全继承阿里云的用户界面。</p> <p>上图右侧展示了两种视角,下方为神龙底层视角,上方为用户侧视角。</p> <p>在神龙底层的实现上,它由神龙 CIPU 模拟出 VirtIO 网卡设备和 ERI 设备,通过神龙的虚拟化层分配给弹性服务器。在用户视角有两个设备,分别为 VirtIO 和 ERI,底层物理设备的访问对用户完全透明,用户仅需要安装阿里云提供的 eRDMA 驱动即可使用。<br> <img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/cc0c73a7f5c44ba6a512dddc72b7a423.jpeg#pic_center" alt="在这里插入图片描述"></p> <p><strong>eRDMA 在技术上具有哪些优势?</strong></p> <p>首先,在 eRDMA 的实现中,使用了自研的拥塞控制算法,能够容忍 VPC 网络中的传输质量变化,比如延时的抖动、丢包问题,在有损的网络环境中依然能够拥有良好的性能表现。</p> <p>另外,相比 IB 以及 RoCE 网络,其基础设施无需重新部署,也不需要进行特有的网络交换机配置。它依托于阿里云的 VPC 网络,可以在全地域任意扩容部署,用户可以按需购买,弹性伸缩,确保资源高效利用。更重要的是,它继承了云服务器高可用性的特点,可以实现任意节点的故障迁移,保障业务快速恢复。</p> <p>另外,结合阿里云控制台全面的性能监控工具,可以实现快速诊断网络异常,或根据性能监控的分析优化业务通讯模型,提升性能。</p> <p>eRDMA 全面兼容 RDMA 的生态以及 Verbs 接口,上图右侧展示了当前 eRDMA 能够支持的 Verbs Opcode,覆盖了 RDMA 的主要操作代码。但同时,需要注意,eRDMA 基于可靠连接服务(RC)实现的通信,同时支持代外以及 CM 两种建联方式,用户可以根据自己的应用进行选择。<br> <img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/b774d361380145f19f0b24f9b711732c.jpeg#pic_center" alt="在这里插入图片描述"></p> <p>阿里云推出了第一款支持 eRDMA 的 GPU 实例 ebmgn7ex,它是 ebmgn7e 的升级版,搭配了 8 张 NVIDIA Ampere 架构的 GPU,GPU 间通过 NVLink 互联。整机内嵌两张 eRDMA 网卡,分别挂载在两个 CPU Socket 上,实现均衡的节点间数据通道。每 4 张 GPU 卡共用一个 eRDMA 设备,共用最大 100G 的 eRDMA 网络带宽。</p> <p>与现有的弹性计算实例不同,ebmgn7ex 使用的 eRDMA、EBS 存储以及 VPC 网络均为共享带宽模式。在没有存储及 VPC 网络流量的情况下,eRDMA 可以使用最大 200G 带宽;存储或 VPC 网络存在流量时,会按照权重在不同的数据流量间进行带宽分配。但神龙 CIPU 在底层可以保证存储的性能,可以使得带宽的利用更高效,充分释放神龙 CIPU 的效能。<br> <img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/66b331c2b08c49beb64583138fc72555.jpeg#pic_center" alt="在这里插入图片描述"></p> <p>主流的 AI 框架底层通过多种不同的通讯后端进行多机或多卡通信等,几大集合通讯库比如 OpenMPI、Gloo、NCCL 对各种集合通信的模式和算法都有各自的实现。</p> <p>NCCO NVIDIA 针对 DPU 实现了一套开源通讯库,可以通过 PCIe 和 NVLink 等通道,实现高速的机器间或 GPU 卡间的互联。借助软硬件协同,在性能优化上有得天独厚的优势,也是主流 AI 框架的推荐通讯后端。eRDMA 对 NCCO 提供了很好的支持,可以做到无修改使用开源的 NCCO 通讯库,可以使能底层的 eRDMA 设备。相比较传统的 TCP 通信有更低的延时实现更高的吞吐能力,但可以做到与 RDMA 通信链路相当的性能。</p> <p>另外,相比较 RDMA,它更适合在云上大规模部署,为用户提供超高性价比、普惠的大带宽通信链路解决方案。<br> <img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/12ed6fadb65f4850bb871b0f5676e0e3.jpeg#pic_center" alt="在这里插入图片描述"></p> <p>ebmgn7ex 相比于 ebmgn7e,采用同样的 CPU 和 GPU 配置,但底层采用了第四代神龙 CIPU,将整机的网络带宽从 65G 提升至 200G,提升幅度接近 200%。同时,通过 eRDMA 技术使得通信延迟相比于 VPC 网络降低了 80%。</p> <p>我们选择了几个典型的多机训练应用场景对两者进行了对比测试。ebmgn7ex 整体性能提升大约 30%,尤其在对时延以及带宽强依赖的场景中,比如 vgg16、语音变换以及 mae 等,性能提升超过 40%。与此同时,在用户成本接近的基础上,ebmgn7ex 显然展示出了更好的性价比。初步估计,根据用户的业务场景,可实现 20%-30% 的成本优化。<br> <img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/b5037e338131498cbbab8d526476b17d.jpeg#pic_center" alt="在这里插入图片描述"></p> <p>阿里云在 2022 年发布了 CIPU 云处理单元。如今,在阿里云上,云服务已经远远不是将一台服务器通过虚拟化分割资源后提供给用户,而是通过 CIPU 智能调度和管理能力,将 CIPU、GPU 存储网络等分拆为不同的资源池,根据用户的需求灵活地提供相应的服务。</p> <p>由于存储网络和计算资源相互独立,在使用计算服务时,几类资源都可以根据用户的需求进行动态调整。比如 CPU 的核数、挂载 ESSD 数据盘的容量、网络带宽等,都可以根据业务对性能的需求而变化,相对于自建 IDC 提供了极大的弹性。基于 CIPU,我们做了两件事:</p> <p>第一,将软件硬件化。将原来的虚拟化软件、网络传输、可信计算等功能通过 CIPU 的硬件加速来实现,将云软件功能从服务器的 CPU 内存里解放出来,让计算资源池独立地提供服务。通过软件硬件化也提高了虚拟化和网络传输等功能的性能。</p> <p>第二,硬件软件化。通过软件定义硬件的方式,在 CPU 上提供了原本由硬件才能提供的 RDMA 功能。<br> <img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/02057b4324734546b839e02722167ac2.jpeg#pic_center" alt="在这里插入图片描述"></p> <p>当前,支持 RDMA 功能的主要解决方案有三种,分别为 IB、RoCE 以及 iWARP。CIPU 即通过软件定义网络的方式,基于 iWARP 协议提供 RDMA 功能。</p> <p>市面上采用 iWARP 协议的方案并不多,原因在于 iWARP 协议基于 TCP 传输,相较于 RoCE 和 IB,需要大量内存访问,在大型网络中会影响服务器的 CPU 性能。并且由于采用了通用的 TCP/IP 网络设施,无法实现对 RDMA 传输的监控,在控制拥塞等方面也存在问题。</p> <p>然而,阿里云采用了 CIPU,通过软件订阅的方式,实现了对网络数据的拥塞控制和流量管理。同时,CIPU 将原来网络和虚拟化层上的内存和计算工作 offload 到 CIPU 的处理器上,不会影响计算节点的性能。</p> <p><img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/caa38e8133fe47caa749b9400dbc4db5.jpeg#pic_center" alt="在这里插入图片描述"></p> <p>通过以上方式,CIPU 规避了 iWARP 的缺点,以 TCP/IPoverlay 的方式组网。原先阿里云以 RoCE 协议提供的计算产品,首先需要一套 TCPoverlay 来做 VPC 网络,另外需要再组一套 RoCE 来进行 RDMA 的数据传输。eRDMA 相较于原来的方案,将 RDMA 合并至 VPC 网络里,整个拓扑变得非常简单便捷。</p> <p>阿里云的网络存储计算资源都连接在 VPC 网络里,通过 CIPU,可以让 AZ 内所有资源都通过 RDMA 来进行数据的传输。传统的 RoCE、IB 网络需要独立新建专门的机房,机房建好后网络拓扑难以改变。而 eRDMA 实例无需新建机房,因此在机房成本方面相较于 RoCE 网络的方式有很大降低,极具性价比。</p> <p>另外,CIPU 软件定义硬件可以实现弹性网络,因此 eRDMA 的计算集群无需额外的网络配置即可在 overlay 类上链接 AZ 里所有资源。只要是部署于单一 AZ 的资源,都可以被拉起提供给同一个计算资源集群使用,弹性能力大幅增强。同时,eRDMA 基于通用计算网络,兼容性非常好,可以兼容几乎所有 API。<br> <img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/e145afd36e1f4f81a262860e4884e4b5.jpeg#pic_center" alt="在这里插入图片描述"></p> <p>正由于 eRDMA 能够让 AZ 里几乎任意规模的计算资源汇合成为独立的计算集群,因此它非常适合于搭建 AI 训练集群。基于 eRDMA 协议,该实例采用了 ICL 处理器,每一台机器可以通过 eRDMA 的 200G 网络进行互联,在可用区内申请的所有此类实例,互相之间都可以实现 RDMA 传输。<br> <img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/a8bf7a821567421fb3ab300038b5c698.jpeg#pic_center" alt="在这里插入图片描述"></p> <p>需要特别说明,云上提供资源时一般通过虚拟化层,算力在虚拟化层会有一定的损耗,而阿里云采用 CIPU 提供的裸金属实例则有所不同。实例前面的 EBM 三个字母代表了这一台裸金属实例整机的物理资源均通过 CIPU 直接透传给用户,中间没有虚拟化层的损耗,在 CIPU 的云管理加持下,用户可以获得一台完整的物理机能力。</p> <p>该实例的价格相比于此前 64G 网络带宽的裸金属实例 ebmgn7e 反而有所降低,这正是 CIPU 对网络的兼容性带来的高性价比红利。同时,并非只有训练集群业务才能选择该实例,一些通用的单机训练以及推理业务也可以选择。比如当前非常火的 ChatGPT,ChatGPT 模型在推理时需要 500G 以上的显存,因此该实例也是大模型推理的最优选择。</p> <p>当前在云上可以通过邀测链接申请使用 eRDMA 实例。申请实例时的步骤选项也于此前有所不同。</p> <p>第一,在操作系统选择时新增了自动安装 eRDMA 驱动选项,建议勾选,勾选后在实例内可以自动安装 eRDMA 的网络驱动;</p> <p>第二,在网络配置方面,ebmgn7ex 需要选择两个固定的弹性网卡,该两个弹性网卡不可释放,每个网卡可以提供 100G 的网络带宽,在勾选上右侧的 eRDMA 后,即可支持 RDMA 传输。若在使用或测试中某些应用出现异常,也可以将勾选取消,此时实例的网络带宽仍然不变,但是仅支持 VPC 网络连接实例。<br> <img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/83f690445397405a95cc93585b9e424e.jpeg#pic_center" alt="在这里插入图片描述"></p> <p>阿里云将会逐步推出更多产品来支持 eRDMA。ebmgn7ex 实例也会在阿里云上形成完整的生态,通过基于 eRDMA 互联,用户在集群中可以接入 ECS 通用计算实例,可以接入支持 eRDMA 的 CPFS 分布式存储来获得更低延时。并且由于裸金属与 CPFS 实现了 RDMA 传输,因此借助 GPU Direct Storage 功能,可以在快速获取训练数据时节省更多 NC 的资源。</p> <p>同时,公共云上原有的安全功能以及阿里云在人工智能方面提供的各类 PaaS 服务,比如 ACK 容器服务、serverless 计算服务、PAI 平台的所有功能也都可以运行在基于 eRDMA 的实例上。<br> <img referrerpolicy="no-referrer" src="https://img-blog.csdnimg.cn/4c2025fe9baf4da9b8469a55ba91615f.jpeg#pic_center" alt="在这里插入图片描述"></p> <p>使用阿里云支持 eRDMA 的实例用户,可以获得极高的计算集群弹性能力,以分钟级的极快速度在云上搭建 RDMA 训练集群,并可根据需求进行弹性扩容,将极大节省训练业务的时间。</p> <p>eRDMA 具有非常高的带宽,所有支持 eRDMA 的实例可以以数百 G 的带宽进行 RDMA 的低延时通信,并且不会增加成本,节省了搭建机房的费用。更重要的是,公共云的生态可以提供非常优质的计算服务,比如基于业务实现弹性伸缩、oss、CPFS 等各类存储。</p> <p>eRDMA 还提供方便的管理能力,以及公共云基于神农架构提供的针对计算、存储、网络的稳定性保障,极高的稳定性也节省了运维和维护成本。</p> <p>在阿里云,the more you buy,the more you save。</p> <p>点击文末“阅读原文”即可观看完整视频。</p> <p>高级技术专家详解:基于阿里云 eRDMA 的 GPU 实例如何大幅提升多机训练性能</p> </div> <link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/markdown_views-0407448025.css" rel="stylesheet"> <link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/style-c216769e99.css" rel="stylesheet"> </div> <div id="treeSkill"></div> <div id="blogExtensionBox" style="width:400px;margin:auto;margin-top:12px" class="blog-extension-box"></div> </article>
高级技术专家详解:基于阿里云 eRDMA 的 GPU 实例如何大幅提升多机训练性能
作者
sockstack
许可协议
CC BY 4.0
发布于
2024-02-27
修改于
2025-04-03
上一篇:软件:常用 Linux 软件汇总,值得收藏
下一篇:OpenAI - tiktoken ⏳ | fast BPE tokeniser
尚未登录
登录 / 注册
文章分类
博客重构之路
5
Spring Boot简单入门
4
k8s 入门教程
0
MySQL 知识
1
NSQ 消息队列
0
ThinkPHP5 源码分析
5
使用 Docker 从零开始搭建私人代码仓库
3
日常开发汇总
4
标签列表
springboot
hyperf
swoole
webman
php
多线程
数据结构
docker
k8s
thinkphp
mysql
tailwindcss
flowbite
css
前端