【云小课】EI第49课 Modelarts遇上ModelBox框架,高效助力AI应用开发
AI应用开发是指将训练好的一个或多个模型编排开发成推理应用以满足具体业务场景下的推理需求,比如视频质量检测、交通拥堵诊断等。AI应用开发在整个AI开发流程的位置大致如图所示。
通常为了降低开发难度、提升AI应用的性能,开发者会基于深度学习推理框架开发AI应用,例如Google开源的MediaPipe、腾讯开源的TNN等。ModelArts提供了基于华为云ModelBox推理框架的开发环境。
ModelBox是一套统一的端边云AI应用开发和运行框架的规范,以及在此规范上所实现的运行时框架。在此基础上,各参与方可贡献相关的代码、工具、平台、文档等相关内容。
今天就带大家揭秘如何基于ModelBox框架进行AI应用开发~
步骤一:准备开发环境
使用华为云账号创建云上的AI应用开发环境,并使用本地VSCode插件进行远程连接。
1、创建访问密钥
在华为云“帐号中心 > 我的凭证 > 访问密钥”中获取访问密钥(Access Key Id和Secret Access Key)。
详情请见创建访问密钥。
2、下载并安装VSCode。
VSCode的插件工具包VSCode-ToolKit集成在ModelArts管理控制台中,请先下载并安装VSCode插件工具包。
Windows用户下载VSCode地址:https://update.code.visualstudio.com/1.57.1/win32-x64-user/stable
其他系统用户的下载VSCode地址: https://code.visualstudio.com/updates/v1_57
详情请见安装VSCode软件及插件。
3、创建云上开发环境
创建Notebook实例,在填写Notebook详细参数时,镜像选择ModelBox镜像。详情请见创建云上开发环境。
4、连接云上开发环境
使用本地VSCode插件连接云上开发环境Notebook。详情请见连接云上开发环境。
步骤二:创建应用
开发环境提供云上的ModelArts VSCode插件,可以通过插件创建一个应用工程,该工程包含一个可以直接运行的应用样例。开发者可以通过查看工程结构、运行样例,初步了解应用工程组成及运行方法。
1、单击VSCode左侧导航栏的ModelArts图标,单击“Create Project”创建工程。如果项目列表中已经有工程了,则点击工程列表中右上角的“+”创建工程。
2、目前插件中内置了车辆检测(vehicle_detection)、行人检测(pedestrian_detection)以及空工程(empty)三个样例,输入工程名称、工程路径以及选择工程模板,这里以车辆检测“vehicle_detection”模板为例,点击“Confirm”创建工程
3、创建完成后右下角会弹出信息,单击“yes”打开工程。
4、工程打开后,VSCode弹出的确认信息框选择“Yes”选项。
此时左侧Explorer栏可以看到创建好的工程结构。
工程中的目录作用介绍如下:
- .vscode: vscode 配置文件,包含工程设置和运行的配置文件
- build:编译产物所在目录
- CMake:CMake配置文件
- log:制作镜像以及实例运行日志
- package:rpm打包配置文件
- src: 工程开发代码主目录
- test: 测试代码及测试数据
- thirdparty:工程依赖的第三方库
- tools: 工程构建依赖工具
- py: 工程套件命令行入口
该工程包含已经配置好的CMakeList文件,开发者在src目录下进行AI应用开发后,不修改或少量修改CMakeList即可直接编译运行,开发者也可以将该工程目录直接上传至自己的git代码仓库。
如果工程中根目录中有requirements.txt文件,意味着该工程需要安装第三方python依赖,点击菜单栏中的“Terminal”->“New Terminal”新建一个终端窗口,输入以下命令即可安装。这个路径中的文件在实例重启之后会恢复,建议每次重启之后都重新执行下面的命令。
pip install -r requirements.txt --target /home/ma-user/.local/lib/python3.7/site-packages --upgrade --force-reinstall
应用样例:
步骤三:开发&调试应用
开发者可以参考当前的工程样例开发自己的AI应用,并在当前环境中进行代码调试、包括使用环境内的测试文件调试,以及接入云上真实业务数据的调试。
1、准备模型
AI应用开发的前序步骤是模型训练,因此开始进行AI应用开发时,您已经有训练优化好的可使用的模型了。当前ModelBox GPU镜像支持的模型类型有TensorRT和PyTorch模型,具体的版本号在您创建开发环境选择镜像时镜像名称中可以看到。
2、创建空模板
用户可以基于空模板进行实例应用的开发。
3、开发流程图
流程图(Graph)是应用逻辑的表述,ModelBox将根据流程图构建应用的处理逻辑,因此在AI应用开发中,流程图的开发是首要进行的,流程图开发完毕后,才能明确需要开发的功能单元。
流程图的格式如下,编写时可参考视频车辆检测模板“vehicle_detection”样例中的src/graph/vehicle_detection.toml,关于图的编写语法可以查看Graphviz DOT的指导。
[driver]
dir = ["build/drivers"] #指定功能单元等驱动加载路径,可以指定多个,逗号分隔,编译后的功能单元位于build/drivers
[log]
level="INFO"
[flow]
desc = "example"
[graph]
format = "graphviz" #流程图的格式,目前仅支持graphviz
graphconf = '''digraph example {
node [shape=Mrecord]
queue_size = 32
batch_size = 1
# 在此处编写自己的流程图
}'''
4、开发功能单元
- 新建推理功能单元
右键工程列表中的当前工程,点击“Create Flowunit”,输入流单元名称,流单元类型选择“infer”。流单元目录使用默认的路径。
在开发推理功能单元时,只需要提供独立的toml配置文件,指定推理功能单元的基本属性即可,其目录结构为:
[some-flowunit]
|---[some-flowunit].toml // 配置文件
|---[model].engine // 模型文件
编写时可以参考视频车辆检测样例中的推理功能单元:src/flowunit/vehicle_inference。
- cpp/python功能单元
这里以cpp功能单元为例,右键工程列表中的当前工程,点击“Create Flowunit”,输入流单元名称,流单元类型选择“cpp”。流单元目录使用默认的路径:
编排好toml图后,单击“Run>Run Without Debugging”或者使用快捷键Ctrl+F5运行程序。:
步骤四:调试应用
这种方式是指在开发环境容器中直接运行AI应用,具体又分为两种,分别对应ModelBox的两种图运行方式:
- 不携带服务插件运行调试(本地输入输出调试)
- 携带服务插件运行调试(云服务输入输出调试)
这两种方式的区别是是否携带服务插件,服务插件提供了对接ModelArts推理模块及公有云其他云服务的能力。在本地调试流程图时,往往不需要加载服务插件,只是希望验证流程图本身的正确性,因此采用不带服务插件的运行模式即可。当服务需要部署到推理模块时,或者需要对接真实业务的输入输出流进行调测时,需要切换到携带服务插件的运行模式进行调试。
这种方式是指将开发好的AI应用构建成应用镜像并部署到推理环境,通过在推理环境运行服务并查看日志的方式,确保开发好的AI应用可以正常部署。
步骤五:将应用发布至ModelArts模型管理
开发好的AI应用可以发布到ModelArts推理的AI应用管理,用户可以进一步在推理控制台界面上执行生产部署等操作。
1、打包AI应用
鼠标右键工程列表中当前工程,点击“Package”将会打包当前工程,生成该工程的rpm包。
2、 构建镜像
将AI应用打好的rpm包和基础镜像打成新的应用镜像,用于部署。生产部署时,Dockerfile中配置的基础镜像需要选择runtime镜像。
鼠标右键工程列表中的当前工程,点击“Build Image”,输入镜像名称、镜像版本、OBS地址。
镜像构建首次执行大约耗时5~8min,执行成功后镜像将被推送到华为云SWR服务的组织中,SWR地址会打印在terminal控制台。命令执行结束后,镜像构建的日志会在下载至工程log目录下docker-build.log文件中,可通过日志查看构建过程信息。
3、发布AI应用
鼠标右键工程列表中当前工程,点击“Public”,输入应用名称、应用版本、请求方式以及镜像地址。点击高级选项可以配置更加丰富的选项
4、部署AI应用
AI应用发布成功后,进入“部署上线>在线服务”模块进行部署操作,部署时选择发布的AI应用进行部署即可。控制台上提供了比开发环境的命令行更为丰富的部署选项,例如服务流量限制、服务自动停止等,用户可以根据需要进行配置,具体可参考部署为在线服务。
- 点赞
- 收藏
- 关注作者
评论(0)