为了解决端侧模型开发和部署的问题,PAI提供了通用端视觉解决方案。该解决方案提供端侧模型训练和部署套件,经过模型训练、模型剪枝和模型量化,最终导出可供部署到端侧产品的模型,并将模型部署到端侧,服务于下游推荐或其他应用场景。本文为您介绍通用端视觉的解决方案。
前提条件
- 已开通PAI(Designer、DSW、EAS)后付费,详情请参见开通。
- 已开通并创建工作空间,且添加了DLC计算资源,详情请参见开通并创建默认工作空间。
- 已创建OSS存储空间(Bucket),用于存储原始数据、标签列表文件及训练获得的模型文件。关于如何创建存储空间,详情请参见创建存储空间。
使用流程

- 步骤一:准备数据
将训练集、测试集、数据类别列表等数据上传到OSS存储空间,用于后续的模型训练。若数据未标注可基于智能标注(iTAG)进行原始数据标注,详情请参见智能标注(ITAG)。
- 步骤二:构建端侧视觉检测模型、压缩模型和导出模型
在可视化建模平台PAI-Designer上,根据上传的图像数据,构建ev-torch框架下的YOLOX_EDGE检测模型。通过PAI-Designer平台提供的模型剪枝和模型量化组件,对ev-torch框架模型进行模型压缩,并导出pt模型。
- 步骤三:部署模型服务
您可以将输出的pt模型部署到端侧,用于下游推荐或其他应用场景。
步骤一:准备数据
首先您需要根据选择的模型准备对应类型的数据。以检测模型yolovx为例,您可以准备COCO类型的数据,并将数据上传到OSS。需要上传的数据包括:训练数据、训练数据标签、验证数据、验证数据标签、数据类别列表。
您也可以基于智能标注(ITAG)进行原始数据标注,并将获得的训练集和测试集数据上传到OSS,用于后续的模型训练,详情请参见智能标注(ITAG)。
步骤二:构建端侧视觉检测模型、压缩模型和导出模型
- 进入PAI-Designer页面,并创建空白工作流,具体操作请参见创建工作流:空白工作流。
- 在工作流列表,选择已创建的空白工作流,单击进入工作流。
- 在工作流页面,分别拖入以下组件,并配置组件参数。您可以按照以下任意一种方式,通过连线将节点组织构建为模型工作流。
- 使用图像检测训练组件获得的模型文件,分别进行模型剪枝和模型量化。
- 使用图像检测训练组件获得的模型文件,先经过模型剪枝,再进行模型量化。
区域 描述 ① 配置图像检测训练的参数。图像检测训练组件的配置详情请参见表 1。 ② 配置模型剪枝组件参数。模型剪枝组件的配置详情请参见表 1。 ③ 配置模型量化组件参数。模型量化组件的配置详情请参见表 1。 ④ 配置实验的训练数据集,即配置读OSS数据-1组件的OSS数据路径为存放训练数据文件的OSS路径。 ⑤ 配置实验的测试数据集,即配置读OSS数据-2组件的OSS数据路径为存放测试数据文件的OSS路径。 ⑥ 配置实验的数据类别列表文件,即配置读OSS数据-3组件的OSS数据路径为存放数据类别列表文件的OSS路径。 ⑦ 配置实验的训练数据集,即配置读OSS数据-4组件的OSS数据路径为存放训练数据文件的OSS路径。 ⑧ 配置实验的测试数据集,即配置读OSS数据-5组件的OSS数据路径为存放测试数据文件的OSS路径。 ⑨ 配置实验的数据类别列表文件,即配置读OSS数据-6组件的OSS数据路径为存放数据类别列表文件的OSS路径。 ⑩ 配置实验的训练数据集,即配置读OSS数据-7组件的OSS数据路径为存放训练数据文件的OSS路径。 ⑪ 配置实验的测试数据集,即配置读OSS数据-8组件的OSS数据路径为存放测试数据文件的OSS路径。 ⑫ 配置实验的数据类别列表文件,即配置读OSS数据-9组件的OSS数据路径为存放数据类别列表文件的OSS路径。 表 1. 配置组件参数 页签 参数 描述 本案例使用的示例值 字段设置 训练模型类型 训练模型的类型。 图像检测训练支持以下模型类型:
- SSD
- FasterRCNN
- RFCN
- YOLOV5
- YOLOX
- YOLOX_EDGE
模型剪枝和模型量化支持以下模型类型:- YOLOX
- YOLOX_EDGE
YOLOX_EDGE 训练所用oss目录 训练过程中模型和Log保存的OSS路径。 oss://examplebucket-cn-shanghai-internal.aliyuncs.com/test/test_model_compression_3-8/ 说明 需要修改为您使用的OSS路径,且图像检测训练、模型剪枝和模型量化三个组件配置的路径不同。训练数据oss路径 存放训练数据文件的OSS路径,如果您使用读OSS数据组件作为上游节点,则该参数无需设置。 无需填写 训练集标注结果文件路径 存放训练集标注结果文件的OSS路径。 oss://examplebucket-cn-shanghai.aliyuncs.com/data/model_compression/annotations/instances_train2017_sub.json 说明 需要修改为您使用的OSS路径。评估数据oss路径 存放测试数据文件的OSS路径,如果您使用读OSS数据组件作为上游节点,则该参数无需设置。 无需填写 测试集标注结果文件路径 存放测试集标注结果文件的OSS路径。 oss://examplebucket-cn-shanghai.aliyuncs.com/data/model_compression/annotations/instances_train2017_sub.json 说明 需要修改为您使用的OSS路径。类别列表文件oss路径 存放数据类别列表文件的OSS路径,如果您使用读OSS数据组件作为上游节点,则该参数无需设置。 oss://examplebucket-cn-shanghai.aliyuncs.com/data/model_compression/label.list 说明 需要修改为您使用的OSS路径。YOLOX数据源格式 数据的处理格式,取值如下: - COCO格式
- PAI标注格式
COCO格式 预训练模型oss路径 存放预训练模型的OSS路径,导入预训练模型的权重文件。非必填。 无需填写 参数设置 YOLOX端检测模型类型 仅字段设置中训练模型类型选择YOLOX_EDGE时,需要配置该参数。 YOLOX端检测的模型类别,预置不同的模型结构。
yolox-customized 剪枝算法类型 仅模型剪枝组件需要配置该参数。 剪枝算法类型,默认为AGP。
AGP 剪枝算法 仅模型剪枝组件需要配置该参数。 剪枝算法,默认为taylorfo。
taylorfo yolox端模型depth 仅字段设置中训练模型类型选择YOLOX_EDGE时,需要配置该参数。 yolox端模型depth,浮点型。范围为[0.01,1.0]。
1.0 yolox端模型width 仅字段设置中训练模型类型选择YOLOX_EDGE时,需要配置该参数。 yolox端模型width,浮点型。范围为[0.01,1.0]。
1.0 yolox端模型parameters size 仅图像检测训练组件训练模型类型选择YOLOX_EDGE时,才需要配置该参数。 yolox端模型parameters size,限制最大模型参数,浮点型。-1表示不做限制。
-1 yolox端模型Gflops 仅图像检测训练组件训练模型类型选择YOLOX_EDGE时,才需要配置该参数。 yolox端模型Gflops,限制最大模型Gflops,浮点型。-1表示不做限制。
-1 YOLOX端检测模型激活函数类型 仅字段设置中训练模型类型选择YOLOX_EDGE时,需要配置该参数。 YOLOX端检测模型激活函数类型,取值如下:- relu
- lrelu
- silu
- hsilu
relu 测试置信度:[0.01,1.0] 仅字段设置中训练模型类型选择YOLOX_EDGE时,需要配置该参数。 测试置信度,浮点型。范围为[0.01,1.0]。
0.01 nms阈值:[0.01,1.0] 仅字段设置中训练模型类型选择YOLOX_EDGE时,需要配置该参数。 nms阈值,浮点型。范围为[0.01,1.0]。
0.65 检测类别数目 检测类别数目。 1 图像尺度 用于yolox,图片缩放后的尺度,分别表示高和宽。 256 256 初始学习率 模型训练的初始学习率,浮点型。 0.01 训练batch_size 训练batch_size。 8 评估batch_size 评估batch_size。 8 总的训练迭代epoch轮数 总的训练迭代epoch轮数。 20 warmup epochs 采用warmup学习策略时的迭代轮数。 5 最后稳定lr的epochs 采用warmup学习策略lr稳定后继续训练的迭代轮数。 5 保存checkpoint的频率 保存模型的迭代轮数。 5 执行调优 读取训练数据线程数 读取训练数据的线程数。 4 evtorch model 开启半精度 仅图像检测训练组件需要配置该参数。 evtorch model是否开启半精度。
不选中 单机或分布式(MaxCompute/DLC) 组件运行的引擎。系统会根据您设置的训练模型类型,自动匹配。 分布式DLC worker个数 采用分布式训练时的机器数量。 1 cpu机型选择 仅图像检测训练组件的训练模型类型选择YOLOV5、YOLOX、YOLOX_EDGE时,需要配置该参数。 选择运行的CPU规格。
32vCPU+128GB Mem-ecs.g6.8xlarge gpu机型选择 选择运行的GPU规格。 28vCPU+112GB Mem+1xp100-ecs.gn5-c28g1.7xlarge - 使用图像检测训练组件获得的模型文件,分别进行模型剪枝和模型量化。
- 单击画布上方的运行。
- 实验运行成功后,您可以在训练所用OSS目录配置的OSS路径,下载压缩后的pt模型文件。后续您可以使用下载的模型文件部署模型服务。
步骤三:部署模型服务
实验运行成功后,您可以在训练所用OSS目录配置的OSS路径下载prune_model.pt和quantize_model.pt的TorchScript模型文件,并将模型文件部署到CPU机器上,服务于下游推荐或其他应用场景。