9. MacaRT-ModelZoo

9.1. MacaRT-ModelZoo介绍

MacaRT-ModelZoo方便用户在曦云系列GPU上快速部署验证深度学习模型,提供多种常见模型在曦云系列GPU上的部署方案,应用于图片分类、物体检测、语义分割、超分辨率、行为识别、关键点检测、字符识别、语音识别、推荐系统、多模态、自然语言处理、图生成等场景。具有如下特性:

  • 丰富的应用场景,涵盖大部分主流网络模型,可使用现有或增加同类模型快速部署验证

  • 易用的运行环境,提供的Docker镜像具有完备的MacaRT-ModelZoo模型部署软件栈

  • 完整的数据链路,包含数据预处理、模型推理、后处理及结果指标评估等模块的实现

  • 便捷的模型评估,通过命令参数可评估不同模型在多种精度下的模型精度和性能

  • 统一的参数配置,从规范化的配置文件中获取模型部署量化、预处理与后处理等参数

9.2. 模型评测条件

MacaRT-ModelZoo上快速实现模型部署的依赖条件如下所示:

  • 安装有曦云系列GPU板卡及完整运行时软件栈的主机

  • modelzoo.cnn.inference的Release Docker镜像软件包

  • ONNX格式的模型文件和带有标注信息的数据集

9.3. 代码目录结构及说明

MacaRT-ModelZoo的目录结构和说明如下(以classification类别中Resnet18模型评测展开):

├── _base(模型评测基类代码)
├── classification(图像分类类)
         ├── code(模型评测代码)
         ├── data(模型评测数据集,软链接到实际数据集目录)
         ├── models(模型配置集合)
                ├── ox_resnet18_224x224(模型配置目录)
                ├── config.yaml(模型评测配置参数)
                └── performance.json(模型标准的精度和性能指标)
         └── readme.md(模型评测说明,注意每个模型类别的此文件,可能有特殊说明)
├── action2(行为识别类)
├── Autoregressive(语音处理类)
├── CTR(推荐系统类)
├── detection(物体检测类)
├── face_recognition(人脸识别类)
├── landmark(关键点检测类)
├── multimodal(多模态类)
├── NLP_Transformer(自然语言处理类)
├── OCR(字符识别类)
├── segmentation(语义分割类)
├── stable_diffusion(图生成类)
└── video_enhancement(超分辨率类)

9.4. 源码、模型和数据集

9.4.1. 源码镜像获取

可通过沐曦软件中心获取MacaRT-ModelZoo源代码的镜像和模型。

操作步骤

  1. 进入软件中心,点击Docker的子页面。

  2. 选择曦云系列GPU的型号、发布版本号。

  3. 点击AI查看MACARTAI相关的Docker镜像。

  4. 软件包类型选择modelzoo.cnn.inference架构类型选择amd64arm64操作系统类型选择CentOSUbuntu等。

通过上述操作选择MacaRT-ModelZoo源代码的镜像,点击docker命令复制,获取此Docker镜像的拉取命令,可通过此命令在沐曦软件中心服务器上拉取此镜像。

进入容器,可在/workspace/modelzoo/MACA_AI_CNN目录查看MacaRT-ModelZoo源代码,此容器除了包含MacaRT-ModelZoo源码,还包含完整的MacaRT-ModelZoo运行时软件栈,可大大减少用户在搭建运行环境所耗费的时间。容器镜像的使用,参见《曦云® 系列通用GPU用户指南》中“容器相关场景支持”章节。

9.4.2. 模型获取

MacaRT-ModelZoo可评测的模型会陆续更新到沐曦软件中心,进入软件中心后点击Model的子页面,可根据模型类别模型名称,点击下载得到模型。

用户也可以使用公开模型或私有模型进行评测,如果被测评的模型预处理、后处理和指标评估与这一类别中其他的不一致,则需要修改MacaRT-ModelZoo代码和配置文件对其支持。 此外,模型评测的成功与否还取决于MacaRT对模型的支持能力,遇到不支持的算子可以联系沐曦技术支持工程师在MacaRT上增加算子,也可以添加MacaRT自定义算子,操作步骤参见 3.5 自定义算子

9.4.3. 数据集获取

MacaRT-ModelZoo中模型的量化和结果指标评估需要数据集,有以下三种获取方式:

  • 联系沐曦技术支持工程师,获取数据集,无需修改直接使用

  • 下载公开数据集,可能需要调整

  • 自己制作数据集,可能需要调整

需要调整的原因是:可能存在数据集的数据存放目录结构和标注信息与MacaRT-ModelZoo中要求的数据集有所差异。

9.5. 模型评测步骤

9.5.1. 启动容器镜像

从发布的软件包中获取modelzoo.cnn.inference容器镜像并启动,此容器镜像包含MacaRT-ModelZoo模型评测所需的运行时软件栈。 容器镜像的使用,参见《曦云® 系列通用GPU用户指南》中“容器相关场景支持”章节。容器镜像启动时需要挂载用户的ONNX模型目录和数据集目录。

9.5.2. 建立数据集的关联

参见 9.4.3 数据集获取,准备好数据集后,切换到模型大类目录下建立软链接。例如,测试Resnet18可执行以下命令:

cd $MODELZOO_PATH/classification
ln -s $CLASSIFICATION_DATA_SET_PATH data

9.5.3. 执行模型评测

MacaRT-ModelZoo中评测模型性能或精度,需要先切换到模型大类目录,然后统一使用以下命令:

python ./code/OnnxRT_v2/start.py $modelpath $batchsize $precision $task $modelfile $ep $num_thr

通过参数可以配置测试任务为性能测试任务、精度测试任务或两者兼有,也可以配置测试精度为 int8fp16fp32,具体参数说明参见表 9.1

表 9.1 模型评测命令行参数解析

参数名称

说明

modelpath

模型配置目录,运行resnet18则是models/ox_resnet18_224x224

batchsize

推理batchsize

precision

推理精度类型,目前支持 fp32fp16int8

task

测试任务,normal 测试模型精度和fps;fpsonly 只测试模型fps;fpsclosed 只测试模型精度

modelfile

模型路径,若为./,会默认读取config配置的模型路径

ep

推理运行的后端平台,默认为 maca,即曦云系列GPU平台,可选CPU平台

num_thr

测试的线程数,建议数值为1或者8的倍数