【OpenVINO+PaddlePaddle】OpenVINO迎来最新版本:2022.1-里程碑式的新节点

这次的OpenVINO™将迎来发布以来最大的更新,将对CPU、GPU(intel)、FPGA、VPU等硬件上部署和推理AI模型产生巨大的影响。首先如果您用过往期的产品您就会对过去的OpenVINO™有所了解:安装麻烦、模型转化繁琐、前端和后端函数分离不容易了解硬件相关配置、多硬件异构配置复杂、只支持静态输入等等。这里的所有问题都将会在2022.1得到优化和解决。

这次在新版本中,您将能够:
1、无需转化onnx,实现快速部署PaddlePaddle
2、支持动态和静态输入
3、根据您的硬件参数配置(CPU核数、并行处理的通道数等)优化参数
4、在多硬件异构(CPU+GPU)中进行智能的选择推理设备和策略

1.简化安装包和运行库

新版本的安装包将会变得非常非常小,因为裁剪很多不是必须的开发代码以及大大地简化了整个OpenVINO™的环境,如果之前有使用过OpenVINO™的朋友可以看下新版与2021版本的区别或者您直接选择跳过也是完全没问题的。
请添加图片描述

二、一句部署PaddlePaddle模型

下图是2021版本OpenVINO™+PaddlePaddle结合部署的流程图,大部分的模型需要经过PaddlePaddle–ONNX–IR 三步走才可以部署在X86架构的硬件上。
请添加图片描述

在2022.1版本中您既可以直接借助MO工具直接将PaddlePaddle模型转化成为IR模型,大大地简化了模型部署的流程,同时还支持直接将一部分的模型直接不经过转化IR模型,直接在CPU等硬件上进行部署。
请添加图片描述
同时,各个环节都得到了不同程度的简化。
请添加图片描述

除了与Paddle Paddle模型的集成更加方便之外,OpenVINO™ 工具套件也着力于加强对Paddle Paddle模型的多样性支持。在2022.1版本中,Paddle Paddle的网络支持涵盖了视觉检测识辨,OCR,自然语言处理等类型的网络。在接下来的规划中,会进一步扩大网络支持的范畴以及不同硬件平台的支持。

三、在CPU上实现动态输入支持

我们都知道pytorch一直以他的动态特性而受到及业内人士的喜欢,随后tensorflow也支持动态输入。动态输入是深度学习框架的一个很重要的特性:在模型训练时,某些维度不是固定大小,而是用’-1’或’?’来表示;在推理阶段根据实际输入的大小去动态的调整模型大小,进行结果预测,即模型具有自适应性。主流的深度学习框架,如Tensorflow, PyTorch均支持这个特性。
而OpenVINO™ 工具套件由于底层插件的限制,一直无法很好的支持动态输入,在MO转换阶段就要求所有的张量尺寸必须是固定大小的;在推理阶段,虽然也可以通过’reshape’功能改变模型的尺寸,但存在速度慢、算子不支持等诸多限制因素,因此也制约了OpenVINO™ 工具套件在需要动态输入的场景如OCR下的应用与发展。
动态输入将会从2022.1版本开始支持,分阶段开发及实施。首先,在2022.1版本中会在CPU插件上支持这一功能,之后逐步发展到其它插件上。这个特性的支持分为两个部分,一个是MO的变化,另一个是Runtime的变化。

MO的变化

旧的MO需要通过–input_shape来固定模型的尺寸为静态尺寸,而在新MO中,这一步不是必须的。开发者可以选择不指定–input_shape,则原始模型中的’?’会予以保留;或者通过–input_shape [1…10,224,224]的写法,将第一个维度(一般是batch size)的值限定在1-10之间。同时,开发者也会观察到IR文件版本发生了变化,由2021的version 10进化为2022的version 11.

Runtime的变化

Runtime的变化主要体现在API上。具体来讲会引入ngraph的partial shape概念,动态可变的shape将会通过partial shape这个类来操作,关于partial shape,请详见下列的说明:
https://github.com/openvinotoolkit/openvino/blob/master/docs/nGraph_DG/nGraph_Python_API.md

另外,如果对runtime输入的是旧版本的IR文件,即IR版本号小于或等于10,OpenVINO™ 工具套件仍然可以正常推理,但dynamic shape的功能不会启动。因此如果想使用到dynamic shape功能,一定要使用新版本的MO重新将原始模型进行转换,转换后的IR版本号为11。

四、硬件优化工具和模型转换工具的引入和改进

为了充分发挥CPU等硬件架构的优势以及简化模型转化,在最新版本中主要进行了performance hints, Auto-Device Plugin, MO三个方面的改进

performance hints

从字面上理解,performance hints即性能提示,旨在给予开发者更友好的编程引导,以帮助开发者设置或获取与性能相关的参数。通常,我们会对应用程序的性能指标,如latency和throughput较为敏感,且以此作为优化目标;但与硬件相关的配置参数,比如CPU核数、并行处理的通道数等,则不甚了解,且这些配置参数比较抽象,较难理解,有一定的学习门槛。

借助performance hints功能,开发者无需关心配置参数,只需要设置latency或throughput的性能目标,即可由OpenVINO™ 工具套件代劳,自动设置一系列的优化参数,以保证latency或throughput为最优解。

增强的Auto-Device Plugin功能

从2021.4起,OpenVINO™ 工具套件引入了Auto-Device Plugin。Auto-Device是一个全新的“虚拟”或是“代理”设备,它的其中一个功能就是帮助开发者简化开发流程,比如,将设备名称指定为“AUTO:CPU,GPU”,那么CPU和GPU(本文中的GPU均指代Intel显卡,包括iGPU和dGPU[注4],下同)则被添加到Auto-Device的列表中,在执行ie.load_network(model, “AUTO:CPU,GPU”)后,交由Auto-Device Plugin来智能的选择推理设备和策略。开发者甚至可以不指定具体的设备,直接在加载模型时使用”AUTO”的设备名称,则可由Auto-Device Plugin来根据模型进行硬件平台的智能匹配。

在2022.1中,”AUTO”为加载模型时的默认设备。如果开发者在加载模型阶段不指定任何的设备,则会自动采用”AUTO”作为加载设备。除此之外,AUTO-Device Plugin还增加了如下的主要功能特性:

功能1:First Inference Latency优化
对于GPU和VPU[注5]的开发者,相信都体验过加载网络模型卡顿的问题。尤其对于GPU,执行ie.load_network(model, GPU)的操作,相比CPU而言会较为耗时,从而导致从程序的初始化到第一次完成推理的延时较长。由于2022.1中的API发生了变化,为了避免读者混淆,我们姑且不区分”load network”和”inference”这两个具体的操作,而是将应用从启动到完成第一次推理的阶段统称为“First Inference”,将这一阶段的耗时称为”First Inference Latency”。通俗的讲,First Inference Latency即是应用程序的启动时间(含初始化、加载、第一次完成推理等所有时间的总和)。
功能2:完全支持performance hints功能
performance hints功能在Auto-Device插件上得到了完全支持。

功能3:集成dynamic shape, auto-batching功能
dynamic shape即动态输入,在本文的第3小节”动态输入支持”中会进行说明。除CPU插件外,Auto-Device 插件也已支持此功能。

auto-batching即自动批处理,对于GPU尤其是dGPU上的开发者,选择合适的batch size以充分发挥GPU性能是非常重要的部分。如果batch size过小,则无法将GPU性能跑满;但是如果将batch size设得过大而内存不够,则会发生代码崩溃等异常。除此之外,不同的设备往往需要设置不同的batch size,因此比起将batch size设置为固定值,需要一种更加灵活的方式来方便设置不同的batch size。而auto batching的设计理念就是为了解决上述问题。目前auto-batching的支持为雏形状态,在Auto-Device中,提供了开关对于auto-batching进行设置。这一特性会在后续版本中进行优化和改进。

MO参数简化

MO作为模型转换工具,需要指定的转换参数较多且繁琐,对比其它同类型工具,对开发者的要求较高。目前存在于开源项目issue里的问题,超60%为MO的问题。因此在2022.1中,针对MO不易于上手的问题,对转换参数进行了一系列简化,比如开发者不需要再指定”input_shapes”和”disable_nhwc_to_nchw”,同时针对tensorflow 模型的转换参数也有所简化。更多的细节,可待正式版本发布后读者们自行探索。

参考:“OpenVINO™ 迎来迄今为止最重大更新,2022.1新特性抢先看!”邱丹

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2022年3月17日 下午4:43
下一篇 2022年3月17日 下午5:02

相关推荐