当前位置: 首页 > ds >正文

Intel Developer Cloud - AI 模型性能评估

目录

1. 概述介绍

2. Benchmark APP介绍 

2.1 Benchmark APP

2.2 Benchmark APP命令格式

3. Benchmark 裸机实例演示

3.1 模型准备

3.2 提交任务到边缘节点

3.3 绘制结果

4. Benchmark容器化实例演示

5. 总结


1. 概述介绍

        便捷的AI 模型的推理性能评估是Intel® DevCloud重要的特性,开发者在产品化的道路上也都会碰到性能评估问题,所以我们有必要单独梳理一下此功能。

2. Benchmark APP介绍 

2.1 Benchmark APP

         Benchmark App是Intel® OpenVINO预置的众多工具的其中一个,[FL1] [YC2] [YC3] 可以完成对模型在设备端吞吐模式和延迟模式的基准测试。如果您使用过Intel® OpenVINO工具,大概率会接触过这个工具。考虑到兼容大部分AI模型,它在前处理和后处理实现上尽量简化,只关注推理性能测定,方便快捷是这个工具的特点。Benchmark App运行在Intel® DevCloud边缘端时,会独占边缘设备,因此可以获得真实准确的数据。

2.2 Benchmark APP命令格式

        Benchmark App启动时根据设定的相关参数加载模型输入,读取模型文件,加载推理引擎,加载模型文件,启动推理任务。Benchmark App 可以在裸机环境和容器化环境中快速部署。

        我们在这里简单介绍一下Benchmark  App的相关参数:

usage: benchmark_app.py [-h] [-i PATH_TO_INPUT] -m PATH_TO_MODEL[-d TARGET_DEVICE][-l PATH_TO_EXTENSION] [-c PATH_TO_CLDNN_CONFIG][-api {sync,async}] [-niter NUMBER_ITERATIONS][-b BATCH_SIZE][-stream_output [STREAM_OUTPUT]] [-t TIME][-progress [PROGRESS]] [-nstreams NUMBER_STREAMS][-nthreads NUMBER_THREADS] [-pin {YES,NO}][--exec_graph_path EXEC_GRAPH_PATH][-pc [PERF_COUNTS]]
  • -i PATH_TO_INPUT, --path_to_input PATH_TO_INPUT
    选项,包含图像和/或二进制文件的文件夹的路径,或特定的图像或二进制文件;如果不指定input参数,将使用随机值作为输入。 注意:随机值输入对于算力与输入相关的模型是不适用的。

图2-1 输入使用随机值作

  • -m PATH_TO_MODEL, --path_to_model PATH_TO_MODEL
    必须项,包含经过训练的.xml或者.onnx或者.prototxt文件的路径,也可以是训练好的.blob格式编译模型的路径。
  • -d TARGET_DEVICE, --target_device TARGET_DEVICE
    可选项,应用程序为指定的设备寻找合适的插件。
    以是: CPU, GPU, FPGA, HDDL or MYRIAD ,默认是CPU
    用"-d HETERO:<comma separated devices list>" 格式,指定HETERO插件。
    用"-d MULTI:<comma separated devices list>" 格式,指定多插件。
  •   -api {sync,async}, --api_type {sync,async}
    可选项,用来指明两种推理模式sync或者async API. 默认是 async.,
  •   -niter NUMBER_ITERATIONS, --number_iterations NUMBER_ITERATIONS
    可选项, 指明迭代次数。未指定时,则根据设备计算迭代次数。
  • -stream_output [STREAM_OUTPUT]
    可选项, 以纯文本打印进度。当指定时,以交互式进度条多行输出。
  • -progress [PROGRESS]
    可选项,显示进度条;默认false.

3. Benchmark 裸机实例演示

        Benchmark App 路径:登录后在Learn页面,选择Tutorials ,选择Benchmark App,打开BenchmarkApp_python.ipynb文件,点击工具栏的Run-> Run Selected Cells,等待应用程序运行结束即可。此时运行的代码和模型都是预置好的,开发者可以基于此来上传自己的模型,简单修改路径,就可以测试自己的模型了。注意:如果运行时出现报错,可以尝试切换kernel.

3.1 模型准备

Step1.设置环境变量,导入并安装依赖包

Step2.下载推理模型, 本例使用resnet-50 Tensorflow* 模型实现进行推理

! downloader.py --name resnet-50-tf -o models

Step3.使用FP16量化转换模型

!mo.py \--input_model models/public/resnet-50-tf/resnet_v1-50.pb \--input_shape=[1,224,224,3] \--mean_values=[123.68,116.78,103.94] \-o models/FP16 \--data_type FP16

        也可将其转化为FP32的,主要是将上述命令换成--data_type FP32即可。

3.2 提交任务到边缘节点

        将任务提交到边缘节点前,需要有一个任务脚本来告诉边缘节点怎么执行这个应程序。这个任务脚本很重要,但大可不必在这个位置花费太多时间。因为它的主要功能就是设定好执行步骤,把参数传递给应用程序。它很重要,但不是重点。

  • benchmark_app_job.sh

        它是提交到边缘端运行的bash脚本,其主要内容是定义变量,通过该文件调用benchmark_app.py,应用程序源码就位于当前目录,可以直接查看。

%%writefile benchmark_app_job.sh# The default path for the job is your home directory, so we change directory to where the files are.cd $PBS_O_WORKDIRJOB_ID=`basename ${0} | cut -f1 -d"."`OUTPUT_FILE=$1DEVICE=$2API=$3echo VENV_PATH=$VENV_PATHecho OPENVINO_RUNTIME=$OPENVINO_RUNTIME# Follow this order of setting up environment for openVINO 2022.1.0.553echo "Activating a Python virtual environment from ${VENV_PATH}..."source ${VENV_PATH}/bin/activateecho "Activating OpenVINO variables from ${OPENVINO_RUNTIME}..."source ${OPENVINO_RUNTIME}/setupvars.sh# Benchmark Application script writes output to a file inside a directory. We make sure that this directory exists.#  The output directory is the first argument of the bash scriptmkdir -p $OUTPUT_FILESAMPLEPATH=$PBS_O_WORKDIRmkdir -p ${OUTPUT_FILE}rm -f ${OUTPUT_FILE}/*FP_MODEL="FP16"# Running the benchmark application codepython3 benchmark_app.py -m ${SAMPLEPATH}/models/${FP_MODEL}/resnet_v1-50.xml \-d $DEVICE \-niter 10 \-api $API \--report_type detailed_counters \--report_folder ${SAMPLEPATH}/${OUTPUT_FILE}
  • 提交任务到设备

        有了作业脚本,我们就可以把任务提交到设备。提交到单设备:

图3-1提交任务

3.3 绘制结果

        直接点击Pilot Results,就可以自动生成不同设备上的性能分析竖状图,非常方便进行对比分析。

图3-2查看结果

  1. Benchmark输出文件
  • 在results/的相关文件夹下有类似benchmark_report.csv的文件,可查看Benchmark的配置和运行结果。

图3-3 Benchmark 结果输出

  • 当前工作目录下的benchmark_app_job.sh.o123944标准输出文件中, 记录了Benchmark运行的详细输出log。

图3-4 Benchmark 输出日志

4. Benchmark容器化实例演示

        前面我们通过Jupyter Lab运行了Benchmark裸机实例,在Container Playground环境中也提供了Benchmark 基准测试方法,使用相同的测试程序,仅仅是在部署方式上的差异,当然在系统层面为了支持容器化部署,也做相关的调整,但对性能的影响是有限的。

        对于Benchmark 容器具体信息,可以参考实例详情页面,也可以点击”View / Edit Code” 去查看源码。通过详情页面我们可以了解到,容器内部署了Intel® Distribution of OpenVINO™ Toolkit - Version 2021.4.2版本,Benchmarking (Python)  程序加载Resnet-50-tf  FP16精度模型,并执行了模型推理。

图4-1 Benchmark 容器详情

Container Playground中的Benchmark运行步骤如下:

Step1.进入方式:
登录后,点击Launch页面,在Container Playground下选择Get Started / Marketplace,即可找到Benchmark Sample。

Step2.启动应用:
在Marketplace页面找到Benchmark后,点击下面Launch,进入container配置页面,点击右下角Launch。
选择目标平台,再点击右下角Launch,便可启动项目.

Step3.监视状态:
项目启动后,回到 Dashboard页面,我们可以看到benchmark-sample的运行状态变化:Queue->Deploy->Running->Completed。

tep4.查看结果:
项目运行结束后, 点击Output按钮,在output_benchmark_app_latest/results/FP16下,可查看到相应的输出结果。

图4-2 Benchmark 输出文件

其中benchmark_report.csv具体内容如下:

图4-3 benchmark_report 输出文件

5. 总结

        耐心看完這篇文章,相信您完全可以自行运行Intel Developer Cloud for the Edge 平台上的基准测试程序了,不过变化总是一直存在的,如果您在执行过程中碰到问题,也可以把相关信息反馈给我哦,期待和你一起进步。


http://www.xdnf.cn/news/11414.html

相关文章:

  • 【odoo15】在Action设置里增添一个自己的list
  • 多日之苦终得救:“威金”专杀工具发布(转)
  • 制作img镜像文件的5种方法
  • Matlab:自定义等高线图的填充颜色
  • 【贝加莱PLC基础教学】1.AutiomationStudio软件安装
  • viper4android fx 驱动,ViPER4Android FX 音效驱动社区版安
  • 前端知识2-CSS
  • 传奇私服架设(温故2002,自己制作传奇私服服务器)
  • MIPI 系列之 DCS
  • 软件可靠性、可维护性、可用性
  • 使用PowerDesigner设计数据库保姆级教程
  • 什么是android market?国内三大类android market知多少?
  • JSP内置对象:使用getparametervalues()获取数据
  • C# Span 入门
  • Extjs多标签关闭,支持关闭左侧和右侧标签。
  • 黑客是如何攻破一个网站的?
  • oracle常见问题、了解知识点及简单命令学习
  • 开源文档管理软件KnowledgeTree安装
  • Openbravo ERP介绍(一)
  • 分享88个ASP整站程序源码,总有一款适合您
  • 黑客是怎么通过IP地址攻击的?
  • Linux共享磁盘分区,linux中ISCSI(网络共享磁盘)
  • Windows server——部署web服务
  • 关于代理服务器的原理及用法
  • 通信线路通信线路
  • ping命令详解
  • No message found under code 'world' for locale 'en_US'.
  • [小技巧] 用搜索引擎查找博客中的内容
  • Dynamips报错及及非正常现象的解决办法汇总
  • RFID-射频识别技术