Skip to content

模型管理

模型管理模块提供了模型管理功能,用于管理个人私有模型,如下图所示: Alt text

一、创建模型

在“模型管理”页面,点击“创建模型”,进入如下页面:

Alt text

添加模型页面包含如下字段:
模型来源:必填字段,默认为本地创建;
模型名称:必填字段,模型名称信息。
模型英文名称:必填字段,需要用户填写的模型英文名称。
文件路径:必填字段,模型的文件路径。
推理镜像:必填字段,选择模型运行所依赖的镜像版本。
模型描述:必填字段,选择模型运行所依赖的镜像版本。
添加完成后,“模型管理”列表页面会新增一条模型数据。

二、模型删除

模型列表页,点击“删除”按钮,即可删除该条模型数据。 Alt text

三、模型包规范

模型包里面必需包含“model”文件夹,“model”文件夹下面放置模型文件,模型配置文件,模型推理代码文件。

  • 模型文件:在不同模型包结构中模型文件的要求不同,具体请参见模型包结构示例。 模型配置文件:模型配置文件必需存在,文件名固定为“config.json”,有且只有一个,模型配置文件编写请参见模型配置文件编写说明。

  • 模型推理代码文件:模型推理代码文件是必选的。文件名固定为“customize_service.py”,此文件有且只能有一个,模型推理代码编写请参见模型推理代码编写说明。

  • customize_service.py依赖的py文件可以直接放model目录下,推荐采用相对导入方式导入自定义包。

  • customize_service.py依赖的其他文件可以直接放model目录下,需要采用绝对路径方式访问。绝对路径获取请参考绝对路径如何获取。

模型配置文件编写说明

模型开发者发布模型时需要编写配置文件config.json。模型配置文件描述模型用途、模型计算框架、模型精度、推理代码依赖包以及模型对外API接口。

参数说明

参数是否必选参数类型描述
model_algorithmString模型算法,表示该模型的用途,由模型开发者填写,以便使用者理解该模型的用途。只能以英文字母开头,不能包含中文以及&!'"<>=,不超过36个字符。常见的模型算法有image_classification(图像分类)、object_detection(物体检测)、predict_analysis(预测分析)等。
model_typeString模型AI引擎,表明模型使用的计算框架,支持常用AI框架和“Image”。
runtimeString模型运行时环境,系统默认使用python3.6。runtime可选值与model_type相关,当model_type设置为Image时,不需要设置runtime,当model_type设置为其他常用框架时,请选择您使用的引擎所对应的运行时环境。
metricsobject数据结构模型的精度信息,包括平均数、召回率、精确率、准确率.
apisapi数据结构数组表示模型接收和返回的请求样式,为结构体数据。
dependenciesdependency结构数组表示模型推理代码需要依赖的包,为结构体数据。
模型开发者需要提供包名、安装方式、版本约束。
healthhealth数据结构镜像健康接口配置信息,只有“model_type”为“Image”时才需填写。

metrics object数据结构说明

参数是否必选参数类型描述
f1Number平均数。精确到小数点后17位,超过17位时,取前17位数值。
recallNumber召回率。精确到小数点后17位,超过17位时,取前17位数值。
precisionNumber精确率。精确到小数点后17位,超过17位时,取前17位数值。
accuracyNumber准确率。精确到小数点后17位,超过17位时,取前17位数值。

api数据结构说明

参数是否必选参数类型描述
urlString请求路径。默认值为“/”。自定义镜像的模型(即model_type为Image时)需要根据镜像内实际暴露的请求路径填写“url”。非自定义镜像模型(即model_type不为Image时)时,“url”只能为“/”。
methodString请求方法。默认值为“POST”。
requestObject请求体。
responseObject响应体。

request结构说明

参数是否必选参数类型描述
Content-type在线服务-非必选
批量服务-必选
Stringdata以指定内容类型发送。默认值为“application/json”。
一般情况包括如下两种内容类型:
+ “application/json”,发送json数据。
+ “multipart/form-data”,上传文件。

data在线服务-非必选
批量服务-必选
String请求体以json schema描述。

response结构说明

参数是否必选参数类型描述
Content-type在线服务-非必选
批量服务-必选
Stringdata以指定内容类型发送。默认值为“application/json”。

data在线服务-非必选
批量服务-必选
String响应体以json schema描述。

dependency结构数组说明

参数是否必选参数类型描述
installerString安装方式,当前只支持“pip”。
packagespackage结构数组依赖包集合。

package结构数组说明

参数是否必选参数类型描述
package_nameString依赖包名称。不能含有中文及特殊字符&!'"<>=。
package_versionString依赖包版本,如果不强依赖于版本号,则该项不填。不能含有中文及特殊字符&!'"<>=。
restraintString版本限制条件,当且仅当“package_version”存在时必填,可选“EXACT/ATLEAST/ATMOST”。
+ “EXACT”表示安装给定版本。
+ “ATLEAST”表示安装版本不小于给定版本。
+ “ATMOST”表示安装包版本不大于给定版本。
-
-

health数据结构说明

参数是否必选参数类型描述
check_methodString健康检查方式。可选“HTTP/EXEC”。
+ HTTP:HTTP请求检查
+ EXEC:执行命令检查。
commandString健康检查命令。健康检查方式为EXEC时必选。
urlString健康检查接口请求路径。健康检查方式为HTTP时必选。
protocolString健康检查接口请求协议,默认为http。健康检查方式为HTTP时必选。
initial_delay_secondsString健康检查初始化延迟时间。
timeout_secondsString健康检查超时时间。
period_secondsString健康检查周期。填写大于0且小于等于2147483647的整数,单位为秒。
failure_thresholdString健康检查最大失败次数。填写大于0且小于等于2147483647的整数。

样例

1.apis参数代码示例
[{
    "url": "/",
    "method": "post",
    "request": {
        "Content-type": "multipart/form-data",
        "data": {
            "type": "object",
            "properties": {
                "images": {
                    "type": "file"
                }
            }
        }
    },
    "response": {
        "Content-type": "applicaton/json",
        "data": {
            "type": "object",
            "properties": {
                "mnist_result": {
                    "type": "array",
                    "item": [
                        {
                            "type": "string"
                        }
                    ]
                }
            }
        }
    }
}]
2.目标检测模型配置文件示例

如下代码以TensorFlow引擎为例,您可以根据实际使用的引擎类型修改model_type参数后使用。

  • 模型输入

key:images

value:图片文件

  • 模型输出
{
    "detection_classes": [
        "face",
        "arm"
    ],
    "detection_boxes": [
        [
            33.6,
            42.6,
            104.5,
            203.4
        ],
        [
            103.1,
            92.8,
            765.6,
            945.7
        ]
    ],
    "detection_scores": [0.99, 0.73]
}
  • 配置文件
{
    "model_type": "TensorFlow",
    "model_algorithm": "object_detection",
    "metrics": {
        "f1": 0.345294,
        "accuracy": 0.462963,
        "precision": 0.338977,
        "recall": 0.351852
    },
    "apis": [{
        "url": "/",
        "method": "post",
        "request": {
            "Content-type": "multipart/form-data",
            "data": {
                "type": "object",
                "properties": {
                    "images": {
                        "type": "file"
                    }
                }
            }
        },
        "response": {
            "Content-type": "application/json",
            "data": {
                "type": "object",
                "properties": {
                    "detection_classes": {
                        "type": "array",
                        "items": [{
                            "type": "string"
                        }]
                    },
                    "detection_boxes": {
                        "type": "array",
                        "items": [{
                            "type": "array",
                            "minItems": 4,
                            "maxItems": 4,
                            "items": [{
                                "type": "number"
                            }]
                        }]
                    },
                    "detection_scores": {
                        "type": "array",
                        "items": [{
                            "type": "number"
                        }]
                    }
                }
            }
        }
    }],
    "dependencies": [{
        "installer": "pip",
        "packages": [{
                "restraint": "EXACT",
                "package_version": "1.15.0",
                "package_name": "numpy"
            },
            {
                "restraint": "EXACT",
                "package_version": "5.2.0",
                "package_name": "Pillow"
            }
        ]
    }]
}