E企研究院 · 2020年08月10日

看VMware Bitfusion如何降低AI门槛

AI的身影已经开始在我们的生活中无处不在。说起AI,也不再像几年前那样,只有百度无人驾驶,谷歌阿尔法狗等少数几个案例了。
在今年的新型肺炎疫情期间的“健康码”,就是非常典型的基于大数据分析的AI实现。还有我们拨打任一运营商客服电话,都有“智能语音助手”选项,而众多银行等金融类App中,AI助手也是必备功能。而提供这些互联网服务的背后,数据中心内智能巡检机器人也已不是新鲜事物,AI技术已经深入到数据中心的每一个角落……
部署或使用AI的技术门槛并不高,比如在软件层面有端到端开源的TensorFlow机器学习平台,硬件方面可以选择最主流的GPU,并且同时也有相应的软件包来帮助开发人员快速地进行开发,比如CUDA。英伟达和英特尔都对CUDA提供支持,AMD则通过HIP(Heterogeneous Computing Interface Portability,可移植异构计算接口),提供Hipity工具来将CUDA代码转换成HIP。

Tips:CUDA 的全称是 Compute Unified Device Architecture,它是由 NVIDIA 提供的通用并行计算架构,该架构使开发人员能够快速地开发利用 GPU 的软件,通过充分利用 GPU 所提供的上千个处理单元来快速解决复杂计算问题。

即使技术上门槛不高,那么阻碍企业使用AI的问题在哪儿?可能是成本。单块GPU的价格可能并不高,但是通常一台物理服务器内需要多块GPU来提高单机性能,并且通过多台部署多块GPU的服务器来组成集群以提高系统整体性能。比如业内目前AI服务器最高可配 置8块甚至16块GPU,这样一台AI服务器自然价格不菲。

同时,训练过程中,可能需要频繁优化模型,反复训练反复迭代,这跟人学习知识有相似之处。哪怕整个AI服务器集群的利用率并未饱和,但也很难另作他用,这可能导致TCO的问题。如果你正面临这个问题的话,也许可以试试VMware新推出的vSphere Bitfusion这一功能。

*
Tips:vSphere Bitfusion 可将物理资源与环境中的服务器分离。该软件可将虚拟化环境中各台物理服务器上的GPU整合为共享资源池,并通过网络进行访问使用。Bitfusion 可跨 AI 框架、云、网络,在虚拟机、容器和笔记本电脑等环境中工作。
*

不同以往 vSphere Bitfusion工作原理解析

一般来说,GPU在虚拟化环境中通常有两种使用方式:直通模式,就是将整块GPU直通给某一个虚拟机使用,这与物理机使用没什么不同,只是将物理机换成了虚拟机;另一种就是vGPU模式,将一块GPU平均分成多个vGPU,如二分之一、四分之一,然后供多个虚机使用(对应的两个或四个),这只是细分了颗粒度,并没有改变使用模式,在一定程度上提升了利用率,但并不完美。
vSphere Bitfusion则采用了另外一种模式,其并不像vGPU那样直接切割GPU卡,而是通过对CUDA软件层进行“分离”。
截屏2020-08-10 下午9.41.27.png
上图为使用TensorFlow框架开发的机器学习软件堆栈,共有七层。其中 CuDNN (CUDA Deep Neural Network) 是 NVIDIA 为深度神经网络开发的 GPU 加速库。VMware vSphere Bitfusion从CUDA Driver(从下往上第三层)这一层进行分离为两部分,然后在上四层中插入一个CUDA driver的代理层。具体如下图所示:
截屏2020-08-10 下午9.43.12.png
在整个软件堆栈中,Bitfusion 在 CUDA driver 这个层面上截获了所有的 CUDA 服务访问,然后把这些服务请求和数据通过网络传递给 Bitfusion Server,在服务器这一端再把这些服务请求交给真正的 CUDA driver 来处理,这就是 Bitfusion 的基本工作原理
具体来说,vSphere Bitfusion有两种虚机:Bitfusion Server和Bitfusion Client。
Bitfusion Server以虚机形式部署在有GPU资源的各台服务器上,当然,这些服务器上必然是安装了VMware vSphere 7及以上。这个Bitfusion Server虚机上有上图软件堆栈中的下三层。
Bitfusion Client以虚机形式部署在其他(非GPU)服务器上,其拥有上图软件堆栈的上面四层,并增加了VMware开发的一个CUDA Driver代理程序。
Bitfusion Client所在的服务器上可以部署用于机器学习的虚机。当这些用于AI训练的虚机开始运行,Bitfusion Client上的Driver代理程序就可以截获所有CUDA服务访问,然后将这些请求和数据通过网络发送给Bitfusion Server,然后让GPU开始工作。
Bitfusion可以按比例使用整个共享的GPU资源池,比如1%或其他。这就提供了比vGPU更细的颗粒度。同时由于是虚拟化环境,Bitfusion Client所在物理服务器上可以部署多套训练模型;机器学习软件堆栈的分离、解耦,这意味着可形成多对一关系。这些特点可以让多套训练模型同时进行,互不影响,不仅有利于提高GPU资源利用率,也有利于用户尝试不同的模型优化或多种负载。
在了解了Bitfusion的工作原理之后,可能大家都会有这样一个疑问,Bitfusion Client和Bitfusion Server之间通过网络来传输数据和服务请求,网络是否会带来更高的延迟,从而降低性能?接下来我们通过实验来验证Bitfusion的工作效率。

Bitfusion实测:RDMA带来新优势

为了验证Bitfusion的实际性能,我们构建了三套测试环境,服务器和GPU都采用相同配置,唯一的不同在于网络,三套测试环境分别使用如下网络方式:
直接采用 10Gb/s 网络,使用虚拟网卡 VMXNET3;

采用 100Gb/s 的聚合以太网 RDMA 方案 RoCE,直通方式访问;

采用 100Gb/s 的聚合以太网 RDMA 方案 RoCE,通过虚拟化方式 PVRDMA 访问。

10GbE网络自不用说,这是目前数据中心内使用最普遍的网络,第一套测试方案选用此网络。第二三套测试环境均选用新一代的25/100GbE网络,主要是利用其中的RDMA功能(RoCE是RDMA在25GbE网络中的一种实现)。但两套测试环境又稍有不同,第二套测试环境中的虚机通过直通方式使用这100GbE网卡,相当于独占整张网卡;第三套环境则通过PVRDMA技术,让服务器上的多台VM可共享使用此网卡。
Tips:PVRDMA (Paravirtual RDMA),是 VMware 对于 RDMA 技术的半虚拟化实现,vSphere 会在虚机中提供 PVRDMA 虚拟网卡,再通过 VMkernel 中的 PVRDMA 堆栈来访问 HCA(Host Channel Adapter,主机通道适配器),这种方式可以让多个虚机共享 HCA 设备。
截屏2020-08-10 下午9.43.48.png
vSphere虚拟化环节中的PVRDMA架构示意图,有些类似于虚拟网卡
在测试中,我们选择了两种非常代表性的深度学习模型 Incepton3 (Inception Net V3) 和 resnet50 (Residual Neural Net 50 ,即50层残差神经网络) 来对 ImageNet 进行图像分类学习。在获得测试结果之后,为了对比说明,我们把相同配置但物理环境下的测试结果定义为1,而上述三套测试平台所获得的测试结果除以物理环境下的测试结果,从而得到一个小于1的比值,这个比值越接近于1就表示使用 Bifusion 所导致的性能损耗越小,值为1表示完全没有性能损耗。
测试场景1:直接采用 10Gb/s 网络,使用虚拟网卡 VMXNET3
很显然,这是三个场景中性能损耗最大的,这个场景中的网速最慢,也没有利 RDMA 方案来分担 CPU 的传输负担。10Gb/s 是最普通的数据中心网络配置,这是利用普通网络可以达到的性能结果。
截屏2020-08-10 下午9.45.11.png
测试场景2:采用 100Gb/s 的聚合以太网 RDMA 方案 RoCE,直通方式访问
这是三个场景中性能最高的一个,采用了 100Gb/s 高速网络,又是直通模式来使用主机网卡的 RDMA 功能。在高性能网络配置下,可以看到 Bitfusion 所造成的性能损耗几乎可以忽略不计。
截屏2020-08-10 下午9.45.40.png
测试场景3:采用 100Gb/s 的聚合以太网 RDMA 方案 RoCE,通过虚拟化方式 PVRDMA 访问
这种场景因为采用了虚拟化的 RDMA 方式,性能跟直通方式相比有一定下降。这是实际应用最可能的一种场景,一般我们都会有多个虚机来共享同一物理网卡所提供的 RDMA 功能,PVRDMA 是一个必然的选择。
截屏2020-08-10 下午9.46.07.png

总结
Bitfusion 由于采用了客户机和服务器模式来共享 GPU,CUDA 调用和相关的数据都需要通过网络来进行传输,相比于在本机上使用 GPU 会有一定的性能损耗。
从测试结果可以看到 Bitfusion 对于 GPU 的性能损耗最大偏差也不超过 20%(10GbE非RDMA),相比于 Bitfusion 方案所带来的共享便利和 GPU 利用率的提升是完全可以接受的。
需要注意的是 RDMA 的直通模式虽然性能最优,但是它基本上是让虚机饶过了 hypervisor 来直接使用 RDMA 设备,在这种情况下虚机无法用到 vSphere 的一些核心功能,包括 vMotion、动态添加和删除虚拟设备、虚机快照、DRS (Distributed Resource Scheduler,分布式资源调度) 和高可用HA功能。PVRDMA 是 VMware 对于 RDMA 技术的半虚拟化实现,它不存在直通模式的这些局限,完全可以用到 vSphere 的所有功能,并且可以实现多个虚机对于 RDMA 设备的共享。
另外我们也可以看到 Bitfusion 方案的性能损耗也取决于深度学习模型和 batch size 的大小,大的 batch size 有助于降低性能损耗,这是值得我们在真实环境中配置 Bitfusion 平台时借鉴的。

推荐阅读
关注数
5021
内容数
335
E企实验室由E企研究院专职产品技术分析师针对数据中心、云计算、AI和5G等领域最新技术和应用研究、验证、试用、分析,数据中心级新产品新技术的市场教育,国内唯一同时研究互联网和传统企业IT基础设施的机构和部门
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息