使用OpenVINO™ 优化和部署DenseNet模型并在DevCloud上完成性能测试

openlab_4276841a 更新于 2年前

2 使用Intel® DevCloud 不同边缘节点进行性能测试

面向边缘的Intel® DevCloud是一项云服务,旨在帮助开发人员使用OpenVINO™ 工具包构建原型并试验计算机视觉应用,注册成功后,可以访问一系列的基于Python和C++的Iupyter* Notebook教程和示例解决方案,并通过web浏览器直接执行。本文通过Jupyter* Notebook中给出的基于Python语言的Benchmark_APP示例,访问不同的边缘节点进行性能测试。

使用Intel® DevCloud在不同的边缘节点进行性能测试一共分为四个步骤:

第一步,在Intel® DevCloud的Benchmak_APP目录下创建IR_models文件夹目录结构

第二步,将FC-DenseNet-103 IR模型导入IR_models内对应数据格式子文件夹

第三步,使用Benchmark_APP对不同的边缘节点进行性能测试

第四步,通过测试结果进行性能分析,选出高性能AI部署解决方案

具体步骤如流程图2-1所示:


2.1 生成IR_models目录结构并导入模型


在Jupyter* Notebooks的Reference-samples/iot-devcloud/openvino-dev-latest/develop-samples/python/benchmarkAPP-python的所在目录中,创建IR_models目录结构,因为Benckmark_APP的路径是固定的,需要配合其固定好的目录结构,让Benchmark_APP能够找到对应的IR_models。首先创建IR_models文件夹,并在文件夹中创建FP16、FP16-INT8、FP32三个不同数据格式的子文件夹,上传自己的模型到对应的子文件夹中。其具体步骤如下:

第一步,首先进入网址 https://devcloud.intel.com/edge/,注册并登录,然后进入网址

https://software.intel.com/content/www/us/en/develop/tools/devcloud/edge/build.html后,点击页面中显示的“Connect and Create”按键,如图2-1所示。即可转入Jupyter* Notebooks界面,然后即可运行相关测试。


第二步,进入Reference-samples/iot-devcloud/openvino-dev-latest/develop-samples/python/benchmarkAPP-python路径目录下,然后点开右上方的“New”选项,在弹出的选项框中选择“Teminal”进入命令行终端。如图2-2所示。


第三步,进入命令行终端后即可在命令行终端使用命令创建IR_models文件夹目录结构,进入Teminal后,使用命令< cd ~/Reference-samples/iot-devcloud/openvino-dev-latest/developer-samples/python/benchmarkApp-python >进入benchmarkAPP-python的文件夹目录下,再使用命令列出其全部子文件夹,然后使用命令创建FC-DenseNet-103模型所对应的工作文件夹,如图2-3所示。


第四步,使用命令进入其FC-DenseNet-103目录下,使用命令创建IR_models文件夹,继续使用命令进入其目录下,分别使用命令、,创建三种不同数据类型的子文件夹,以配合Benchmark_APP需要的目录结构,三种不同数据格式的子文件夹创建完毕后,如图2-4所示,即可根据模型的数据格式上传到对应文件夹。


第五步,导入FC-DenseNet-103模型,根据使用模型优化器进行模型转换时的数据格式,对应不同子文件夹上传FC-DenseNet-103 IR模型,本文以数据格式FP32为例,将IR模型导入FP32的文件夹,如图2-5所示。首先进入FP32子文件夹内,点击右上角“Upload”按键,选择正确本地路径,再点击“确定”即可将FC-DenseNet-103 IR模型上传到数据格式为FP32的IR_models文件夹中。


2.2 访问边缘节点进行性能测试


将“创建IR_models目录结构”和“导入本地FC-DenseNet-03模型”的准备工作做完后,即可访问Intel® DevCloud的边缘节点,对不同的Intel硬件进行性能的测试本文。使用Intel® DevCloud 提供的基于Python语言的Benchmark_APP示例,访问不同的边缘节点进行性能测试。其步骤如下:

第一步,打开Reference-samples/iot-devcloud/openvino-dev-latest/developer-samples/python/benchmarkApp-python路径下的“BenchmarkAPP.ipynb”,点击左边目录“1.9 Creating lists of FP16 and FP32 models”查看其Python脚本,并在脚本中添加语句“models = ["FC-DenseNet-103"]”,从头运行到1.9节,可以看到以及读入FP32数据格式的FC-DenseNet-03 IR模型,如图2-6所示。

3


第二步,读入IR模型后,请先运行“BenchmarkAPP.ipynb”里的“Intel® Distribution of OpenVINO™ Toolkit version check:”和“Wait until the benchmarking report files are written”两个部分。然后即可使用深度学习模型对单个系统进行基准测试。在“Benchmark Individual system with the deep learning model”这一部分单元格中,列举五个不同硬件的边缘节点来进行推理工作。首先以“3.0.1 Run the Benchmark tool app with Intel® Core™ CPU”单元格为例,此单元格将作业提交给配备Intel® Core™ i5 6500TE CPU的IEI Tank* 870的边缘节点,推理工作将在CPU上运行。运行完此单元格后,会在“benchmarkAPP-python”路径下生成相关的“benchmark_app_job.sh…”相关运行日志文件。点开日志文件,便可以显示出在此边缘节点推理的吞吐量和延迟,如图2-7所示:



第三步,确定Intel® DevCloud所支持的边缘节点群,边缘计算节点是面向物联网边缘机器学习推理构建和配置的工业计算系统,并已经托管在DenCloud中,一边使用预先开发的示例或者试验各种架构和解决方案。首先确定Intel® DevCloud所支持的边缘节点群,以及他们的Group ID。进入网址:

https://devcloud.intel.com/zh/edge/resource_docs/selecting_targets/-u8fb9-u7f18-u8282-u70b9即可查看Intel® DevCloud所支持的边缘节点群及其相关的配置信息,如图2-8所示:


3 对不同边缘节点进行性能分析

在边缘节点群中可以根据需求选择不同的边缘节点,对不同的架构或解决方案进行试验,在本步骤以Group ID为idc046,CPU为Intel® Core™ i5 1145G7E,GPU为Intel® Iris® Xe Graphics边缘节点为例,介绍怎样在“BenchmarkAPP.ipynb”中添加新的边缘节点并使用Benchmark_APP对其边缘节点的模型部署进行性能测试和分析。

3.1 使用CPU边缘节点进行性能分析


使用Intel® Core™ i5 1145G7E CPU边缘节点进行性能分析的具体操作步骤如下:

第一步,在“BenchmarkAPP.ipynb”中重新打开一个单元格,并将单元格“3.0.1 Run the Benchmark tool app with Intel® Core™ CPU”里的代码脚本**进新打开的单元格。

第二步,将单元格内脚本代码的第一行单引号里面的内容改为新的Group ID,即为改成。启动运行单元格,同2.2节第二步表述的过程一样,会在“benchmarkAPP-python”路径下生成相关的“benchmark_app_job.sh…”相关运行日志文件。点开日志文件,便可以显示出在CPU为Intel® Core™ i5 1145G7E边缘节点推理的吞吐量和延迟,如图3-1所示:


3.2 使用GPU边缘节点进行性能分析


使用Intel® Iris® Xe Graphics GPU边缘节点进行性能分析的具体操作步骤如下:

第一步,在“BenchmarkAPP.ipynb”中重新打开一个单元格,并将单元格“3.0.3 Run Benchmark tool application with Intel® HD Graphics 530 GPU”里的代码脚本**进新打开的单元格。

第二步,将单元格内脚本代码的第一行单引号里面的内容改为新的Group ID,即为改成。

第三步
,由于本次的GPU边缘节点为Intel® Iris® Xe Graphics,且模型的数据格式为FP32,所以请修改脚本中第十九行<benchmarks["intel® HD Graphics 530 GPU"] = wait_for_job_to_finish(job_id_gpu,verbose,model)>,将双引号内的GPU版本更改为本次试验的GPU版本,即为<benchmarks["intel® Iris® Xe Graphics GPU"] = wait_for_job_to_finish(job_id_gpu,verbose,model)>,如图3-2所示:



第四步,代码更改完毕后,即可启动运行单元格,同2.2节第二步表述的过程一样,会在“benchmarkAPP-python”路径下生成相关的“benchmark_app_job.sh…”相关运行日志文件。点开日志文件,便可以显示出在GPU为Intel® Iris® Xe Graphics边缘节点推理的吞吐量和延迟,如图3-3所示:


3.3 FC-DenseNet-103模型在不边同缘节点性能


将Group ID为idc046,CPU为Intel® Core™ i5 1145G7E,GPU为Intel® Iris® Xe Graphics边缘节点的CPU和GPU吞吐量和延迟测试出来后,即可同样步骤对其他边缘节点进行性能的分析,本文选择了7-11th CPU的边缘节点,进行性能的测试与对比,结果如表3-1所示,在表中的边缘节点群中可以根据需求选择不同的边缘节点,对不同的架构或解决方案进行试验。




4 总结


通过使用Intel® DevCloud的Benchmark_APP在各个目标硬件上进行性能测试,其覆盖的边缘计算方案可以应用多个场景,比如在最高吞吐量应用场景可以选择i7-1185G7或i5-1145G7搭配Iris® Xe Graphics,通过Iris® Xe Graphics进行IR模型的推理,最低功耗应用场景可以选择功耗为15W TDP的i7-1185G7或i5-1145G7,通过Iris® Xe Graphics进行IR模型的推理。或者推荐功耗为15W TDP的i7-8865U,由CPU做推理。由此看来DevCloud和OpenVINO™ 工具包可以帮助计算机视觉应用程序开发人员充分利用其应用程序,并可以为每个任务和解决方案选择最理想的硬件。

在AI应用程序、解决方案等开发过程中,在程序准备好后,我们可以在开发服务器的CPU上运行代码,或者将代码发送至Intel® DevCloud中的一个或者多个边缘计算硬件集群,以加速推理。通过这些试验,开发者可以完全了解了所需的知识,避免潜在的陷阱、优化性能,确认需要采购的硬件,以加速产品上市速度!

本文转自【公众号:英特尔物联网】

0个评论