技术改变AI发展:RDMA能优化吗?GDR性能提升方案(GPU底层技术系列二)

本文涉及的产品
无影云电脑企业版,4核8GB 120小时 1个月
无影云电脑个人版,1个月黄金款+200核时
资源编排,不限时长
简介: 随着人工智能(AI)的迅速发展,越来越多的应用需要巨大的GPU计算资源。GPUDirect RDMA 是 Kepler 级 GPU 和 CUDA 5.0 中引入的一项技术,可以让使用pcie标准的gpu和第三方设备进行直接的数据交换,而不涉及CPU。

背景

GPUDirect RDMA 是 Kepler 级 GPU 和 CUDA 5.0 中引入的一项技术,可以让使用pcie标准的gpu和第三方设备进行直接的数据交换,而不涉及CPU。传统上,当数据需要在 GPU 和另一个设备之间传输时,数据必须通过 CPU,从而导致潜在的瓶颈并增加延迟。使用 GPUDirect,网络适配器和存储驱动器可以直接读写 GPU 内存,减少不必要的内存消耗,减少 CPU 开销并降低延迟,从而显著提高性能。

当前网络通信已经成为分布式机器学习的性能瓶颈,所以GDR技术的诞生对提高gpu通信性能至关重要

GDR技术相较之前技术的升级点

下图直观的展示了gdr技术的核心点所在,归纳来说就是GPUDirect RDMA 技术使得数据流绕过主机内存和 CPU,直接走pcie链路,降低了传输延迟,加快了数据交换速度,并可以减轻 CPU 负载,释放 CPU 的计算能力,同时也避免了数据在主机内存中的复制,大大提升了性能。

image.png



那么,GDR就一定比传统方式快吗?

前文介绍了gdr的优势,仿佛gdr对比传统方式有百利而无一害,那么gdr就一定快吗?我们可以看下如下拓扑结构

我们拥有了如下图所示的拓扑,gpu与网卡是跨rc的

image.png

这时候假设我们想要与对端机器进行一个通信,使能了gdr之后的整个路径流程如下图所示




首先是由网卡发起dma read的request,gpu收到之后再返回,网卡在收到dma read请求返回的数据接着rdma write到对端的网卡,再dma write到gpu中,由于gdr技术是基于pcie标准的,所以整体链路都是需要通过整个pcie链路来触达,于是我们单看一端,链路就会是一个dma_read request翻山越岭,翻过rc,翻过switch到达gpu然后再是tlp包翻山越岭翻越switch翻越rc再到网卡,这么长的链路会导致延迟增大

而如果不使用gdr,整个链路则会是gpu数据搬运到系统内存,再从系统内存搬运到网卡,整体是pipline起来的,这种情况下,由于pcie链路长导致延迟大,使用gdr性能是可能差于不使用gdr的。

那么gdr的合适使用场景是什么呢,比较推荐的场景就是gpu与第三方设备在同switch下的场景,这种情况下是存在性能增益的

长拓扑链路的可能改进方案

那么对于上面那种拓扑,是否存在方案可以将其性能提升呢?上面这种拓扑性能差的最大问题为整个pcie链路过长,如果能缩短链路就可以降低延迟,提升性能,于是我们把眼光放到了dma_read上

dma write的优势

如果将网卡发出的dma read替换成gpu发起的dma write,就可以降低一半的pcie链路长导致的时延,同时dma write相较于dma read也存在本身性能上的优势,对于read,pcie采用切分传输的方式,首先需求方发起一个读请求,完成器发送 ACK DLLP 来确认需求方的读取请求,接下来完成器再返回一个completion data,那个completion date会被切分到多个completion包里,而write则是单一包,于是就会导致read 的吞吐是低于write的吞吐的,举个例子,假设read rerquest是512bytes,而completion包大小为256 bytes,那么最大最理想的读吞吐则如下:

completion packets需要的数量为 512/256 = 2

没有 ECRC 的 3 dword TLP 标头的开销为 2*20=40bytes

最大吞吐为 512/(512 + 40)=92%

下图即为这个例子的一个示意图,read需要有两个completion包而write则是单一包即完成



以上的计算为读吞吐最大最理想的情况,pcie标准定义了read completion boundary (RCB) 参数,这个参数定义了一个read request被几个completion 包回复的边界,对于root complext来说,rcb的值是64bytes或者128bytes,对于其他pcie设备来说,则是128bytes。

对于没对齐的read request来说,吞吐数据还会更差。

所以改成dma write相较于dma read来说,有时延上的提升,同时也有吞吐上的提升。

优化后的方案整体链路就如下图所示



简单尝试

当前rdma协议是不支持这种方式的,所以就需要自己探索下是否可行,那么第一点就是gpu需要能主动对第三方设备发起dma write,我们知道gpu是可以对gpu进行dma write的,那么下面就做一个简单的试验



image.png

可以看到是可以跑通的,即gpu可以对非gpu地址主动dma write

可能遇到的问题

那么如果需要让gpu来发起dma write还有哪些方面需要考虑呢?

丢包问题

首先,之前由网卡发起是因为网卡这边可以计算到发包一定能成功再发起dma read请求,这样tlp包到了网卡就能顺畅发出去,不存在丢包风险,当前由gpu发起的话tlp包抵达网卡后,如果网卡接收到包就直接发出就存在丢包风险,所以需要有一个规避方案,网卡需要计算一定能发再发,于是就需要有一个缓存的地方将可能丢包的包先缓存起来

调度问题

其次,gpu直接dma write到网卡的tlp包可能不会被网卡所接收,需要在gpu和网卡间达成约定,gpu发的那些包网卡不进行丢弃而是调度管理起来发送到对端,那么就需要gpu这边能kick doorbell,通知网卡收到的dma数据包需要留下,有一种方案就是移植部分libverbs到gpu上面去跑,这样子gpu就可以与网卡进行直接通信

另一个就是需要封装一个api,应用发起rdma命令后,使之前让网卡发起dma read的流程变为让gpu发起dma write

总结

综上所示,通过以下方法,可以提升gdr性能:

  • 上层封装一个api可以使gpu发起dma write
  • 将libverbs移植部分到gpu上跑
  • gpu主动发起dma write
  • 网卡那边增加缓存,对于不是一定有把握发成功的包先进行缓存,当确定能发送以后再将包发送出去


当然,整个方案的落地也还有很多工作要做,需要修改rdma协议,同时在缓存与调度方面也需要很多工作进行,但收益也是显而易见的,能大大提升gdr的通用性与性能,使gdr在长topo链路时也变得可用。


我们更欢迎您分享您对阿里云产品的设想、对功能的建议或者各种吐槽,请扫描提交问卷并获得社区积分或精美礼品一份。https://survey.aliyun.com/apps/zhiliao/P4y44bm_8

【扫码填写上方调研问卷】

欢迎每位来到弹性计算的开发者们来反馈问题哦~

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
5天前
|
机器学习/深度学习 人工智能 弹性计算
阿里云AI服务器价格表_GPU服务器租赁费用_AI人工智能高性能计算推理
阿里云AI服务器提供多种配置,包括CPU+GPU、FPGA等,适用于人工智能、机器学习和深度学习等计算密集型任务。本文整理了阿里云GPU服务器的优惠价格,涵盖NVIDIA A10、V100、T4等型号,提供1个月、1年和1小时的收费明细。具体规格如A10卡GN7i、V100-16G卡GN6v等,适用于不同业务场景,详情见官方页面。
50 11
|
15天前
|
存储 Serverless 文件存储
AI 场景下,函数计算 GPU 实例模型存储最佳实践
当前,函数计算 FC 已被广泛应用在各种 AI 场景下,函数计算支持通过使用容器镜像部署 AI 推理应用,并且提供多种选项来访问训练好的模型。为了帮助开发者高效地在函数计算上部署 AI 推理应用,并快速解决不同场景下的模型存储选型问题,本文将对函数计算的 GPU 模型存储的优缺点及适用场景进行对比分析,以期为您的模型存储决策提供帮助。
|
2月前
|
存储 算法 数据挖掘
重磅发布 | OpenSearch推出向量检索GPU图算法方案并支持GPU规格售卖
OpenSearch向量检索版推出了面向企业开发者的GPU图算法方案(CAGRA算法),支持客户直接购买GPU规格节点,是国内首家支持GPU规格的向量检索产品。
162 12
|
3月前
|
机器学习/深度学习 人工智能 缓存
【AI系统】GPU 基础
GPU,即图形处理器,是计算机系统中处理图形和图像的核心组件,从早期的简单图形加速到如今的高性能计算和深度学习加速,GPU 经历了显著的技术革新。本文将介绍 GPU 的发展历程、与 CPU 的区别、在 AI 领域的关键作用及其在游戏、消费电子、自动驾驶等多个领域的广泛应用。
78 4
|
3月前
|
人工智能 并行计算 流计算
【AI系统】GPU 架构与 CUDA 关系
本文介绍了英伟达GPU硬件基础概念,重点解析了A100 GPU架构中的GPC、TPC、SM等组件及其功能。接着深入讲解了CUDA并行计算平台和编程模型,特别是CUDA线程层次结构。最后,文章探讨了如何根据CUDA核心数量、核心频率等因素计算GPU的算力峰值,这对于评估大模型训练的算力需求至关重要。
106 2
|
3月前
|
机器学习/深度学习 存储 人工智能
【AI系统】为什么 GPU 适用于 AI
本文探讨了GPU在AI计算中的应用,从卷积计算的基本原理入手,解析了GPU线程分级与AI计算模式的关系,以及矩阵乘法如何通过GPU编程提升算力利用率。文章还介绍了计算强度的概念,分析了不同数据结构对计算强度的影响,以及GPU中Tensor Core的作用,强调了在不同存储位置下,找到计算强度与矩阵大小的最佳平衡点对AI计算系统优化的重要性。
143 2
|
3月前
|
机器学习/深度学习 人工智能 并行计算
【AI系统】GPU 架构回顾(从2010年-2017年)
自1999年英伟达发明GPU以来,其技术不断革新。本文概述了从2010年至2024年间,英伟达GPU的九代架构演变,包括费米、开普勒、麦克斯韦、帕斯卡、伏特、图灵、安培、赫柏和布莱克韦尔。这些架构不仅在游戏性能上取得显著提升,还在AI、HPC、自动驾驶等领域发挥了重要作用。CUDA平台的持续发展,以及Tensor Core、NVLink等技术的迭代,巩固了英伟达在计算领域的领导地位。
63 1
|
3月前
|
机器学习/深度学习 人工智能 缓存
【AI系统】GPU 架构回顾(从2018年-2024年)
2018年发布的Turing图灵架构,采用12nm工艺,包含18.6亿个晶体管,大幅提升了PC游戏、专业图形应用及深度学习推理的效率与性能。Turing引入了RT Core和Tensor Core,分别用于实时光线追踪和加速深度学习计算,支持GDDR6内存,显著提升了数据传输速率和效率。此外,Turing架构还支持NVLink 2.0,增强了多GPU协同工作的能力,适用于复杂的图形渲染和深度学习任务。
76 0
【AI系统】GPU 架构回顾(从2018年-2024年)
|
3月前
|
存储 缓存 人工智能
【AI系统】GPU 工作原理
本文详细解析了AI计算体系中的GPU工作原理,重点介绍了GPU与CPU在架构上的差异,强调了GPU在并行计算方面的优势。文章通过$AX+Y$的例子,展示了GPU如何通过并行和并发提高计算效率,并深入探讨了GPU的缓存机制及线程原理,解释了GPU如何通过大量线程和Warp来掩盖延迟问题,实现高效计算。
122 0
|
3月前
|
机器学习/深度学习 测试技术 PyTorch
深度学习之测量GPU性能的方式
在深度学习中,测量GPU性能是一个多方面的任务,涉及运行时间、吞吐量、GPU利用率、内存使用情况、计算能力、端到端性能测试、显存带宽、框架自带性能工具和基准测试工具等多种方法。通过综合使用这些方法,可以全面评估和优化GPU的性能,提升深度学习任务的效率和效果。
180 5

相关产品

  • GPU云服务器