|
|
51CTO旗下网站
|
|
移动端

聊聊GPU虚拟化应用

CPU我们知道,它的全称是中央处理器,是一台计算机的控制核心和计算核心。它的主要功能在于逻辑控制和任务调度。因此GPU较之于CPU,CPU更像是一个公司的CEO,掌管的整个公司的运营和战略,统筹整个公司的工作。而GPU则是某个部门的得力干将,能力强,迅速并超额完成公司交于的任务。

作者:阿飞来源:飞说Book|2019-01-09 13:20

提起NVIDIA,你多半会想起显卡,像我一般年纪的人,对显卡的理解就是游戏加速。上大学时玩实况足球,有个GeForce显卡是一件很幸福的事情,比起主板上集成的显卡,它的存在能够让我们游戏中的草皮更加翠绿,脚下足球更加的行云流水,那时候的实况足球可以实现足球经理人的任何梦想,钞票能买到任何想要的球员。门将圣卡西,后卫由左至右分别是马尔蒂尼、内斯塔、特里、萨内蒂;中场维埃拉、法布雷加斯、小罗;前锋则是梅西、亨利、罗纳尔多;阵容够炫吧!

随着人工智能的火爆发展,显卡不再是游戏的代名词了,而被冠上了“机器学习心脏”这个高大上的名字。而nvida公司则凭借视觉计算领域的绝对王者地位,3年时间市值最高翻了6倍之多。我刚入职人工智能领域时,不理解为什么显卡会成为“深度学习”的依赖,相信很多人也跟我有一样的困惑;简单来说,GPU主要侧重于计算能力,它由数千个更小、但更高效的Cores组成,通过并行计算的方式,处理多重且复杂的任务。

CPU我们知道,它的全称是中央处理器,是一台计算机的控制核心和计算核心。它的主要功能在于逻辑控制和任务调度。因此GPU较之于CPU,CPU更像是一个公司的CEO,掌管的整个公司的运营和战略,统筹整个公司的工作。而GPU则是某个部门的得力干将,能力强,迅速并超额完成公司交于的任务。

深度学习是模拟人脑的神经系统组成,通过设定一些规则和数学网络模型而发展起来的一门学科,目的是为了让计算机能够像人脑一样去思考,去认识和理解这个世界。由于计算机本身没有思维能力,因此需要大量的数据去训练它,因此,它对电脑处理器的要求就必须具备高效的并行计算能力,这一点对于以串行为主、核心数基本在2位数的CPU而言是不具备的。因此,GPU凭借其千级核心,高效运算的特点,成为了深度学习、模型训练的最理想选择。

我所在公司也在涉及人工智能领域,GPU显卡的数目也有了一定规模,如Tesla的M40、P40、P100等显卡都有所应用,当前这些显卡主要用于算法与Demo的训练。我们通过Docker虚拟化形式实现对GPU资源的分发利用。

首先在搭载有GPU的宿主机上安装CUDA架构环境,进入CUDA Tookit Download官网,现在对应的版本。安装完成后,还需要安装 出DNN,这个是专门对深度学习框架设计的一套GPU加速方案,支持Caffe和TensorFlow等框架。

基础环境安装完毕后,即可以利用nvidia提供的nvidia-docker进行GPU的Docker虚拟化了。官方提供了这些包的安装源列表,安装起来还是比较简单的,安装完毕后,可以通过

docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

查看docker GPU容器的运行情况。

最后可以通过 learningtensorflow.com 官方提供的基于TensorFlow的基准测试脚本,进行GPU与CPU的对比测试,可以发现,GPU在并行运算上,性能要由于CPU很多的。

如上图所示,以上基于Docker虚拟化GPU的方案,从本质上说,GPU资源被打包在一个workspace(即Container)中,workspace运行在宿主机上。这种虚拟化方案虽然能够解决独立训练的问题,但同时也存在一些单点和依赖性问题。首先Workspace的运行依赖于宿主机的运行情况,宿主机从本质上讲是一个孤岛;其次,Docker Container的正常运行,也决定了Workspace的生存情况;第三,由于Container是根据Docker命令生成的,在弹性扩容上,存在一定的限制。

面对以上问题,我们考虑,是否能够采用另外一种虚拟化方案,让GPU也向云端靠拢?云计算的发展,使得应用场景发展至异构计算体系架构,随着机器学习、深度学习的发展,对GPU、FPGA等专业计算芯片也提出了虚拟化的需求。最早可以追溯到2013年,NVIDA发布了GRID K1产品,标志着GPU虚拟化的成熟运用。“A Full GPU Virtualization Solution with Mediated Pass-Through”,及分片虚拟化的vGPU技术,Nvidia对于分片虚拟化社区的推动起了至关重要的角色,并在自己的GRID一系列产品线中,不断地发展和更新着vGPU技术。

虚拟化技术的最终目标,就是努力提供与工作人员在物理机上使用时一样的体验。 NVIDIA GRID®VirtualPC(GRID vPC)和GRID®

虚拟应用程序(GRID vApp)可为每个用户改进虚拟桌面和应用程序,并在NVIDIA®Tesla®GPU上构建经过验证的性能,实现卓越的生产力,安全性和IT可管理性。 虚拟化软件划分了Tesla GPU资源,因此GPU可以在运行任何应用程序的多个虚拟机之间共享。目前GRID各release版本对GPU的虚拟化支持如下:

基本上能够支持市场上主流的Tesla GPU型号。

以下分享一个本田集团利用GRID对GPU的应用案例

通过GRID管理平台,Honda IT部门通过调度物理GPU M60,根据用户需要并提供适当数量的vGPU,并能够通过单个Dashboard管理vGPU,从而确保每个用户都有足够的运算性能完成所处理的任务,如此做到了更高级别的弹性扩容。如同云存储、云计算资源类似,GPU也实现了按需分配。

人工智能是第四次工业革命的引领技术,大数据和基于GPU的深度训练是人工智能发展的关键所在,无论之于国家还是企业,都应该通过技术创新,在这一次全世界范围内的浪潮中开启属于自己的一片天地。

https://v.youku.com/v_show/id_XNjY3MTY4NjAw.html

一个很经典的视频,对比了GPU和CPU在图形运算处理上的差别。

【编辑推荐】

  1. CPU虚拟化助力云计算大行其道
  2. 采用虚拟化技术搭建基础架构云的优劣势分析
  3. 技术栈 | 浅聊著名的云计算虚拟化
  4. 服务器虚拟化开源技术主流架构之争
  5. 三分钟了解到底虚拟化平台能做什么?
【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

超级网管员——网络管理

本书全面深入地介绍了在网络的日常管理中,网络管理员必须掌握的知识,包括系统基本管理、性能调优、故障恢复、域控制器管理、存储资源管理...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊