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源代码的镜像和模型。
操作步骤
进入软件中心,点击Docker的子页面。
选择曦云系列GPU的型号、发布版本号。
点击AI查看MACARTAI相关的Docker镜像。
软件包类型选择modelzoo.cnn.inference,架构类型选择amd64或arm64,操作系统类型选择CentOS或Ubuntu等。
通过上述操作选择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
通过参数可以配置测试任务为性能测试任务、精度测试任务或两者兼有,也可以配置测试精度为 int8、fp16 或 fp32,具体参数说明参见表 9.1:
参数名称 |
说明 |
|---|---|
modelpath |
模型配置目录,运行resnet18则是models/ox_resnet18_224x224 |
batchsize |
推理batchsize |
precision |
推理精度类型,目前支持 |
task |
测试任务, |
modelfile |
模型路径,若为./,会默认读取config配置的模型路径 |
ep |
推理运行的后端平台,默认为 |
num_thr |
测试的线程数,建议数值为1或者8的倍数 |