基于RDMA的云服务能力实践与探索

01   背景   

      随着基于大数据大模型构建的数据系统越来越有商业价值,机器学习的玩家也越来越多,数据量越来越大。为解决海量数据在服务器之间的同步效率问题,RDMA(Remote Direct Memory Access) 技术逐渐走进了网络技术人员的视野。RDMA为什么能够成为机器学习中网络加速的一个炙手可热的技术呢?本文将给你一一解答,同时带来详细的干货分享。

02   传统TCP通信的痛点   

      TCP (Transmission Control Protocol )是网络协议族中的一个主要协议,为用户提供可靠、有序、错误检测的字节流传输服务。其来源于20世纪60年代美国国防部主导开发的一个网络项目ARPANET(Advanced Research Project Agency Net),当时运行的物理链路带宽只有几Mbps(Megabits per second),如今物理带宽已达到几十或几百Gbps(Gigabytes per second )。其已不能很好的适用于当前的高速网络环境。

      数据中心服务器广泛采用Linux操作系统,其收发报文流程如下图所示。

图片

图1 Linux内核收发报文流程

      报文接收过程主要耗时在于中断带来的任务栈切换,两次的内存复制,标准冗长的内核协议栈程序等操作。目前这一架构已经无法满足高性能计算、深度神经网络等业务场景下的时延和网络带宽要求。网络带宽和时延不提高,会导致CPU (Central Processing Unit)、GPU(Graphics Processing Unit)因为等待数据而空闲,算力的升级扩容并不能带来业务加速增效。

     RDMA技术致力于提供一个无损,超低时延,超高吞吐量的网络,进而提高CPU/GPU效能,能很好的解决深度神经网络学习和AI(Artificial Intelligence)训练中的带宽和时延问题。因而,RDMA网络是目前大模型训练平台的首选技术。

03   RDMA技术介绍   

3.1 RDMA技术介绍

      RDMA扩展网卡的能力,不需要CPU参与,就可以实现在两台通信的主机间完成内存数据复制操作。RDMA提供了三种技术规范实现方式,分别是IB (Infiniband), iWARP (Internet Wide Area RDMA Protocol) 和RoCE (RDMA over Converged Ethernet)。三种实现都支持IBTA (InfiniBand Trade Association) 制定的RDMA Verbs原语和数据类型,提供统一的业务编程接口供用户使用,达到业务无缝切换。

      IB需要专用的IB网卡和IB交换机。性能优,但网卡和交换机的价格昂贵,兼容性差。IWARP 技术栈需要通用以太网交换机和支持iWARP功能的以太网卡。报文依赖TCP连接,TCP连接需要占用内核资源,市场认可度低于RoCE。RoCE技术栈只需要通用以太网网卡和交换机,利用PFC(Priority-based Flow Control )和ECN (Explicit Congestion Notification) 拥塞控制算法实现无损传输。其综合性能较好,兼容性较优,价格也很普惠。RoCE市场认可度很高,用户可以根据自己的使用场景和实际需求选择对应的产品。

3.2 RoCE技术说明 

     RoCE最新版本为RoCEv2,IETF标准规定采用UDP (User Datagram Protocol) 4791端口来标识RoCEv2数据包。RoCEv1只支持二层MAC(Media Access Control)互访,RoCEv2支持三层IP访问,实现了报文的可路由功能,打破了业务的二层局域网部署限制。RoCEv2也被称作RRoCE ( Routable RoCE),其重新设计了拥塞控制算法。

      以太网络转发可以根据UDP的源端口做负载均衡,提高吞吐量。RoCEv2用UDP和IP 头部信息实现了原IB的网络层功能。RoCEv2 同时支持IPv4和IPv6。

图片

图2 RoCEv2 报文说明

3.3 RoCE性能

  • TCP vs RoCE

      由于业务需要使用RDMA加速的RPC (Remote Procedure Call )功能,选择Apache 社区bRPC( better Remote Procedure Call )进行时延和带宽测试评价,TCP和RoCEv2场景下的数据如图3所示。结果显示RDMA在带宽和时延方面要明显高于TCP网络,带宽几乎可以达原来的两倍。

图片

图3 TCP vs RoCE 带宽时延对比

  • RoCE vs IB

      由于最近大模型应用CHAT GPT比较流行,越来越多的厂商开始进行大模型训练的研究,推升了RoCE网络的需求,我们探索用RoCE网络代替IB,为GPU训练的提供合理的加速增效解决方案。为此对RoCE和IB的性能进行了测试验证对比。RoCE(单卡最大100Gbits/s) 单队列可达92.8Gbits/s ,16队列可达196Gbits/s (两个100G卡组合成Bond接口)。IB带宽(单卡最大200Gbits/s) 单队列可以达到 185Gbits/s, 16个队列测试可达196Gbits/s。时延接近,最短时延在2us左右。RoCE方案更加具有性价比和大规模部署应用前景。

图片

图4 RoCE vs IB 带宽对比

04

   OPPO云RDMA能力建设   

4.1 RDMA资源调度平台

      云原生时代,从一开始就规划了RDMA的弹性伸缩能力,用户可以根据业务需要申请RDMA卡,用于业务加速。系统主要组件图如图5所示。

图片

图5 资源调度架构图

      下面从基础设虚拟化层、无损网络拥塞控制算法、资源管理与调度、智能业务运营系统四个维度说明RDMA云化所做的工作。

  • 基础设施虚拟化层

      将一个物理网卡虚拟成若干个相互独立的子卡,用户可以根据需要申请一个或者多个RDMA卡。同时网络虚拟化组件可将节点上可用RDMA子卡数目上报给系统的调度器。调度器根据任务请求进行分配和调度。容器业务可以使用RDMA业务。

  • 无损网络拥塞控制算法

      在服务器和交换机对RDMA流量进行标记,即PFC和ECN的方式来进行拥塞控制,服务器上通过DSCP(Differentiated Services Code Point )位标识RDMA业务流,交换机根据DSCP进行流分类、拥塞管理和死锁检测。基础网络架构采用CLOS架构建设,非阻塞多交换网,网络保证足够高的加速比。     

  • 资源管理与调度

      数字化管理RoCE和IB等可用的网卡类型及可用资源,系统根据用户的业务申请及资源请求,灵活调度计算实例到对应计算节点上。

  • 智能业务运营系统

      对RDMA的网卡和交换机进行监控,实时了解系统资源使用率和健康情况,及时介入业务扩容和故障处理等紧急情况。

   4.2 ORPC业务   

4.2.1 ORPC设计

      虽然供应商提供了通用的开发接口,但这些接口针对特定的RDMA业务场景,如HPC,GPU训练等高性能计算领域,无法满足普通RPC业务的需求。RDMA技术涉及到底层专用硬件、通信协议、特有的Verbs接口及晦涩难懂的C语言等问题。业务用户自主开发基于RDMA的应用是有一定困难的。ORPC可以说做到了让用户业务无感知的平滑迁移到RoCE网络上来,用户只需要专注于业务研发,无需关注内核驱动适配,性能调优,软件版本兼容性等问题,实现真正的高效业务迁移。

      OPPO云平台开发集成了ORPC( Oppo Remote Procedure Call)应用,天然支持RoCE,帮助用户无缝切换到RDMA编程。ORPC同时提供TCP和RDMA通信能力,兼容TCP和RDMA模式,用户根据需要选择接入业务方式,如图6所示。其业务兼容性高,ORPC 同时开启TCP/RDMA,客户端根据自身情况,选择TCP/RDMA接入。ORPC能够灵活适配业务使用的特定版本的Protocolbuffer,gflags等中间件依赖库。

图片

图6  ORPC通信场景

      ORPC采用直接调用Verbs接口的方式进行业务开发,之所以没有使用社区的UCX(Unified Communication X)框架是因为多一次C库调用会产生对第三方产品的依赖,实际测试性能和稳定性没达到预期。第三方的RDMA_CM库在虚拟容器网络中的兼容性差,运行不够稳定,会发生系统崩溃。

      ORPC优先支持C++语言,后期计划推Golang版本的ORPC。

4.2.2 ORPC实践

实测ORPC在单流和多流场景下带宽提升都很明显。100G网卡可以测试到80-90G的样子。我们的推理、训练采用RoCE进行加速验证发现,RoCE可以显著提高升推理的性能,收益提升明显。对于其他被时延和带宽困扰的业务,可以尝试RoCE加速,相信会带来一定的收益。

图片

图7  ORPC 带宽对比图

  • 业务改造

      服务端默认同时工作在RDMA模式和TCP会话模式,用户可以通过参数设置工作方式,如果是RDMA方式,需要指定RDMA设备,如果不指定或者端口索引指定错误,会导致程序异常。ORPC建立会话接口只需要提供必要连接参数即可,应用程序逻辑无需更改。

1)服务端必选参数说明:

-rdma_device     说明使用的RDMA设备

-rdma_gid_index  RDMA设备的索引

-use_rdma     true 为rdma,默认tcp

-port 指定监听端口

2)客户端参数:

-rdma_device     说明使用的RDMA设备

-rdma_gid_index  RDMA设备的索引

-use_rdma     true 为rdma,默认tcp

  • 自动生成的roce yaml文件

apiVersion: v1kind: Podmetadata:  name: if-roce-test231  namespace: nethouse-testspec:  nodeName: 1x.x.x.231  containers:    - name: if-roce-test231      image: hub.x.y.z/inference/inference:rdma-1.0.0      resources:        limits:          devices.csp.io/rdma: "1"        requests:          devices.csp.io/rdma: "1"      volumeMounts:        - mountPath: /gx-infer          name: gx-infer  volumes:   - name: gx-infer     hostPath:       path : /home/service/var/data       type: Directory... ...
  • 容器运行命令

#docker run --net container:7a9bc59dd57afe8e91504ecefcdf720097fb919fc76a9aab7ba13ac265b93799 --privileged --device=/dev/infiniband/rdma_cm --device=/dev/infiniband/uverbs1 --name orpc ... hub.x.y.z/orpc-rdma/orpc-rdma-depy:v1.0

05    RDMA应用前景与展望      

      以RoCE为代表的RDMA技术正展示着令人兴奋的应用潜力。ORPC只是其中一个应用,实践收益得到了深度学习推理等应用的首肯。相信在不久的未来,RoCE承载的大模型训练平台会越来越成熟。同时NVMe over RoCE 也会逐步落地。

原文链接:  

基于RDMA的云服务能力实践与探索​​​​​​​​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/518681.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

yolov8多分支任务头训练

目前已知的yolov8可以针对多个任务进行单独训练,但是暂时还没有开放针对多个任务头同时进行训练的教程,本文章针对yolov8的多任务训练进行详细介绍。 先放上效果图: 三个任务,分别是目标检测、可行驶区域、车道线,具体步骤请往下看。 一、环境配置 从如下github下载代码…

Flutter Don‘t use ‘BuildContext‘s across async gaps.

Flutter提示Don‘t use ‘BuildContext‘s across async gaps.的解决办法—flutter里state的mounted属性

10-热点文章-定时计算

xxl-Job分布式任务调度 1 今日内容 1.1 需求分析 目前实现的思路:从数据库直接按照发布时间倒序查询 问题1: 如何访问量较大,直接查询数据库,压力较大 问题2: 新发布的文章会展示在前面,并不是热点文章 …

交叉验证(Cross-Validation)

交叉验证的基本概念 交叉验证通常用于评估机器学习模型在未知数据上的性能。它将数据集分成k个不同的子集,然后进行k次训练和验证。在每次迭代中,选择一个子集作为测试集,其余的子集作为训练集。这样,每个子集都用作过测试集&…

Debian安装1panel管理面板教程-最新

1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。 1Panel面板是一个强大的服务器管理工具,它通过提供一站式管理、易于使用的界面、高度的可定制性、安全可靠的性能、强大的扩展性以及活跃的社区支持,为用户提供了一个高效、便捷的管理解决方案…

华为云1核2G免费使用一年

个人用户专享云服务器、云数据库产品每天上午9:30开抢,其他产品每天0点开放领取,企业用户所有产品每天0点开放领取; 云产品体验名额有限,领完即止。详情:https://www.vpspick.com/vps/591.html 通用入门型 T6 云服务…

实验06_IPv6实验

目录 实验拓扑 实验需求 实验配置及其现象验证: (1)R1---R4的IPv6的地址配置,根据设备编码配置IPv6 (2)R6 通过无状态自动获取 IPv6 地址 (3)OSPFv3 配置,通过 OSPFv3 实现全网通(区域划分根据拓扑图) 实验拓扑 …

Linux存储的基本管理

实验环境: 系统里添加两块硬盘 ##1.设备识别## 设备接入系统后都是以文件的形式存在 设备文件名称: SATA/SAS/USB /dev/sda,/dev/sdb ##s SATA, dDISK a第几块 IDE /dev/hd0,/dev/hd1 ##h hard VIRTIO-BLOCK /de…

蓝桥杯(5):python动态规划DF[2:背包问题]

1 0-1背包介绍【每件物品只能拿1件或者不拿】 1.1 简介 贪心是不可以的!!! 1.2 状态 及状态转移 转移解释:要么不选 则上一个直接转移过来【dp[i-1][j]】,要么是选这个之后体积为j 则上一个对应的就是【dp[i-1][j-wi]…

Vue 样式技巧总结与整理[中级局]

SFC(单文件组件)由 3 个不同的实体组成:模板、脚本和样式。三者都很重要,但后者往往被忽视,即使它可能变得复杂,且经常导致挫折和 bug。 更好的理解可以改善代码审查并减少调试时间。 这里有 7 个奇技淫巧…

CSS设置网页颜色

目录 前言: 1.颜色名字: 2.十六进制码: 3.RGB: 4.RGBA: 5.HSL: 1.hue: 2.saturation: 3.lightness: 6.HSLA: 前言: 我们在电脑显示器&…

高血压的常见症状,你是否了解并警惕?

高血压是一种慢性心血管疾病,它的形成和发展与很多种因素密切相关。导致高血压的重要因素之一就是不良的生活饮食习惯。 高血压严重危害着人的心脏、肾脏、大脑等这些人体重要的器官,会容易带来心脏病、肾功能衰竭等一系列疾病。今天我在来为大家讲解一…

CorelDRAW2024序列号破解版下载以及CorelDRAW新功能介绍

CorelDRAW Graphics Suite 2024破解版介绍 CorelDRAW Graphics Suite 2024 破解版是领先的专业图形设计软件套件,旨在提供多个精心设计的工具和丰富的功能,轻松提高您的技能睡哦平,您可以更好的完成矢量插图、完美的布局、高级的照片编辑和高…

Jeecg commonController 任意文件上传漏洞复现

0x01 产品简介 Jeecg(J2EE Code Generation)是一款基于代码生成器的低代码开发平台,使用JEECG可以简单快速地开发出企业级的Web应用系统。 0x02 漏洞概述 JEECG(J2EE Code Generation) 是开源的代码生成平台,目前官方已停止维护。由于 /api 接口鉴权时未过滤路径遍历,攻…

中高级前端? 这些一元运算符,你真的搞清楚了吗

前言 一元运算符,不太起眼,作用很大,请别忽视她! 走近她,爱上她! 定义 只需要一个操作数的运算符称为一元运算符。 还是代码容易懂: 1 // 一个操作数1 2 // 两个操作数一元运算符清单 运…

基于Springboot的学校防疫物资管理平台(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的学校防疫物资管理平台(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系…

安装typora 免费版(beta版)

前言 typora 2021年11 月 23日后,推出付费的正式版本。不想花钱购买,除了破解脚本,还有其他的办法吗? 程序下载 答案是有的。可以安装免费的Typora Beta 版本,该旧版本基本的功能一应俱全,应付轻度的mar…

若依自带vue-cropper上传图片(可旋转、缩放)

2024.4.4今天我学习了如何使用若依的vue-cropper上传图片组件,在工作中遇到一个需求,需要对上传的图片进行旋转的操作,然后我先找到el-upload组件,使用之后发现它有一个自动上传和非自动上传的功能,是不是就可以通过非…

【React】useState为何返回数组而非对象

useState的正确语法如下 const [count, setCount] useState(0)通过打印可以看到useState返回一个数组,那么为何不返回对象呢 涉及到数组与对象间解构方式的差异 数组的解构:根据索引 const [a,,b] [1,2,3] console.log(a) // 1 console.log(b) // 3…

CentOS7安装MySQL8.0.28(持续)

第一步 :下载mysql MySQL https://www.mysql.com/