更新时间:2022-03-30 GMT+08:00
分享

开发环境内调试

在开发环境容器内调试是指开发好的AI应用直接在开发环境中运行和调试,这里提供了两种调试方式,分别对应了ModelBox框架的两种图运行方式。

图运行方式

ModelBox有两种运行图的方式:

这两种方式的区别是是否携带服务插件,服务插件提供了对接ModelArts推理模块及公有云其他云服务的能力。在本地调试流程图时,往往不需要加载服务插件,只是希望验证流程图本身的正确性,因此采用不带服务插件的运行模式即可。当服务需要部署到推理模块时,或者需要对接真实业务的输入输出流进行调测时,需要切换到携带服务插件的运行模式进行调试。

当服务为异步服务时,需要使用携带服务插件的运行模式。插件的作用是用于对接公有云其他服务(例如OBS)作为服务的输入输出。同步服务由于是接收http请求作为输入,因此无需使用服务插件。

当前推理异步服务功能受限开放,如需使用需要先提工单申请

不携带服务插件运行调试(本地输入输出调试)

不携带服务插件的运行模式通常使用的是本地的测试输入作为AI应用输入,模板中的测试输入数据存放在/test/assets目录下。

图1 本地测试数据

代码调试使用对应语言的调试方法即可,c++使用gdb,python使用pdb。GDB调试时,需要先配置.vscode目录下的编译配置文件tasks.json和调试配置文件launch.json,具体配置可参考上一章节中样例AI应用的配置说明。

配置好后,直接按F5即可进入调试模式。更多调试使用可参考官网VSCode调试指南

图2 使用VSCode调试代码

不携带服务插件运行调试可以分为本地图片请求调试和本地视频调试,这两种调试方式对应了不同的输入输出。

图编写完成后,鼠标右键工程列表中当前工程,点击“Run”,选择相应的toml图文件,点击运行该图,通过控制台可以查看运行日志。

  • 本地图片请求调试

    本地图片请求调试适用于同步服务的调试,该种调试方法通过解析http请求获取图片。本地图片请求调试方法可以参考图片行人检测pedestrian_detection模板中的pedestrian_image_out_json.toml文件。

    该toml文件图片中框出来的三行中,httpserver_sync_receive定义一个http服务器流单元,用于接收用户的请求,param_analysis定义了一个参数解析的流单元,用于解析用户发送的http请求,这个流单元是用户自定义的流单元,开发者可以参考src/flowunit中的该流单元的实现自定义实现。image_decoder流单元定义了一个图片解码的流单元。通过以上三个流单元可以实现对用户http请求的解析。

  • 本地视频调试

    本地视频调试适用异步服务的调试,该方法通过读取本地视频文件对算法进行调试。本地图片请求调试使用方法可以参考视频车辆检测vehicle_detection模板中vehicle_detection.toml文件。

    该toml文件定义了视频作为应用的输入,rtsp流作为应用的输出。video_input定义了视频输入流单元,用于配置输入视频源。videodemuxer定义了视频流提取流单元,用于提取视频文件中的视频流,video_decoder定义了视频解码流单元。video_encoder定义了视频编码流单元,该toml文件将视频输出到rtsp地址。

携带服务插件运行调试(云服务输入输出调试)

当前推理异步服务功能受限开放,如需使用需要先提工单申请。

当需要部署为ModelArts推理服务或接入真实输入输出进行开发调测时,需要选用这种模式。当前该功能仅支持OBS源作为输入和输出。携带服务插件运行调试方式适用于异步服务的调试,和本地视频调试的区别在于该种方式可以配置其他云服务作为应用的输入,本地IVA视频调试使用方法可以参考vehicle_detection模板中vehicle_detection_iva.toml文件:

图3 两种运行方式下的图文件

这两个toml图文件的差别主要在于输入和输出的功能单元。当使用本地输入输出调试时,功能单元的配置如图4所示,输入为本地文件,输出为推送到本地的rtsp视频流。

图4 本地输入输出功能单元

当使用云服务输入输出调试时,功能单元的配置需要和服务插件配合使用,具体写法如图5所示。

图5 云服务输入输出功能单元

当本地调试完成后需要进行部署到ModelArts推理时,也需要使用携带服务插件运行的图(异步推理服务仅支持携带服务插件运行模式)。后续进行打包操作时,需要确保CMakeLists.txt中配置的图文件为携带服务插件的图文件。

图6 打包配置使用的图文件名称

图编写完成后,鼠标右键工程列表中当前工程,点击“Run Mock”,输入输入和输出路径。点击“Confirm”运行。

运行日志保存在/var/log/modelbox/modelbox-server.log文件中,运行成功后可以进入输出数据所在路径查看运行结果。

分享:

    相关文档

    相关产品

close