【华为云开发者沙龙-杭州站】轻松玩转Atlas 200 DK(下)

举报
发表于 2019/12/18 23:13:01 2019/12/18
【摘要】 一直以来开发者们大多数都会无故困于部署调优和测试这样一个死循环中,其中还相伴了一些开发效率低下、成本激增以及创新力下降这样的问题。面对这样一些痛楚,华为Atlas人工智能平台可以做到从计算入手,到业务流程编排整个闭环,每个关键点都可以拿下,本文主要讲述了这样的一个技术如何帮助企业和开发者们快速进入AI领域的开发。

主讲人:华为智能计算AI生态发展经理 黄磊

基本应用开发

MindSpore Studio创建链路编排

我们的环境准备好以后,再去通过它来做开发,那么是怎样的一个开发流程呢?下面简单介绍一下。

如果把创建工程也算上的话,我们通过MindSpore Studio来开发数据线路大概是可以分为七步。为什么会分为这七步呢,我们可以先从一个AI推理的应用,从逻辑上面来简单的分析一下。

比如我们要进行一个AI推理的话,那么我们第一步肯定是要有AI的推理的数据,有数据以后,我们第二步就是要有一个用来做AI推理的模型,有了模型以后,我们需要一个运行模型的节点和对推理后的结果进行后续处理,对应在下图中,我们的第一步和第二步就是解决了AI推理数据中数据的问题了,这里是用结点的形式来呈现的,我们第一步就是会有一个数据初步的呈现,这个就是用来做AI推理的依据,包括一些图片、视频、语音等等。然后第二步还需要对数据进行预处理,因为我们的AI模型对数据可能会有一些格式或者是分辨率上的要求,我们会通过预处理这个节点来进行我们对数据的crop或resize操作来适配模型。然后这里的第三步,叫做离线模型转换,会有这一步是因为在MindSpore Studio上面运行的模型可以看成是跟Caffe、Tensorflow这些模型是平级的,但是一些开源的框架模型要直接拿过来使用的话,由于芯片的架构会有差异,所以要进行一些模型的转换,目前我们可以把一些Caffe、Tensorflow已经训练好的模型通过模型转换的方式直接访问到MindSpore Studio上面来,这样直接就可以在我们的像Atlas的平台上运行起来。导入以后,它就是以一个模型节点的形式存在的,这就是第四步,添加第三方模型节点。添加完以后就到了第五步,添加一个推理节点,它就是用来做类似神经网络计算等操作来得到数据推理的结果,但是我们直接通过模型推理得到的结果和我们做程序推理的时候相比,拿到的可能是一些结构化的数据,很不直观,我们就需要有一个后处理的节点,比如我们在做统一推理的时候,我们会通过后处理节点把推理结果在图片上标注出来,说明是什么东西,它的分辨率大概是多少。

image.png

MindSpore Studio创建链路编排

工程管理

下面简单对MindSpore Studio解决的困难做简单介绍。第一个是工程管理,我们通过MindSpore Studio可以支持各种类型工程,首先是Tensor Engine,就是针对算子的开发,还有自定义引擎,这是针对几类引擎的开发;第三个是Matrix工程,这是做流程编排的,你可以自己去编排你的业务逻辑;第四个是离线模型的开发,当你开发你的深度学习应用的时候,它的训练可以支持C/C++以及第五种预测,即Python,但Python的应用会稍微晚一点,目前主要支持C和C++。支持的一些工程管理操作例如增、删、改、导入导出,都是可以的,我们在创建的时候,我们除了有均衡量量化的方式来进行编程以外,也支持传统查找方式。

image.png

工程管理

离线模型转化与导入

下面简单介绍一下针对离线模型转换的应用,这是在MindSpore Studio上特有的一个步骤。现在可以把我们在Caffe上面得到的模型通过OMG工具来直接转换到MindSpore Studio上面,然后在我们的NPU上面运行,后续也会支持更多的模型。这里会用到两个工具,一个是OMG,它是做离线模型转换的,通过OMG可以一次性生成能够适用在Atlas上面的离线模型。第二个是OME,它是根据离线模型衍生的一个执行引擎,它包含了一些调优策略,能够直接让离线模型在Atlas上面高效地运行。

image.png

离线模型转化与导入

流程编排

再往下就是应用流程编排。流程编排方面目前支持下面几种节点,一个是数据集节点,这个就是解决所有数据源的问题;第二个是模型节点,涵盖一些开源的模型;还有就是数据预处理节点,解决数据跟模型之间的匹配问题;第四个是深度学习网络执行引擎,最后一个是后处理节点。这些节点都是以图形化的方式来存在的,下图右边显示了一些节点图形,这些图形在MindSpore Studio上面可以直接通过拖拽的方式得到,拖过来以后需要把模块之间的线连接好,这些线代表的是业务逻辑的流程,拖过去以后代码就可以一键自动生成,点击run按钮运行,系统就会直接把代码通过Engine下发到200 DK板上,通过200 DK板上就可以看到运行的结果了。

image.png

流程编排

日志查看

代码开发完以后再运行可能会遇到一些bug或者要做输入分析,这时候就要用到一些日志,这里提供了一些丰富的日志和很多的操作。前面提到代码运行是在200 DK上面,但开发是在MindSpore Studio上面,在200 DK上面运行的这些日志要怎么去查看呢?我们在MindSpore Studio上面提供了一些日志入口,通过点完入口以后,第二步点一下连接,然后第三步把Atlas 200 DK的地址和端口号填上,填上以后我们就可以在MindSpore Studio上面直接看到200 DK上面的一些运行日志。

image.png

日志查看

Profiling性能分析

如果代码开发好以后,我们的性能如果没有达到预期,可能还会酌情调优,这里提供了像Profiling这样的分析工具。这个性能分析工具不仅支持图片化的方式,还支持命令行的方式,而且它还能够将一些常见的性能瓶颈标记出来,很直观就可以看到,还可以排查并针对一些关键问题能够提供优化的建议。

image.png

Profiling性能分析

构建与运行

最后是代码的构建与运行,运行分两种方式,一种是通过图形化的方式来一键式编排的,叫做Engine编排,还有一种是通过查找命令行的方式。通过Engine编排的方式运行就很简单了,只用点一下运行键就可以了;如果是通过查找方式的话,那么就没有这个图形化的画布界面,在做构建运行的时候就可能稍微复杂些,就需要在title上面,找到build键来构建,然后再点击run运行,工作就会多两步。

image.png

构建与运行

图片分类案例

操作流程

下面就针对图形分类的应用来做一个案例的介绍。

在这个图形分类应用中,模型使用的是Resnet 18,这个模型在MindSpore Studio上面是涵盖了的,所以这里就不用再做离线模型的转换了,它通过Resnet的编排的步骤就会比较简单,这里就主要分四步。第一是创建一个Mind工程,第二步是做一个流程编码,第三步是做工程编译,最后是做运行就可以了。下面就来具体看一下。

image.png

操作流程

工具界面总览

下图所示是MindSpore Studio的运行环境,登录以后看到的就是这样一个界面,这是一个网页的界面。在左边就是一些菜单栏和一些工程管理,还有数据集管理和一些模拟展示,可以一一打开,然后在中间下面的部分是运行编程的画布的示意,再往下是终端操作端口,就是在200 DK上面的一些运行的情况及日志在这里会全部实时呈现出来。

image.png

工具界面总览

创建工程

下面进行第一步。第一步是做工程的创建,我们开始创建一个MindSpore的工程,给它起一个名称,然后选择工程类型,它是带画布的,可以通过图形化的方式来拖拽进行编码,还有一种方式是customer,这种方式就是用传统命令行的方式来进行,就没有画布。第二步就是选择运行环境,这里是选择Atlas 200 DK,即我们的开发者板,除了这个以外我们还能选择Local的方式,就是在MindSpore Studio上会有一个本地的仿真环境。还有一个ASIC,ASIC就是可以连接EVB、PCIE单板,PCIE单板就例如Atlas 300,如果插在这上面,也是可以直接运行在Atlas 300上面的,这里我们选择DEFAULT,然后运行环境选择200 DK就可以了。

image.png

创建工程

编排流程

选择好以后下一步就是编排流程,编排的图形分类,这里会涉及到以下几个节点。一个是数据集,我们会把一些推理图片放在数据集里面,第二个是图形处理的一个预处理模块,第三个是一个网络模型节点,例如Resnet 18就是运用的一个图形分类的模型,第四个就是用来执行推理的一个引擎,最后一个就是图片后处理节点,它使我们可以查看图形化的推理结果。

image.png

编排流程

编排流程——添加数据节点

接下来的流程我们先添加数据节点,添加完以后再把一些像已经标定好的一个数据文件整理好,然后把标签字典文件和原始的数据文件导入,导入完以后在左边就可以查看到数据字典导入成功的结果,导入成功以后它就会生成一个数据集节点。

image.png

编排流程——添加数据节点

编排流程——放置节点

有了数据集节点以后,下一步就是放置节点,这样就可以把前面提到的像数据集节点、预处理节点、推理节点还有网络模型以及后处理节点,把它们都拖过来,拖过来以后,我们再通过鼠标左键把线连接起来。

image.png

编排流程——放置节点

编排流程——配置字节属性

线连好以后,下一步就是配置节点属性。这里主要针对预处理节点,因为在Resnet 18这个模型中,对图片的分辨率是有要求的,我们需要在右边输入一下参数,输完以后就可以了。

image.png

编排流程——配置字节属性

工程保存/编译

最后我们再把工程保存一下,保存完以后,它能够直接生成一个.mind的文件,然后单击Generate,之后它就能自动生成源码和可执行的文件。

image.png

工程保存/编译

工程运行(一)

最后我们再点击一下run,点完run以后系统会要求你输入一下运行的位置,这里把200 DK的地址和接入方式填一下就可以了。点完run以后它就会把刚刚生成的可执行文件下发到200 DK上面,让200 DK来运行。接下来在中间区域就可以看到推理的过程。

image.png

工程运行(一)

工程运行(二)

最后我们再到后处理节点里点击result就能看到推理结果,这样我们的一个图像分类的模型开发就完成了,整个过程非常简单。

image.png

工程运行(二)

相关资源

如果需要应用Atlas来进行开发的话,要如何去获取资源呢?200 DK已经在VMALL商城上开始销售了,而且对相关的例如MindSpore Studio的一些课程,用来学习的一些Demo,还有一些技术交流的论坛,我们都已经搭建好了发展设施。我们的开发者社区,大家可以通过扫码来访问。

image.png

相关资源

答疑一

Q1:刚刚讲到离线模型要转换一下然后放在里面才能进行运行,究竟转换的是什么内容,它哪里不匹配呢?

A1:因为在老卡片上已经训练好的生成很久的一些模型,放在我们的昇腾的芯片上,由于我们的芯片架构可能不一样,所以在底层运行的时候,它还是会有一些区别,就不能直接拿过来用,所以说需要通过这样一个转换的方式把代码模型转换成在MindSpore Studio上面能运行之后,我们才能拿过来使用,才能运行起来。

Q2:这个机器上的芯片以及里面使用的MindSpore Studio等软件是集成在一起,必须一起使用吗?我能否分开使用,比如只用这个软件?

A2:可以的,可以只用这个软件。因为MindSpore Studio这个软件是一个IDE的软件,可以用来进行代码的开发,但开发完以后要验证运行,就可以用开发者板来验证自己的代码能不能运行,运行的过程中有没有问题,运行完以后看一下性能怎么样,就会涉及到一系列的运行调优的问题。

Q3:这个机器我用在边缘端,它在运行的时候就不是我一个开发人员的角色去管理和控制它,很可能是业务人员,像这样的软件都是一个开发的界面,那比如说已经把它部署好了,它有没有一个管理界面去控制这个模型的运行和边缘计算的情况呢?

A3:针对边缘计算,我们Atlas 500有一个边缘小站,这个边缘小站是可以跟云端协同的,就是可以通过云端来管理它,然后你可以在云端把你开发好的一些模型通过网络下发给它。

答疑二

Q1:刚刚说可以用MindSpore Studio对一些数据模型进行离线转换,那还有一些深度学习框架是不能支持吗?

A1:是的,现在主要是支持Caffe和Tensorflow,还有一些主流的模型不能匹配,现在我们的研发针对这些模型也正在做适配,这个时间可能稍微晚一点,现在是先把这两个模型适配好,因为Tensorflow它的算子特别多,Tensorflow适配好以后,其它的模型的适配就会比较快了。

Q2:现在的转换过程容易吗?

A2:现在的转换很简单,刚刚提到了有一个OMG的转换工具,它的转换步骤也非常清晰。

Q3:刚刚说这个工具支持C和C++,那么Python能不能支持?

A3:Python的支持目前已经在规划了,具体的时间点我还不知道,因为Python在人工智能这一模块也会有很多基于算子的开发,现在也是非常重要,现在研发已经在规划了。

答疑三

Q1:之前我有使用过华为海思的一块叫做麒麟970的一块开发板,它们也有一个NPU,当时它使用的框架好像并不是基于安卓的那个华为开发的叫HiEngine的工具,如果说两个之间进行转换,就是原来的框架转换到现在这个MindSpore Studio的框架会不会比较困难?

A1:是这样的,我们的HiEngine不是一个框架,它是一个上层工具,对于框架,现在华为马上会开源一个叫MindSpore的框架。

Q2:我看这个Atlas它的通用能力相对来说是差一点的,在这种情境下,我可能希望用一块计算能力稍微高一点的ARM板,然后再搭配你们的NPU来实现我的处理,而不是同时用两块板来分别完成我的处理。

A2:可以看Atlas 200 DK的系统结构图,它是做SOA(面向服务的架构)的,它同时具有计算和推理的功能,这里的Hi3559只是做多媒体的处理,因为在Atlas上处理图片,它的格式是有要求的,但是像摄像头视频这样的格式它直接处理不了,所以加了一个Hi3559来做一个格式转换,最终让Atlas 200 DK来做处理,另外我们的Atlas 200 DK的算力是要比业界的高很多的,有26T,所以算力这方面绝对是所有开发板里面最高的。

 

视频链接:https://mp.weixin.qq.com/s/bdTZDy5Oo3Oj0cdkPvBz6w

 

以上文字内容由【内容众创小组-栀】整理


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。