You need to enable JavaScript to run this app.
导航
创建自定义模型
最近更新时间:2024.05.13 11:39:57首次发布时间:2022.11.03 20:11:05

本文介绍了如何通过边缘智能控制台创建自定义推理模型。

概述

除了使用边缘智能提供的官方模型,您也可以创建自定义模型。边缘智能允许创建以下几类自定义模型:

  • 单模型:基于特定推理框架的算法模型。
    支持的推理框架包括:TensorRT、ONNX、TensorFlow、OpenVINO、PyTorch、ByteNN、PaddlePaddle、TensorFlow-LLM。更多信息,请参见支持的框架
  • 模型组合:将多个单模型组装在一起,实现更加复杂的功能。
    模模型组合是指将一个或多个模型以管道的形式组合在一起,以及定义这些模型之间输入和输出张量的连接。模型组合用来封装包含多个模型的过程,例如“数据预处理 -> 推理 -> 后处理”。使用模型组合可以避免传输中间张量的开销,并减少发送到服务端的请求数量。
    模型组合对应的方法为 Ensemble,模型组合能够接入 Python 类型的后处理脚本。
  • 模型组合的 Python 后处理脚本

前提条件

您已经开通了边缘智能。相关操作,请参见开通边缘智能

操作步骤

  1. 登录边缘智能控制台

  2. 在左侧导航栏顶部的 我的项目 区域,选择您的项目。

  3. 在左侧导航栏,选择 边缘推理 > 模型管理

  4. 自定义模型 页签下,单击 新建模型

  5. 新建模型 页面,参照配置说明完成相关参数的设置,然后单击 确定
    图片

完成以上操作后,您可以在模型管理列表查看刚刚创建的模型。
新建的模型还无法使用。接下来,您还需要为该模型创建并发布版本,才可以使模型生效。相关操作,请参见为自定义模型创建版本

配置说明

配置项

子配置项

说明

名称

N/A

为模型设置名称。输入要求如下:

  • 只能使用汉字、英文大小写字母、数字、下划线(_)、连字符(-)。
  • 长度不超过 32 个字符。特殊字符不能用在开头和结尾,也不能连续使用。

框架

N/A

选择模型的类别或框架。可选项:

  • 推理模型:TensorRTONNXTensorFlowOpenVINOPytorchPythonPaddlePaddle、TensorFlow-LLM
  • 模型组合:Ensemble
  • 模型组合的后处理脚本:Python

模型分类

N/A

选择模型的用途。可选项:图像分类物体检测图像分割语义分割姿态估计大模型其他

描述

N/A

为模型添加描述。
允许使用任意字符。长度不超过 128 个字符。

输入输出

名称

输入、输出参数的名称。输入要求如下:

  • 允许使用除汉字、空格以外的其他字符。
  • 长度不超过 50 个字符。

类型

输入、输出参数的类型。
可选项:INVALIDSTRINGBOOLINT64UINT8UINT16UINT32INT8INT16INT32FP16FP32FP64、BF16

形状

输入、输出数据的形状信息。每输入一个维度后,按回车确认。允许输入多个维度。

  • 对于输入数据,形状描述了数据张量的维度和大小。
    例如,图像数据一般使用形状 [batch_size, height, width, channels] 来表示。其中,batch_size 表示数据的批次大小,height 表示图像的高度,width 表示图像的宽度,channels 表示图像的通道数。这个形状可以告诉计算机如何正确地读取和处理输入数据。
    在计算机视觉中,图像的通道数表示图像中每个像素的颜色信息的维度数。对于彩色图像,每个像素通常由三个颜色通道组成,即红色、绿色和蓝色(RGB)。每个通道的值表示该像素在该颜色通道中的强度。因此,每个像素由三个数值组成,即 (R,G,B)。而对于黑白图像,每个像素只有一个通道,只需要一个数值表示该像素的灰度值即可。在深度学习中,通常使用图像的通道数来表示输入和输出张量的维度,以便进行卷积、池化等操作。
  • 对于输出数据,形状描述了模型的预测结果的维度和大小。
    例如,分类模型的输出可以使用形状 [batch_size, num_classes] 来表示。其中,batch_size 表示数据的批次大小,num_classes 表示分类的类别数。这个形状可以告诉计算机如何正确地输出预测结果。

在使用机器推理框架或库时,您需要根据具体的要求设置输入和输出数据的形状,以确保数据能够被正确地处理和计算。

转换形状

输入、输出数据的转换形状信息。每输入一个维度后,按回车确认。允许输入多个维度。
转换形状用于指示推理 API 可接受的输入或输出的形状。它与底层推理框架模型或自定义模型所期望或生成的输入或输出形状不同。
使用转换形状,您可以将输入数据的形状重新调整为框架或后端所期望的不同形状,也可以将输出数据的形状重新调整为推理 API 返回的不同形状。

说明

框架Ensemble 时,您无需配置该参数。

格式

输入数据的格式。可选项:

  • NONE:表示数据不包含任何格式信息,由框架或库自动推断。
  • NHWCNCHW:只适用于通过 [batch_size, height, width, channels] 四个维度所定义的标准图像数据。
    • NHWC:表示数据的维度顺序为 [batch_size, height, width, channels]
    • NCHW:表示数据的维度顺序为 [batch_size, channels, height, width]

说明

  • 框架Ensemble 时,您无需配置该参数。
  • 对于输出参数,您无需配置该参数。

不规则处理

是否允许该张量在动态创建的批处理中是不规则的。

  • 默认值为否,表示只有在两个请求中,该张量的形状相同时才会进行批处理。
  • 如果设置为是,那么即使在两个请求中该张量的形状不同,也可以将两个请求进行批处理。

是否可选

该输入是否对模型执行是可选的。
默认值为否,表示该输入是必选的。如果设置为是,则推理请求中不需要该输入。

模型配置

N/A

Ensemble 模型中包含一个或多个已有模型。该参数表示 Ensemble 模型中输入、输出参数的映射关系。关于 Ensemble 模型配置的具体方法,请参见 模型组合配置说明

说明

只有当 框架Ensemble 时,您需要配置该参数。

模型组合配置说明

当您创建模型组合(框架Ensemble)时,您需要完成模型配置。以下是模型配置的具体方法:

说明

您可以参考配置示例,了解 Ensemble 模型配置的逻辑。

  1. 从模型下拉列表选择一个已有模型(为了描述方便,用“子模型”来指代)。
    • 所选择子模型的输入和输出配置将被读取出来,作为 原始输入原始输出
    • 您可以单击 添加,在 Ensemble 模型中添加多个子模型。顺序靠前的子模型优先处理。
  2. 为每个子模型配置 输入映射输出映射
    您需要为每个子模型的原始输入、原始输出设置在 Ensemble 模型中映射的输入和输出。原始输入在 Ensemble 模型中映射的输入是 输入上游、原始输出在 Ensemble 模型中映射的输出是 输出下游
    • 输入上游 允许配置为:
      • Ensemble 模型的某个输入。
      • 前置子模型的某个自定义输出。
        当一个子模型的原始输入有多个时,您必须为每个原始输入指定一个输入上游,并且这些输入上游不允许重复。
    • 输出下游 允许配置为:
      • Ensemble 模型的某个输出。
      • 自定义输出:您自定义一个输出,在 Ensemble 模型内流转使用。
        当一个子模型的原始输出有多个时,您可以为其中至少一个原始输出指定输出下游,其他输出下游允许留空。

注意

  • Ensemble 模型的每个输入都必须映射到至少一个原始输入。Ensemble 模型的输入可以在不同模型中重复使用。
  • Ensemble 模型的每个输出都必须映射到一个原始输出。Ensemble 模型的输出不允许在不同模型中重复使用。

配置示例

您可以参考以下示例,以便理解 Ensemble 模型的配置逻辑。
假设您要将两个模型组装在一起使用,它们依次是:前处理模型、推理模型。

  • 前处理模型有 2 个输入(input-1 和 input-2) 和 2 个输出(output-1 和 output-2)。
  • 推理模型有 1 个输入(input.1)和 1 个输出(output.1)。

您希望前处理模型对数据进行预处理后,将数据流转到推理模型进行推理。
为满足该需求,您可以创建一个 Ensemble 模型。Ensemble 模型包含 2 个输入(src-1 和 src-2)和 1 个输出(des-1)。它的数据处理逻辑如下图所示。
图片
在这个场景下,Ensemble 模型的 Tensor 可以按照如下方式配置。其中,m-pre 表示前处理模型、m-post 表示推理模型。
图片