基于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的云服务能力实践与探索​​​​​​​​​​​​​​

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿鹄工程项目管理系统源码:Spring Boot带来的快速开发与部署体验

随着企业规模的不断扩大和业务的快速发展,传统的工程项目管理方式已经无法满足现代企业的需求。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,企业需要借助先进的数字化技术进行转型。本文将介绍一款采用Spring CloudSpring BootMybat…

处理关于 React lazy 白屏的两种方案

这篇文章是今天在阅读 React 官方文档的时候看到的一个关于 处理 lazy 体验问题的小技巧,在这里记录一下 当我们使用 React.lazy 去懒加载一个路由组件,在不做任何其他处理的情况下从其他页面首次进入到这个懒加载的路由页面时,肯定会出现白屏…

蓝桥杯单片机速成6-DS1302

目录 一、电路图 二、底层驱动 三、实际应用 四、时序 一、电路图 上图是寄存器地址定义,时分秒,年月日等等 DS1302有自己的时钟线SCLK,不会跟单总线一样因为没有自己的时钟线而导致温度读不出来 CH:时钟静止,置1时…

2024最新软件测试【测试理论+ 抓包与网络协议】面试题(内附答案)

一、测试理论 3.1 你们原来项目的测试流程是怎么样的? 我们的测试流程主要有三个阶段:需求了解分析、测试准备、测试执行。 1、需求了解分析阶段 我们的 SE 会把需求文档给我们自己先去了解一到两天这样,之后我们会有一个需求澄清会议, …

【Linux】防火墙iptables详解

目录 一、防护墙概述 二、防火墙 2.1名词 2.2使用规则 2.3表与链 2.3.1简介 2.3.2每个表说明 1)filter表 2)nat表 2.4环境的配置 2.5iptables的命令参数 2.6 配置filter表规则 2.6.1备份与恢复 2.6.2案例1:禁止访问22端口 2.6.3案例2&…

算法——逆波兰式

http://t.csdnimg.cn/Wg8vu 逆波兰式思路: 对于每个元素,它检查是否是一个操作符(“”、“-”、“*” 或 “/”)。如果是,它就从栈中弹出两个元素,执行相应的操作,然后将结果推回到栈中。如果…

c++不同数据类型的大小

C++提供了各种基本数据类型,以及一些复合数据类型,如数组、结构体、枚举和类等。以下是C++中常见的数据类型: ChatGPT ChatGPT C++是一种静态类型的编程语言,意味着在编写代码时必须显式地声明每个变量的数据类型。C++提供了各种基本数据类型,以及一些复合数据类型,如数…

【微信小程序】流量主-激励视频(激励广告)下发策略,每天三次免费体验,然后再次点击触发激励视频,当日不再触发。

如题: 允许用户有三次体验效果,然后弹出激励视频弹窗,之后当日不再弹出。 体验小程序: /*** 判断当前项目当天是否点击超过3次,触发广告效果。* 若,当天低于三次,则新增,若高于…

图片标注编辑平台搭建系列教程(4)——fabric几何定制渲染

背景 标注的几何,有时需要一些定制化的渲染样式,例如,线中间展示箭头,表示方向。本期教程教大家如何实现fabric几何定制化渲染。 带箭头的线 fabric提供了一些原生的几何,例如Point、Polyline、Polygon。同时提供了…

前端学习<三>CSS进阶——03-网页设计和开发中,那些困扰大神的关于字体的知识

前言 我周围的码农当中,有很多是技术大神,却常常被字体这种简单的东西所困扰。 这篇文章,我们来讲一讲关于字体的常识。这些常识所涉及到的问题,有很强的可操作性,都是在实际业务中真实遇到的,都是需要开…

软件资源分享六:EPLAN Electric P8 2024 | Eplan 2024 中文版软件介绍+保姆级安装教程

原文链接:安装激活教程 EPLAN Electric P8 2024 | Eplan 2024 中文版软件介绍安装教程 EPLAN 2024是一款电气设计软件,它可以用于自动化系统的设计、文档编制和维护。EPLAN可以对电气设计的各个方面进行完整的支持,包括电气控制系统、机械设…

Spring 整合 Log4j2日志框架

1. Log4j2日志概述 在项目开发中,日志十分的重要,不管是记录运行情况还是定位线上问题,都离不开对日志的分析。日志记录了系统行为的时间、地点、状态等相关信息,能够帮助我们了解并监控系统状态,在发生错误或者接近某…

【JavaSE】一维数组和二维数组详解

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 一维数组 基本语法 初始化 遍历和打印 数组是引用型变量 基本类型变量与引用类型变量的区别 null 数组传参和返回 总结 二维数组 基本语法 初始化 遍历和打印 一维数组…

C语言 结构体

目录 1.结构体的声明 1.1结构体是什么? 1.2声明 1.3结构成员的类型 1.4结构体变量的定义和初始化 (1)定义 (2)初始化 2.结构体成员的访问 3.结构体传参 4.结语 1.结构体的声明 1.1结构体是什么? 结…

Android Drawable - Shape Drawable使用详解

shape图形 –简单介绍shape图形 –如何画?shape图形 –参数详细解析 shape图形简单介绍 用xml实现一些形状图形, 或则颜色渐变效果, 相比PNG图片, 占用空间更小; 相比自定义View, 实现起来更加简单. 怎么画? 在res/drawable/目录下建一个XML资源文件Shape图片语法相对复杂…

c++如何从txt文件读取/保存数据

1、读取 #include <fstream> #include <iostream> #include <string>CString type_str[20];std::ifstream file("ecat_type.txt"); // 打开文件第一行个数&#xff0c;第二行开始类型if (!file.is_open()) {//打开失败for(int i0;i<17;i){type…

代码随想录Day37

Day 37 贪心算法 Part06 今日任务 738.单调递增的数字968.监控二叉树 代码实现 738.单调递增的数字 做了这么多贪心的题&#xff0c;这是唯一一道自己写出来的&#xff0c;就是思路虽然一开始就对了&#xff0c;感觉没那么难&#xff0c;但是代码还是比较复杂&#xff0c;用…

论文精读--GPT4

现有的所有模型都无法做到在线学习&#xff0c;能力有限&#xff0c;而让大模型拥有一个tools工具库&#xff0c;则可以使大模型变成一个交互式的工具去协调调用API完成任务&#xff0c;同时GPT4还联网了&#xff0c;可以不断地更新自己的知识库 多模态模型&#xff0c;接受文…

单V及多V感知在自动驾驶在恶劣环境条件下的感知提升方案

单V及多V感知在自动驾驶在恶劣环境条件下的感知提升方案 附赠自动驾驶学习资料和量产经验&#xff1a;链接 自动驾驶中的视觉感知是车辆在不同交通条件下安全、可持续地行驶的关键部分。然而&#xff0c;在大雨和雾霾等恶劣天气下&#xff0c;视觉感知性能受到多种降级效应的极…

Pygame基础9-射击

简介 玩家用鼠标控制飞机&#xff08;白色方块&#xff09;移动&#xff0c;按下鼠标后&#xff0c;玩家所在位置出现子弹&#xff0c;子弹匀速向右飞行。 代码 没有什么新的东西&#xff0c;使用两个精灵类表示玩家和子弹。 有一个细节需要注意&#xff0c;当子弹飞出屏幕…