登录后再学习,可使用学习中心、个人中心等更完善的课程服务。立即登录>
关闭

AI 开源工具包:英特尔 OpenVINO 功能介绍

  • 4 课时
  • 468 学过
  • 8 分
GPU 云服务器AI 人工智能深度学习

课程概述

OpenVINO是英特尔提供的AI开源工具包,本课程将介绍英特尔OpenVINO工具包架构,以及关键组件Model Optimizer、Inference Engine、DL Boost组件的功能。

【课程大纲】

1.OpenVINO工具包架构

2.Model Optimizer功能

3.Inference Engine功能

4.DL Boost功能

机构简介

英特尔(Intel Corporation)

英特尔是半导体行业和计算创新领域的全球领先厂商,以智能互联技术奠定全球创新基石。英特尔创始于1968年,拥有50余年推动技术创新和耕耘产业生态的成功经验。如今,英特尔正转型为一家以数据为中心的公司。英特尔的战略愿景聚焦于三个方面:一是致力于生产世界上最好的半导体芯片;二是引领人工智能与“自能”革命;三是做全球领先的端到端技术平台提供者。英特尔正与合作伙伴一起,共推人工智能、自动驾驶、 5G及物联网等领域的技术创新与应用突破,驱动智能互联世界,从而解决人类面临的重大挑战。 英特尔于1985年进入中国,是在华高科技领域最大的外国投资企业之一,协议总投入约130亿美元。中国是英特尔全球战略之重点,英特尔在中国拥有美国总部之外最为全面的业务部署,覆盖了前沿研究、产品技术开发、精尖制造、产业生态合作、市场营销、客户服务、风险投资和企业社会责任等。英特尔中国现有员工约9,500人。扎根中国三十四年,英特尔见证并深度参与了中国的改革开放,从浦东开发、西部开发到振兴东北等,英特尔一直跟随改革开放的步伐,积极带动区域经济发展,为高端制造持续注入新动力。 2014年12月,英特尔宣布在未来15年将为成都工厂投资16亿美元,首次引入英特尔最先进的高端测试技术( ATT),使成都工厂在原有的芯片封装与测试业务之外进一步升级为英特尔在美国境外唯一的ATT技术工厂;该技术已于2016年11月18日正式投产。 2015年10月,英特尔宣布投资55亿美元,将英特尔大连工厂升级为非易失性存储技术制造基地;该项目已经于2016年7月正式投产, 2017年发布了两款全新的基于3D NAND的数据中心级固态盘;其二期项目已经在2018年9月投产英特尔最先进的96层3D NAND产品。英特尔中国研究院是英特尔全球五大创新中枢之一,而英特尔亚太研发中心已发展成为英特尔在亚洲最大的综合性研发基地之一。 英特尔中国积极履行企业社会责任,涵盖了人才培养、员工关爱、多元化和包容、环境可持续、供应链建设、志愿服务等领域。英特尔连续20多年被教育部评为最佳合作伙伴。我们持续支持英特尔杯嵌入式大赛、英特尔杯软件创新大赛和人工智能人才培养等项目,开展丰富多彩的校园活动,每年都有上万名学生的直接参与,受益青少年数以十万计。英特尔中国员工在2018年参与志愿活动人数达8,636人,贡献志愿服务时间超过12万小时,参与比例为69%; 10年来累计志愿服务时间超过72 万小时。我们把公司运营与环境可持续发展协调并进,积极减少碳足迹;还和政府、产业链以及公益组织深入合作,共同推动绿色可持续发展。全球独立机构声望研究院发布的“中国最具声望的公司”( RepTrak? 100) 2018年百强排行榜中,英特尔荣登榜首。

讲义

OpenVINO™ 工具包架构

概论

在图的上方可以看到训练的方式。逐一输入一系列的图片,每张图片进入深度学习的模型运算后会产生出结果。透过产生出的结果跟目标图片做比对,其中的误差值透过反向传播来更新模型中各结点权值,达到模型学习的目标。当训练完成后,模型能够根据图片产生出预测,称之为推论。OpenVINO并不包含训练,使用OpenVINO必须要有已训练好的模型。这些训练好的模型来自各种不同深度学习框架。OpenVINO是模型推论的加速工具,它并不能提升已训练好模型的准确度。

OpenVINO™工具包內容

工具包里主要分为三个部分,右上方可以看到传统的电脑视觉库,包含Intel优化过的OpenCV、OpenVX、Samples,可以在推论过程中前处理以及后处理时加速运算。右下方的其它工具集和库。左半边是OpenVINO深度学习推论的核心,即Intel® Deep Learning Deployment Toolkit。OpenVICO除了针对各个深度学习训练好的公开模型之外,针对各种不同的应用,Intel也提供了自行训练的模型,比如行为、表情,及物件侦测等等。

OpenCV*范例

OpenVINO工具包里包含有数个OpenCV的范例,如行人侦测,灰阶图片侦测等等,能够在不经修改状态下做体验。或者以范例为基础,进一步开发。

OpenVX*范例

OpenVINO工具包里包含有数个OpenVX的范例,如GStreamer互操作、影像稳定、自动调整对比,及影像相关的各种政策。有这些范例,开发者能够快速的验证或参考代码来快速开发。

Intel® Deep Learning Deployment Toolkit

Model Optimizer可以把它想象为翻译机。它能够接收时下最热门的深度学习框架所训练好的模型作为输入,将它做初步的模型优化,并翻译为Inference Engine所能认得的格式,称作Intermediate Representation ,简称IR。Inference Engine利用IR档案获取模型的拓扑及权值,进而将资料送进开发者指定的硬件进行运算。开发者能够利用IE所提供的Common API选择使用C++ / Python进行开发,并且仅需要要简单的程序修改就能将所要执行的运算传送到不同的硬件做处理,轻松的达到程序代码重复应用,以及避免维护多套不同的程序。

如何开始使用

浏览https://software.intel.com/en-us/openvino-toolkit 并注册后即可免费下载使用

如何取得教学/使用文档

  • 安装完工具包后,至文件资料夹查找
  • 到线上文档查找https://docs.openvinotoolkit.org/

Model Optimizer功能

提供初步且全面的优化

Model Optimizer的功能是将已训练好的模型从原本AI框架转换成Inference Engine所认得的IR文件。它还提供了一些普遍性的优化,如深度学习层结合与融合、训练层的移除、FP16/FP32浮点数。

优化技术简介

这张图说明了Model Optimizer结合与融合的技术。有些模型在输入是,会对资料做前处理,例如标准化。这个标准化可以透过设定来减去固定值,除去相同的数字。这个动作,也可以通过Model Optimizer的参数mean_values及scale_values达成。还有一些已训练好的模型,包含前处理和后处理的深度学习层,如果模型太过复杂,没有办法一次被转换,这时候你可以使用模型剪裁保留OpenVINO所支持的模型,其它不被支持的模型可以在原本的AI框架中执行。使用input或output参数即可裁剪出模型。

IR文件格式及范例

模型转换后并没有改变原始的权值及偏差值。Model Optimizer只深度学习层的优化,并翻译成IR档案格式。如图所示的范例可以看到原本caffemodel的权值及偏差值被转换成bin档案,来表示原始权值。而prototxt被转换为xml格式。

这里使用范例来说明如何转换Caffe所训练出来的Alexnet。

这里使用范例来说明如何转换TensorFlow所训练出来的VGG16。

Inference Engine功能

架构

Inference Engine提供了单一的Common API给开发者,抽象化了底下的硬件,达到开发一次即可部署到不同硬件上的强大功能。

如图可以看到不同的硬件搭配了不同的插件来实现这个功能。这复杂的实现及优化开发者需不需要操心的,可以把心思放在怎么训练模型和应用。因为这样的设计, Inference Engine提供了另一个功能,开发者能够排序执行运算的硬件,当排序较高的硬件无法执行时, Inference Engine会自动分派运算到第二顺序的硬件做处理。同时, Inference Engine提供了非同步运算方式,让开发者能够在硬件忙碌做推论时,让另一个硬件将下一帧的图片载入并解码。此外,在未来产品规划及衔接,OpenVINO会支援Intel的新产品,未来可以轻松移植到新的平台,享受新科技所带来的效能提升。

开发流程

分为两个主要部分:初始化和推论处理。

OpenVINO提供两种编写Inference Engine程序的程序语言API,Python及C++。

Python version inference engine code sample:

CPP version inference engine code sample:

批次推论

有时为了让输出效能增加,我们会将多个图片堆叠起来一次性送进推论引擎来做推论。例如范例中堆叠的七张图片,一次性推论能够产生出七个结果,因此增加输出的效能。但此时,也会增加每个图片推论结果输出的延迟事件。

这些我们就需要非同步执行,让每个推论只运算一个批次大小,但用多个线程来同步处理。

非同步运算增加效能

在上方的图片演示同步执行的线程状态,其中,蓝色代表主线程读取图片,橘色代表主线程做推论运算,绿色代表主线程针对推论结果做后处理。在同步执行的方式可以看到第二次的推论需要等待前一次推论结果的处理,第二张图片读取完成后才会开始做第二次的推论。非同步的方式,第二次的推论在第一次推论结束后马上就能够被执行,这是因为要送入第二次推论的的图片已在第一次推论进行的同时被读取完毕,如此一来就能够增加推论速度。

如果有多个线程来做出推论的处理是否能够增加推论的效能?是的。在图中可以看到,多一个线程处理推论,在同一个时段内能够处理的数量是能够增加的,让整体的效能变得更好。

DL Boost功能

INT8运算优势

INT8相较于FP32在运算上拥有:

  • 更好的运算效能 每一个指令的产出量更高
  • 更小的内存消耗 更高的带宽,更好的缓存使用
  • 可接受的精度损失

AVX512加速INT8卷积运算

INT8能够增加速度的原因之一是产出量更高。之所以能够提高产出量的原因在于Intel指令的向量化。能够一次性处理多份资料。

AVX512提供512bit的FMA。FMA能够将多份资料做一次性的运算,如相乘或相加。

VNNI再加速卷积运算

深度模型中,计算量最多也最消耗运算资源的就是卷积层及全连接层,优化这两层的运算等于优化的九成模型的运算效能。Intel所提供的VNNI就是针对这两层所做的优化。

Call to Action, Resources

Download:

  • https://software.intel.com/en-us/openvino-toolkit/choose-download

Get started quickly with:

  • https://software.intel.com/en-us/openvino-toolkit/documentation/get-started
  • https://techdecoded.intel.io/
  • https://software.intel.com/en-us/events

Support:

  • Connect with Intel engineers & computer vision experts at the public: https://software.intel.com/en-us/forums/computer-vision

这里列出几个有用的链接能够帮助各位更有效率的利用不同硬件达到深度学习推论最佳化的效果。

课程评价(0)

感谢你参加本课程,请你作出评价:
0/300

以下选自学员评价

暂无精选评价