文档

通用端视觉解决方案

更新时间:

为了解决端侧模型开发和部署的问题,PAI提供了通用端视觉解决方案。该解决方案提供端侧模型训练和部署套件,经过模型训练、模型剪枝和模型量化,最终导出可供部署到端侧产品的模型,并将模型部署到端侧,服务于下游推荐或其他应用场景。本文为您介绍通用端视觉的解决方案。

前提条件

在开始执行操作之前,请确认您已经完成以下准备工作:

  • 已开通PAI(Designer、DSW、EAS)后付费,详情请参见开通

  • 已开通并创建工作空间,且添加了DLC计算资源,详情请参见开通PAI并创建默认工作空间

  • 已创建OSS存储空间(Bucket),用于存储原始数据、标签列表文件及训练获得的模型文件。关于如何创建存储空间,详情请参见控制台创建存储空间

使用流程

基于阿里云PAI平台,端视觉解决方案的流程如下。

image
  1. 步骤一:准备数据

    将训练集、测试集、数据类别列表等数据上传到OSS存储空间,用于后续的模型训练。若数据未标注可基于iTAG进行原始数据标注,详情请参见智能标注(ITAG)

  2. 步骤二:构建端侧视觉检测模型、压缩模型和导出模型

    在可视化建模平台Designer上,根据上传的图像数据,构建ev-torch框架下的YOLOX_EDGE检测模型。通过Designer平台提供的模型剪枝和模型量化组件,对ev-torch框架模型进行模型压缩,并导出pt模型。

  3. 步骤三:部署模型服务

    您可以将输出的pt模型部署到端侧,用于下游推荐或其他应用场景。

步骤一:准备数据

首先您需要根据选择的模型准备对应类型的数据。以检测模型yolovx为例,您可以准备COCO类型的数据,并将数据上传到OSS。需要上传的数据包括:训练数据、训练数据标签、验证数据、验证数据标签、数据类别列表。

您也可以基于iTAG进行原始数据标注,并将获得的训练集和测试集数据上传到OSS,用于后续的模型训练,详情请参见智能标注(ITAG)

步骤二:构建端侧视觉检测模型、压缩模型和导出模型

  1. 进入PAI-Designer页面,并创建空白工作流,具体操作请参见操作步骤

  2. 在工作流列表,选择已创建的空白工作流,单击进入工作流

  3. 在工作流页面,分别拖入以下组件,并配置组件参数。

    您可以按照以下任意一种方式,通过连线将节点组织构建为模型工作流。

    • 使用图像检测训练组件获得的模型文件,分别进行模型剪枝和模型量化。实验1

    • 使用图像检测训练组件获得的模型文件,先经过模型剪枝,再进行模型量化。实验2

    区域

    描述

    配置图像检测训练的参数。图像检测训练组件的配置详情请参见配置组件参数

    配置模型剪枝组件参数。模型剪枝组件的配置详情请参见配置组件参数

    配置模型量化组件参数。模型量化组件的配置详情请参见配置组件参数

    配置实验的训练数据集,即配置读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

  4. 单击画布上方的运行

    运行

  5. 实验运行成功后,您可以在训练所用OSS目录配置的OSS路径,下载压缩后的pt模型文件。

    后续您可以使用下载的模型文件部署模型服务。

步骤三:部署模型服务

实验运行成功后,您可以在训练所用OSS目录配置的OSS路径下载prune_model.pt和quantize_model.pt的TorchScript模型文件,并将模型文件部署到CPU机器上,服务于下游推荐或其他应用场景。

  • 本页导读 (1)
文档反馈