人工智能、无所不在的计算、无处不在的连接、从云到边缘的基础设施是驱动创新与变革的四大超级力量。近日,在“英特尔AI开发者私享会”现场,英特尔AI 软件布道师武卓分享了在云端和边缘端实现高性能人工智能推理的一些特点与好处。
(英特尔AI 软件布道师武卓线上分享)
云规模开发具有很多的好处:云端能很好的支持多种不同的AI框架和服务,另外在云端可以简化训练开发,比如无需软件下载、无需配置、无需安装,可以直接使用云端所提供的计算资源和服务。在边缘端进行推理也有很多优势:由于数据通常是在边缘端产生和采集的,在边缘端进行推理可以迅速把采集到的数据拿去做推理,得到推理结果,方便在边缘端就能很快得到近乎实时的决策,而同时又能够避免向云端传输大量数据造成的高成本。另外在边缘端会采用异构硬件体系结构,可以利用现有的边缘设备计算,也可以融合许多具有新功能的新硬件平台。
武卓向大家介绍了英特尔基于EFLOW的典型边缘到云的AIOT架构。边缘到云共同协作来完成AIOT的应用场景很多,如智能社区、智慧城市、智慧工厂、智慧物流等应用场景。数据通常是在边缘端进行采集,采集到的边缘数据可以利用边缘设备直接进行实时的推理。
在边缘端进行推理时,可以很好地利用OpenVINO帮助在边缘设备上部署训练好的AI模型,同时可以对AI模型进行优化及推理方面的加速。对于边缘端推理得到的数据结果,以日志或诊断结果的方式上传到云端,让云端进一步加工数据分析的推理结果,产生大规模和深度分析。也可以把各个边缘端得到的推理结果汇总,在进行深度分析的基础之上,还可以形成大型的数据看板,有助于企业可视化管理海量数据。另外在边缘端采集到的数据,也可以形成一些新的训练样本,这一系列新的训练样本上传到云端,可以辅助云端对于现有的模型进行进一步的训练迭代和优化升级。通过边云协同的方式,可以带来高质量的AI解决方案解决实际使用场景里的很多痛点。
武卓展示了智慧医疗和智能制造两个落地案例。
智慧医疗
通过智能筛查系统可以把宫颈癌筛查过程中的图片,在边缘端进行扫描成像。由于涉及病人的隐私,不能直接把所有数据上传到云端,所以这时可以把数据先扫描成像,先在边缘端进行一定的处理,处理之后再把数据上传到云,然后由云端进行更为复杂的智能识别以及诊断辅助。形成了诊断报告之后,再推送到边缘端,把最后的病理报告推送给医生和患者。通过边云协作的模式平均精度可达到91%-98.6%,漏检率小于4%。另外,人工诊断一张切片平均耗时约15-20分钟,基于Intel Xeon平台的人工智能诊断耗时约30秒/张。所以基于AI的解决方案可以非常大地提升诊断的效率,更好地助力中国的“两癌”筛查行动。
智能制造
另外一个例子是利用AI解决方案实时进行产品的缺陷检测。在锂电池研发制造企业工厂的制造环境中,工位属于端侧。在工位上面架设一些摄像头,就可以每个工位每秒钟采集超过400张的图片。对于这种高速采集的实时图片,可以利用英特尔的芯片和OpenVINO的推理能力,在端侧(也就是在工位侧)就能够实现高速采集图片的实时推理,很快就可以得到推理结果。流水线可以认为是边侧,流水线的边侧在得到了端侧实时推理的结果之后,就可以去实现更为复杂的推理以及跨工位的调度。最后边侧所有的数据再汇总到云,也就是数据中心进行更多的算法训练、模型更新等,从而更加有效地提升产品缺陷检测时的精度。利用端边云协同的方案,能够达到的检测准确度小于等于一个PPM的缺陷率,更好地提升了产能和品质。
OpenVINO能真正帮助实现在边缘端对于高速采集的大量数据进行实时推理,进行很方便的部署,可以帮助在边缘端快速地实现AI模型的部署,从而得到很好的应用。接下来武卓介绍了OpenVINO具体是如何实现这些操作的。
在现实的环境里,如果想在边缘端使用训练好的神经网络AI模型的话,该怎么来部署呢?目前GPU是一个比较强大的计算资源,但是功耗和价格都很高,有时在边缘侧可能并不需要达到这么高的性能,这个时候有哪些选择?可以选择云或者是现有设备里已经使用的CPU。有深度学习的工程师可能会有疑惑,CPU做AI模型的推理是不是太慢了?武卓表示英特尔OpenVINO可以帮助加快AI模型的推理。
只需三个步骤就可以轻松使用OpenVINO。
- 创建:创建一个训练模型,或者下载开源的预训练模型;
- 优化:OpenVINO提供了一整套的优化工具帮助压缩模型大小,同时提升推理的速度;
- 部署:把模型部署在使用的硬件平台上面。
OpenVINO支持TensorFlow、PyTorch、PaddlePaddle等多个深度学习框架,并且可以很方便地部署在英特尔的CPU、iGPU、VPU等多个硬件平台上,同时可以兼容Windows、 Linux,以及macOS。
以下是三个模型优化工具。
只需7行代码就可以完成一个图片分类的推理。
通过OpenVINO,只需撰写一次代码就可以多次部署在多个硬件平台上,通过在命令行中更换不同的设备名称可以轻松实现部署。
此外,在硬件部署方面,最新的OpenVINO 202.1版本里面新增了AUTO设备,可以实现设备自动切换选择。
例如,在推理加速方面,我们知道CPU和GPU都可以做推理,GPU的推理速度相对较快,然而GPU在做AI推理的时候往往需要把模型先进行加载和编译,而且整个加载和编译的时间很长,如果开发者使用GPU去做推理通常要等待很长时间才能得到第一次推理的结果。OpenVINO AUTO设备就可以解决这个问题。AUTO设备相当于在CPU和GPU的插件上再构造了一个虚拟的插件,可以帮助开发者自动去选择更适合的硬件设备。
具体来看,通过AUTO设备,可以首先利用CPU的推理在T1的时间点就完成第一次的模型推理,同时在后台进行GPU上的模型编译和加载,到了T2时间点,GPU上所有的模型的推理和加载就都已经完成了,然后再把所有的推理再次切换到GPU上面,同时把CPU上的推理停掉。
利用AUTO设备的加载方式,可以完美结合CPU和GPU的特点,开发者可以不需要再长时间的等待,就可以立刻看到推理的结果。
此外,一些高吞吐量、低延时的性能指标可以通过Performance Hints来实现。
在自然语言处理的场景下,动态输入是很重要的一环。在传统没有动态输入支持的时候,往往需要补充很多冗余信息,达到一个固定的输入长度,再送入到自然语言处理的模型里面去,很显然这种补充的冗余信息就会对性能产生一些影响。
OpenVINO 202.1版本加入了动态输入支持,当问题产生的时候,不论这个问题是短是长,我们都可以把它直接去进行一定的预处理后送到NLP模型中,不需要再补充任何的冗余信息,动态输入就可以对这样的长度不同的输入进行很好的支持。
在开发者旅程的第一步创建过程中,OpenVINO 还提供了一个工具叫做Open Model Zoo,里面涵盖了超过270个经过英特尔验证和优化的预训练模型,开发者可以直接下载使用。
OpenVINO 也针对百度开源的PaddlePaddle深度学习框架提供了很好的支持。
下图是基于第八代和第十一代英特尔芯片测试得到的一些性能数据。
最后是英特尔在GitHub上的另一个开源的资源,叫做OpenVINO Notebooks,里面提供了很多个代码示例,可以直接下载,是完全开源的。OpenVINO Notebooks也可以跑在很多的云资源上面,例如微软Azure,可以很方便地进行部署和运行。