服务热线:

栏目导航
重点案例
联系我们
服务热线
电话:
邮箱:
地址:
当前位置:官网首页 > 新闻动态 > 公司动态 >
2019可信云大会丨华为标准工程师何芦微:高性能异构资源管理—Cyborg
作者: 发布日期:2019-07-03

2019可信云大会丨华为标准工程师何芦微:高性能异构资源管理—必发88登录Cyborg

7月2日,2019可信云大会在北京国际会议中心隆重开幕。2019可信云大会以“智能云网边,可信创未来”为主题,由中国信息通信研究院主办。

下午13:30大会特设的智能云论坛活动正式开始,华为标准工程师何芦微做了《高性能异构资源管理—Cyborg》的精彩演讲。

华为标准工程师何芦微

华为标准工程师何芦微

大家好!我是来自华为的标准工程师何芦微,今天要很大家介绍的是Cyborg。

将会从以下四个方面介绍一下Cyborg

什么是Cyborg?

Cyborg发展历程

Cyborg涉及到相关概念组件

下一个版本的版本计划

现在专有领域的硬件芯片。 NPU,主要是用于深度学习神经网络的处理;GPU主要用于图像处理、AR/VR视觉处理;可编程智能网卡。虽然边缘计算、人工智能等需要高性能新业务的兴起,用户对这些GPU、NPU等硬件需求也日益剧增。

如何让云计算的平台能够更好地管理、支撑这些业务需要的GPU等,成为业界越来越关注和重视的话题。

对于当前云计算平台来说,他们对管理这些专有硬件明显是不足的,由此带来一系列问题,如在人工智能领域的业务上,基础设施无法有效调度CPU和GPU,导致GPU资源的严重浪费。在边缘计算业务上,由于基础设施没有办法管理很多加速卡,导致在边缘计算的场景中无法去使用IPG(音)智能网卡,在这种情况下,我们到底如何管理呢?

为了解决这一问题,Cyborg应运而生。Cyborg是由华为主导的,并和联想、英特尔等公司一起合作,在OpenStack社区(即全球最大的云计算管理平台开源社区)发起Cyborg项目,也获得了社区广泛认可,于2017年9月份正式成为了官方项目。

Cyborg项目的出现就是为前面提到的这些专有硬件提供一套通用的管理框架,为了方便这些基础设施的提供商或用户能够更好、更便捷使用这些专有应用,去部署高性能业务。

Cyborg完整的发展历程。

最初关于异构资源管理的框架构想最初来源于华为一位工程师,在OpenStack社区发起Cyborg项目。发展到今天,这个项目已经吸引了___数百位开发者的参与和加入,从这个项目的发展以及活跃度,发展到今天可以看到异构资源管理已经成为很多公司的痛点。这也是为什么Cyborg的出现吸引众多开发者的加入。

从几个维度看一下Cyborg的成长。

(图)饼状图中数据代表的是每家公司贡献度,2018-2019年,从最初8家公司发展到后来十几家公司的加入,2018年,代码贡献比重占比较大的是华为、英特尔和联想三家贡献比较多。2019年,项目贡献比重除了这三家以外,发展了很多其他公司,如九九云、移动等公司的开发者也都参与进来,比重也在逐步增加。

从一个开源项目角度来看,越多越多公司开发者的参与对于这个项目的设计、架构的成型、讨论、发展落地会变得更加全方位,而不仅仅是倾向于某家公司。所以可以看到Cyborg这个项目正在朝着健康的架构方向去发展。

从项目本身成熟度来看,在2018-2019年时间里,Commit的数在逐步提升。我们在参与一个开源项目时,假如有一个项目时隔两三年才会提交几个Commit,可以看到这个项目本身不活跃,不敢用它。因为会担心这个项目会不会用到后来没有人维护了。但Cyborg这几年比较活跃,表示出开发者在这里的贡献,包括项目本身可以看到多人参与的现状,所以这个项目本身非常活跃和健康。

这个项目刚开始时只是一个抽象的框架,并没有具体的实现。当时在11月份还有一个demo演示,识别人脸时用了LPG卡(音)。到了2019年,除了底层支持硬件专家,2018年只有一个英特尔的LPG卡,2019年有英伟达、GPU等都已经实现了。除此之外还做了一些类似底层设备配额管理,因为对于Cyborg来说,在这里只是一个单独的项目,但要想落地,要想商用,必须通过跟Nova结合,所以还做了一个跟Nova的集成。

Cyborg架构。

它合乎OpenStack其他项目,如类似Nova等,Cyborg也有分层架构,有API架构有DB,对于API模组来说,主要对加速器加速设备的操作,如List、conduetor等,LIST列举后端有哪些加速器设备。对于conduetor这个模块主要跟DB配套出现的,假如对DB做一些加速器查询更新操作,必须通过conduetor发送一个IPC消息去触发DB的查询操作,对于DB来说,conductor就是它的全线网络控制,避免了用户直接操作这个DB,当在使用量比较多或高复杂情况下,有可能会把DB给击穿或导致访问量太大,DB会出现问题,就设计了这个模块。

对于Agent来说会和Nova交互,会把加速器分配给虚拟机。

最下面一层是有不同driver,不同加速器设备有不同连接方法,Agent需要有不同driver连接各自硬件设备。

Cyborg抽象的设备模型。

对于每一个硬件设备都只有一个唯一的Controlpath ID,一个Device相当于一个物理的异构设备,比如GPU设备是一个实际的物理设备,对于Deployable是一个逻辑单元,相当于一个设备会有多个Deployable,它可能是一个加速器,也可能是一个local的内存。

Accelerator是可以实际操作的加速器单元。比如对于FPGA来说,它里面会有两个Accelerator,对于TCPU、NPU,只有一个Accelerator。

如果想验证Cyborg做得对不对,可以通过Linux下面的指令去查,通过查它的PCI挂载地址可以查到。

Cyborg下一个版本要做五件事情:

要跟Nova做提升,不能单独存在,就是为了给虚拟机去分配加速资源而存在,所以需要跟Nova集成。

通用驱动的实现。针对不同设备它有非常多设备驱动,如果我们没有一个通用的话,可能需要开发的成本会较高。

在现有基础上,后续会支持更多硬件,可以让华为AI芯片开发driver。

Python3迁移,对上面开发者来说,无论是Python2还是Python3,对他们的影响并不是很大,之所以要迁移,是因为Python2在今年年底停止维护了,所以要迁移到3的版本。

集成验证测试工作。主要是跟Nova做集成时,要求Cyborg提供测试,保证工作稳定运行,这个工作也是跟Nova集成同步做的。

Nova和Cyborg的集成,因为Nova是分配计算资源的,就是分配一台虚拟机,要为它分配的这台虚拟机挂载一个加速器,要做的就是为Nova分配的虚拟机去提供一个由Cyborg管理的加速器资源,就是做这个事情的。

我们在做这些开发时,因为Nova已经比较成熟了,对于Nova来说并不想做颗粒度这么大的变动或修改,所以我们去推这个比较困难的,但把这个事情推进去了。下一步计划是把代码也给放进去。

Nova-Cyborg集成的简单小步骤。

具体细节可以看它的代码,这里跟大家简单说一下。

第一步对于Cyborg来说有一个配置文件,要先启用这些driver,才会帮助你查看后端有哪些硬件设备,帮助你做连接的操作。Cyborg查询到有这些硬件设备,需要挂载到Nova那边,但Nova操作的数据结构是Flavor,我们把这个信息传给它,Nova去做,把这些信息解析成Flavor就好了,但是Nova不想维护底层加速器的信息,所以就把这部分公开交给Cyborg自己去做,所以Cyborg需要将检索到的后端信息解析成Flavor结构,发给Nova,相当于一个指整指向Flavor就行了。

拿到这些数据,用户要在OpenStack启动一个虚拟机,有一套指令,要启动这个虚拟机必须配有华为的升腾AI芯片,就需要问Cyborg要资源,把这个资源整合以后给Placement,选择一个节点,给它连接上异构的加速器资源。

整个流程,Nova和Cyborg是一个异步进行的工作。

通用的driver,现在设计的是一个IPG卡和GPU的卡同样做Attach操作,我们为了让Cyborg能够可扩展或设计更合理,希望把它这个接口抽象出来,对于不同window来说,需要根据通用driver接口自己实现那部分逻辑。

关于driver,今年会实现华为升腾芯片的支持,还有英特尔会做一个高性能USB设备的支持。

现在Cyborg也有一个中国开发讨论组,平时讨论比较热烈,大家如果对异构资源管理有什么问题或有什么感兴趣的点,都可以找到我这边,加入到这个群,大家一起去做这个事情。

谢谢大家!



Copyright © 2018 必发88必发88-必发88登录 All Rights Reserved备案号:
电话:邮箱:
地址:技术支持:
必发88-必发88登录