人工智能和机器学习 云计算管理平台

VMware云平台加速机器学习


引言

 

原本这是在VMware vForum 2018上的一个演讲,一直想整理成文字,便于和有兴趣的朋友去交流。但是惰性驱使,一拖再拖,居然到今天才开始着笔。

 

言归正传,这篇文章的主题是:VMware云平台加速机器学习。可能很多读者会有些诧异。我们都同意优秀的算法可以加速机器学习任务,特殊的芯片(比如GPU、FPGA、ASIC)也会大大加快机器学习的速度。但是VMware,作为一家专注在IT基础架构领域的公司,凭什么可以加速机器学习呢? 当然,这个问题也可以换一个角度,如果读者是一位做IT基础架构方面工作的朋友,你能够帮助你所在的企业加速机器学习吗?

 

所以,在下文中,我们第一步要讨论的是:机器学习在IT基础架构方面到底遇到了什么样的挑战。第二步,将会介绍VMware如何帮助用户应对这样的挑战,并最终加速机器学习。


第一部分:机器学习在基础架构方面到底遇到了什么样的挑战

 

首先,我们来看一下机器学习的发展过程。机器学习其实不是一个全新的领域。作为实现人工智能的一种主要手段,机器学习早在上个世纪中叶就被提出。这么多年主要在科研领域发展,只有在很少的一些场景能够真正落到实用。

近年来,机器学习、甚至说整个人工智能领域的再度火热,真正的原因是“深度学习”的出现。深度学习也是一种机器学习技术,理论层面并没有革命性的突破。但是,相对于“传统”的机器学习,深度学习的模型更加复杂,可以对海量的数据进行训练。我们可以简单的理解成,深度学习模型就是人的大脑,数据就是各种书籍、课程等。但是,要想这个“大脑”足够强劲,就需要算力;光有传统的CPU还不够,还需要专有的人工智能芯片,包括以英伟达为代表的GPU芯片、可编程的FPGA芯片(比如赛灵思)、还有ASIC架构的芯片(比如Google的TPU,还有国内的寒武纪等等)。

图1:机器学习任务的步骤

图1:机器学习任务的步骤

 

一个深度学习的任务大致会经历这么几个过程:“数据处理”、“模型的开发”、“模型训练”和“预测推理”。每个阶段都需要强大的算力。其中在数据处理和训练阶段,数据量越大,需要的计算资源越多;在上线推理阶段,并发用户数越多,需要的计算资源越多;即使是在模型开发阶段,由于研发人员需要不断的验证模型,并根据反馈调整参数,更强的算力就意味着更快的反馈,也就意味着更高的工作效率。

一个企业,一般都会有多个模型同时在开发和训练,或者多组人员在做不同的机器学习任务。多个任务、多个模型、多个阶段,都需要IT资源。如何管理和调配这些IT资源,已经成为一个非常大的挑战。

 

我们来看一下当前企业的做法。当前的做法主要就是两个:图形工作站和配置AI芯片的物理服务器。图形工作站主要用在模型开发和验证,物理服务器主要用来做数据处理、训练和推理。两种方式都是基于物理设备进行资源分配。

这种做法其实似曾相识,本质上讲,这就是我们在企业IT架构多年前的做法,所谓的“烟囱式”架构。

图2:“烟囱式”IT基础设施架构

图2:“烟囱式”IT基础设施架构

 

“烟囱式”架构的主要问题有三个方面:

  1. 重要任务得不到足够的资源:由于技术原因和非技术原因,服务器分配出去就很难再拿回来了。所以“资源不足”和“资源浪费”现象并存。重要的任务未必能够及时抢到资源。
  2. 人工智能专家不能专注:人工智能听上去是一个IT专业,但其实机器学习的专家大部分都是研究数学的。企业却要求他们去自己管理服务器、操作系统、上面的软件,还需要关注安全。正所谓术业有专攻,这些事情都不是他们擅长的。当前的做法,只会让专家抓狂苦恼,浪费了时间、降低了企业核心人力资源的效率,导致机器学习工作进展缓慢。
  3. 管理成本居高不下:一方面,刚才已经提到,服务器资源的重新分配是件很麻烦的事情,需要多方面协调;另一方面,虽然在一台服务器上面可以运行多个机器学习任务,但是任务间隔离性差,相互影响,一个任务的错误甚至可能导致整台服务器的崩溃。

 

所以,尽管企业做了大量的投入,用于招聘人才和采购设备,却发现落后的IT基础架构严重的拖了后腿。

 

Google在2015年发表了一篇文章,题目是“机器学习系统中隐藏的技术债务”,也印证了同样的观点。在机器学习中,毫无疑问,模型和算法是核心。但是,在现实世界中,我们要让这个核心引擎能够高效的运转,需要的是整个体系。Google的这篇文章中列举了这个体系中的9项目技术(如下图所示)。我们针对这9项技术为了一个简单的划分,其中有四个方面,靠近一半的内容,就是绿色的四个部分,都和基础架构相关,可见IT基础架构在整个机器学习体系中的重要性。

图3:真实世界中的机器学习体系

图3:真实世界中的机器学习体系

 

作为整个机器学习体系中的重要组成部分,IT基础架构的质量和效率直接影响了机器学习任务的进展速度。

 


第二部分: VMware如何帮助用户应对挑战,加速机器学习

 

其实,这本不是一个很复杂的事情,也非一个全新的解决方案。软件定义的数据中心架构是新一代数据中心的标准,而且已经被用户所广泛使用;而机器学习的任务,虽然具有一定的特殊性,但是从本质上看,也就是一种应用而已。我们要做的事情,其实就是在现有的软件定义的数据中心架构上,做一些补充和增强,使其可以更好的支持AI芯片。由于当前Nvidia的GPU芯片是最广泛使用的AI芯片,在下面的描述中,我们以此为例。

图4:软件定义的数据中心架构

图4:软件定义的数据中心架构

 

接下来,我们将主要讲述机器学习云平台的三个最重要的方面:

  1. 如何实现GPU的灵活调配
  2. 如何实现GPU的自动化调度
  3. 如何实现GPU的运维管理

图5:机器学习云平台对于软件定义的数据中心架构的扩展

图5:机器学习云平台对于软件定义的数据中心架构的扩展

 

GPU的灵活调配

这里主要包括两个层面:一是在虚拟化环境使用GPU(下图左),另一个是GPU本身的虚拟化(下图右)。

图6:在vSphere中的GPU使用方式

图6:在vSphere中的GPU使用方式

 

所谓直通模式,指的是虚拟化层对GPU设备不做任何管理,只是通过透传的方式,直接给到虚拟机。与物理服务器相比,虚拟化环境通过虚拟机实现了GPU的灵活调配。简单的说,将一块GPU卡分配给某一个VM,只是vSphere Web Client上的一个操作而已。当VM所在的物理服务器上面的GPU资源不足时,也很容易的将VM迁移到其他的物理服务器上面。

直通模式可以实现对AI芯片卡最大程度的兼容性,理论上,只要是PCI设备,都可以通过这样的方式进行管理。

 

Grid vGPU是Nvidia独有的技术,其特点是可以将一块GPU卡切分成多块,分配给不同的VM使用。使用vGPU最大的优势是可以实现更加细粒度的资源调配。我们以Tesla P40为例,P40最多可以切分成24块1GB显存的vGPU使用。当机器学习任务的压力不是很大的时候,vGPU的优势尤为明显。当然,vGPU还有其他的一些优势,比如使用vGPU的VM可以在物理机之间在线漂移(vMotion)。

 

直通模式和Grid vGPU模式并不冲突,这两种方式都有各自的价值。在下图的示例中,一台物理服务器上配置了8块GPU卡,其中前两块采用了vGPU的模式,但是采用了不同的切分方式。后面6块GPU卡采用直通模式,分配给不同的VM使用。

图7:vSphere中的GPU/vGPU示例

图7:vSphere中的GPU/vGPU示例

 

不管是直通模式还是vGPU模式,虽然增加了灵活性,但是对于性能是否有损耗呢?我们的实验数据显示,在vSphere虚拟化环境下,不管是直通模式还是vGPU模式,针对于同样的机器学习任务,比使用物理服务器多出4%的时间。相对于带来的收益,4%的额外开销并不算什么。

图8:vSphere环境中的GPU损耗

图8:vSphere环境中的GPU损耗

 

GPU的自动化调度

在上一个章节中,vSphere实现了GPU资源的灵活的调配,但是这些调配依然需要通过管理员手工完成。在规模较大的时候,这样的工作会带来很多管理上的低效和混乱。

在软件定义的数据中心架构中, vRealize Automation提供了融合蓝图技术(Converged Blueprint),并与vSphere、NSX、vSAN等软件集成,实现了计算存储和网络资源的自动化调度。 同时,我们看到vRealize Automation是一个开放的平台,我们通过其中的vRealize Orchestrator这个工作流平台,对vRealize Automation进行扩展,以满足对GPU调度的需求。具体的工作流如下图所示:

图9:vRealize扩展工作流

图9:vRealize扩展工作流

 

在这个工作流中,当一台VM已经创建出来,需要给他分配GPU的时候,工作流会首先验证输入参数,然后对VM的操作系统进行停机;然后是重点,这个红颜色圈起来的节点会通过REST API去调用外部的一个GPU调度策略引擎,这个策略引擎是自行开发的,他会返回给工作流最优化的GPU调度结果,不管是vGPU还是直通方式的GPU,其调度方法都比CPU要复杂,如果随便分配,会出现错误,或者性能不能完全发挥,另外,也会出现大量的碎片问题。当工作流获得分配的GPU之后,他会去检查是否需要迁移,因为分配给他的GPU可能不在VM当前的服务器上,如果需要迁移,会做一次迁移操作。然后会调用vSphere的API添加GPU设备到VM,最后会启动VM操作系统。

限于篇幅,具体的实现方式,我们可以在后期的文章中,进行详细解释。

 

当用户使用的时候,可以登录自服务门户,进行选择,如下图所示。当然这样的门户可以根据用户的使用习惯进行定制。

图10:vRealize自定义门户

图10:vRealize自定义门户

 

当用户提交任务之后,vRealize Automation会调用vSphere API,实现上面描述的工作流中的一些操作,如下图所示。如果没有自动化平台,这些操作都依赖于IT管理员手工完成。

图11:vRealize调用vSphere API进行自动化部署

图11:vRealize调用vSphere API进行自动化部署

 

除了使用vRealize Automation进行自动化调度之外,还可以使用Horizon虚拟桌面系统进行调度。虚拟桌面的用户体验会更好,当然,也有一些限制。Horizon虚拟桌面只能使用vGPU,而且只支持桌面级操作系统。Horizon结合vGPU的方式比较适合教学培训、模型开发、轻量级模型训练等场景。

图12:Horizon调用vGPU

图12:Horizon调用vGPU

 

GPU的运维管理

接下来我们讲述一下GPU资源的运维监控。之前我们提到两种GPU的使用方式:直通模式和Grid vGPU。直通模式中,由于vSphere直接将GPU透传给VM,所以其状态监控也只能通过在VM中安装代理(agent)实现。其监控周期与VM的生命周期保持一致。

如果采用的是Grid vGPU的模式,其监控通过vSphere平台进行。VMware vRealize Operations提供丰富的扩展功能,Nvidia开发了针对于vRealize Operations的management pack,导入之后,就可以轻松的实现对GPU的监控。我们可以看到每个GPU的负载。在训练阶段,正常情况应该是GPU 100%使用,我们可以针对性的发现资源是否有浪费,或者算法是否需要调整以更好的利用GPU资源。在推理阶段,我们也可以发现GPU是否是性能的瓶颈。我们还可以看到GPU和应用之间的对应关系,这些对于我们定位问题都有很好的帮助。由于篇幅关系,下面我们简单的截取了部分用户界面图,给大家一个直观的体验,具体的描述将在后续的文章中进行讲述。

图13:vRealize Operations扩展管理vGPU

图13:vRealize Operations扩展管理vGPU

 


总结与展望

 

  • 作为体系中的重要部分,IT基础架构对于机器学习非常重要。当前的“烟囱式”物理架构面临三方面重要挑战:
    1. 重要任务得不到足够的资源
    2. 人工智能专家不能专注
    3. 管理成本居高不下
  •  VMware通过扩展软件定义的数据中心架构,实现了机器学习云平台,主要包括三个层面:
    1. 通过vSphere服务器虚拟化实现AI芯片的灵活调配
    2. 通过vRealize Automation实现AI芯片的自动化调度
    3. 通过vRealize Operations实现AI芯片的状态监控。

 

文章到此本该结束了,但是我们稍微做一些扩展思考。机器学习是一个体系,但是数据科学是一个更大的体系。通过以下架构图,我们可以看到整个过程:(1)数据从物联网设备端进行采集,经过边缘节点的处理,集中到数据平台;(2)数据平台进行数据的集中处理,当然在这个阶段就可以做很多的事情,比如说进行建模和可视化;(3)如果需要做更加智能的分析和预测,就需要机器学习技术,在机器学习平台,模型会进行训练,训练好的模型最终会集成到应用平台中进行推理;(4)应用最终需要发布到终端设备,包括PC、手机等等;(5)当然训练好的模型也可以直接发送到物联网的设备,进行推理。

图14:数据科学体系结构

图14:数据科学体系结构

 

整个过程都需要IT基础架构,所以,不管是VMware这样的IT基础架构产品和解决方案供应商,还是企业的IT基础架构部门,或者这个生态中的合作伙伴,都大有作为。

 

作者:

韩亮  VMware资深解决方案架构师

姚晨锴 VMware资深技术顾问

龚华  VMware资深解决方案架构师