人工智能服务
>
模型管理
模型管理模块提供了模型管理功能,用于管理个人私有模型,如下图所示:
在“模型管理”页面,点击“创建模型”,进入如下页面:
添加模型页面包含如下字段:
模型来源:必填字段,默认为本地创建;
模型名称:必填字段,模型名称信息。
模型英文名称:必填字段,需要用户填写的模型英文名称。
文件路径:必填字段,模型的文件路径。
推理镜像:必填字段,选择模型运行所依赖的镜像版本。
模型描述:必填字段,选择模型运行所依赖的镜像版本。
添加完成后,“模型管理”列表页面会新增一条模型数据。
模型列表页,点击“删除”按钮,即可删除该条模型数据。
模型包里面必需包含“model”文件夹,“model”文件夹下面放置模型文件,模型配置文件,模型推理代码文件。
模型文件:在不同模型包结构中模型文件的要求不同,具体请参见模型包结构示例。 模型配置文件:模型配置文件必需存在,文件名固定为“config.json”,有且只有一个,模型配置文件编写请参见模型配置文件编写说明。
模型推理代码文件:模型推理代码文件是必选的。文件名固定为“customize_service.py”,此文件有且只能有一个,模型推理代码编写请参见模型推理代码编写说明。
customize_service.py依赖的py文件可以直接放model目录下,推荐采用相对导入方式导入自定义包。
customize_service.py依赖的其他文件可以直接放model目录下,需要采用绝对路径方式访问。绝对路径获取请参考绝对路径如何获取。
模型开发者发布模型时需要编写配置文件config.json。模型配置文件描述模型用途、模型计算框架、模型精度、推理代码依赖包以及模型对外API接口。
参数 | 是否必选 | 参数类型 | 描述 |
---|---|---|---|
model_algorithm | 是 | String | 模型算法,表示该模型的用途,由模型开发者填写,以便使用者理解该模型的用途。只能以英文字母开头,不能包含中文以及&!'"<>=,不超过36个字符。常见的模型算法有image_classification(图像分类)、object_detection(物体检测)、predict_analysis(预测分析)等。 |
model_type | 是 | String | 模型AI引擎,表明模型使用的计算框架,支持常用AI框架和“Image”。 |
runtime | 否 | String | 模型运行时环境,系统默认使用python3.6。runtime可选值与model_type相关,当model_type设置为Image时,不需要设置runtime,当model_type设置为其他常用框架时,请选择您使用的引擎所对应的运行时环境。 |
metrics | 否 | object数据结构 | 模型的精度信息,包括平均数、召回率、精确率、准确率. |
apis | 否 | api数据结构数组 | 表示模型接收和返回的请求样式,为结构体数据。 |
dependencies | 否 | dependency结构数组 | 表示模型推理代码需要依赖的包,为结构体数据。 模型开发者需要提供包名、安装方式、版本约束。 |
health | 否 | health数据结构 | 镜像健康接口配置信息,只有“model_type”为“Image”时才需填写。 |
参数 | 是否必选 | 参数类型 | 描述 |
---|---|---|---|
f1 | 否 | Number | 平均数。精确到小数点后17位,超过17位时,取前17位数值。 |
recall | 否 | Number | 召回率。精确到小数点后17位,超过17位时,取前17位数值。 |
precision | 否 | Number | 精确率。精确到小数点后17位,超过17位时,取前17位数值。 |
accuracy | 否 | Number | 准确率。精确到小数点后17位,超过17位时,取前17位数值。 |
参数 | 是否必选 | 参数类型 | 描述 |
---|---|---|---|
url | 否 | String | 请求路径。默认值为“/”。自定义镜像的模型(即model_type为Image时)需要根据镜像内实际暴露的请求路径填写“url”。非自定义镜像模型(即model_type不为Image时)时,“url”只能为“/”。 |
method | 否 | String | 请求方法。默认值为“POST”。 |
request | 否 | Object | 请求体。 |
response | 否 | Object | 响应体。 |
参数 | 是否必选 | 参数类型 | 描述 |
---|---|---|---|
Content-type | 在线服务-非必选 批量服务-必选 | String | data以指定内容类型发送。默认值为“application/json”。 一般情况包括如下两种内容类型: + “application/json”,发送json数据。 + “multipart/form-data”,上传文件。 |
data | 在线服务-非必选 批量服务-必选 | String | 请求体以json schema描述。 |
参数 | 是否必选 | 参数类型 | 描述 |
---|---|---|---|
Content-type | 在线服务-非必选 批量服务-必选 | String | data以指定内容类型发送。默认值为“application/json”。 |
data | 在线服务-非必选 批量服务-必选 | String | 响应体以json schema描述。 |
参数 | 是否必选 | 参数类型 | 描述 |
---|---|---|---|
installer | 是 | String | 安装方式,当前只支持“pip”。 |
packages | 是 | package结构数组 | 依赖包集合。 |
参数 | 是否必选 | 参数类型 | 描述 |
---|---|---|---|
package_name | 是 | String | 依赖包名称。不能含有中文及特殊字符&!'"<>=。 |
package_version | 否 | String | 依赖包版本,如果不强依赖于版本号,则该项不填。不能含有中文及特殊字符&!'"<>=。 |
restraint | 否 | String | 版本限制条件,当且仅当“package_version”存在时必填,可选“EXACT/ATLEAST/ATMOST”。 + “EXACT”表示安装给定版本。 + “ATLEAST”表示安装版本不小于给定版本。 + “ATMOST”表示安装包版本不大于给定版本。 - - |
参数 | 是否必选 | 参数类型 | 描述 |
---|---|---|---|
check_method | 是 | String | 健康检查方式。可选“HTTP/EXEC”。 + HTTP:HTTP请求检查 + EXEC:执行命令检查。 |
command | 否 | String | 健康检查命令。健康检查方式为EXEC时必选。 |
url | 否 | String | 健康检查接口请求路径。健康检查方式为HTTP时必选。 |
protocol | 否 | String | 健康检查接口请求协议,默认为http。健康检查方式为HTTP时必选。 |
initial_delay_seconds | 否 | String | 健康检查初始化延迟时间。 |
timeout_seconds | 否 | String | 健康检查超时时间。 |
period_seconds | 是 | String | 健康检查周期。填写大于0且小于等于2147483647的整数,单位为秒。 |
failure_threshold | 是 | String | 健康检查最大失败次数。填写大于0且小于等于2147483647的整数。 |
[{
"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"
}
]
}
}
}
}
}]
如下代码以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"
}
]
}]
}