模型配置文件编写说明-j9九游会登录
模型开发者发布模型时需要编写配置文件config.json。模型配置文件描述模型用途、模型计算框架、模型精度、推理代码依赖包以及模型对外api接口。
配置文件格式说明
配置文件为json格式,参数说明如表1所示。
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
model_algorithm |
是 |
string |
模型算法,表示该模型的用途,由模型开发者填写,以便使用者理解该模型的用途。只能以英文字母开头,不能包含中文以及&!'\"<>=,不超过36个字符。常见的模型算法有image_classification(图像分类)、object_detection(物体检测)、predict_analysis(预测分析)等。 |
|
model_type |
是 |
string |
模型ai引擎,表明模型使用的计算框架,支持常用ai框架和“image”。
|
|
runtime |
否 |
string |
模型运行时环境,系统默认使用python2.7。runtime可选值与model_type相关,当model_type设置为image时,不需要设置runtime,当model_type设置为其他常用框架时,请选择您使用的引擎所对应的运行时环境。目前支持的运行时环境列表请参见推理支持的ai引擎。 需要注意的是,如果您的模型需指定cpu或gpu上运行时,请根据runtime的后缀信息选择,当runtime中未包含cpu或gpu信息时,请仔细阅读“推理支持的ai引擎”中每个runtime的说明信息。 |
|
metrics |
否 |
object数据结构 |
模型的精度信息,包括平均数、召回率、精确率、准确率,metrics object数据结构说明如表2所示。 结果会显示在模型详情页面的“模型精度”模块。 |
|
apis |
否 |
api数据结构数组 |
表示模型接收和返回的请求样式,为结构体数据。 即模型可对外提供的restful api数组,api数据结构如表3所示。示例代码请参见apis参数代码示例。
|
|
dependencies |
否 |
dependency结构数组 |
表示模型推理代码需要依赖的包,为结构体数据。 模型开发者需要提供包名、安装方式、版本约束。目前只支持pip安装方式。dependency结构数组说明如表6所示。 如果模型包内没有推理代码customize_service.py文件,则该字段可不填。自定义镜像模型不支持安装依赖包。
说明:
“dependencies”参数支持多个“dependency”结构数组,以list格式填入,默认安装包存在先后依赖关系(即写在前面的先安装,写在后面的后安装),且支持线下wheel包安装(wheel包必须与模型文件放在同一目录)。示例请参考导入模型时安装包依赖配置文件如何书写? |
|
health |
否 |
health数据结构 |
镜像健康接口配置信息,只有“model_type”为“image”时才需填写。 如果在滚动升级时要求不中断业务,那么必须提供健康检查的接口供modelarts调用。health数据结构如表8所示。 |
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
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 |
请求体,request结构说明如表4所示。 |
|
response |
否 |
object |
响应体,response结构说明如表5所示。 |
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
content-type |
在线服务-非必选 批量服务-必选 |
string |
data以指定内容类型发送。默认值为“application/json”。 一般情况包括如下两种内容类型:
说明:
针对机器学习类模型,仅支持“application/json” |
|
data |
在线服务-非必选 批量服务-必选 |
string |
请求体以json schema描述。参数说明请参考。 |
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
content-type |
在线服务-非必选 批量服务-必选 |
string |
data以指定内容类型发送。默认值为“application/json”。
说明:
针对机器学习类模型,仅支持“application/json” |
|
data |
在线服务-非必选 批量服务-必选 |
string |
响应体以json schema描述。参数说明请参考。 |
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
installer |
是 |
string |
安装方式,当前只支持“pip”。 |
|
packages |
是 |
package结构数组 |
依赖包集合,package结构数组说明如表7所示。 |
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
package_name |
是 |
string |
依赖包名称。不能含有中文及特殊字符&!'"<>=。 |
|
package_version |
否 |
string |
依赖包版本,如果不强依赖于版本号,则该项不填。不能含有中文及特殊字符&!'"<>=。 |
|
restraint |
否 |
string |
版本限制条件,当且仅当“package_version”存在时必填,可选“exact/atleast/atmost”。
|
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
check_method |
是 |
string |
健康检查方式。可选“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的整数。 |
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": {
"mnist_result": {
"type": "array",
"item": [
{
"type": "string"
}
]
}
}
}
}
}]
目标检测模型配置文件示例
如下代码以tensorflow引擎为例,您可以根据实际使用的引擎类型修改model_type参数后使用。
- 模型输入
key:images
value:图片文件
- 模型输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
{ "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] }
- 配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
{ "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" } ] }] }
图像分类模型配置文件示例
如下代码以tensorflow引擎为例,您可以根据实际使用的引擎类型修改model_type参数后使用。
- 模型输入
key:images
value:图片文件
- 模型输出
1 2 3 4 5 6 7
{ "predicted_label": "flower", "scores": [ ["rose", 0.99], ["begonia", 0.01] ] }
- 配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
{ "model_type":"tensorflow", "model_algorithm":"image_classification", "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":{ "predicted_label":{ "type":"string" }, "scores":{ "type":"array", "items":[{ "type":"array", "minitems":2, "maxitems":2, "items":[ { "type":"string" }, { "type":"number" } ] }] } } } } }], "dependencies":[{ "installer":"pip", "packages":[{ "restraint":"atleast", "package_version":"1.15.0", "package_name":"numpy" }, { "restraint":"", "package_version":"", "package_name":"pillow" } ] }] }
如下代码以mindspore引擎为例,您可以根据实际使用的引擎类型修改model_type参数后使用。
- 模型输入
key:images
value:图片文件
- 模型输出
1"[[-2.404526 -3.0476532 -1.9888215 0.45013925 -1.7018927 0.40332815\n -7.1861157 11.290332 -1.5861531 5.7887416 ]]"
- 配置文件
{ "model_algorithm": "image_classification", "model_type": "mindspore", "metrics": { "f1": 0.124555, "recall": 0.171875, "precision": 0.0023493892851938493, "accuracy": 0.00746268656716417 }, "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": { "mnist_result": { "type": "array", "item": [{ "type": "string" }] } } } } } ], "dependencies": [] }
预测分析模型配置文件示例
如下代码以tensorflow引擎为例,您可以根据实际使用的引擎类型修改model_type参数后使用。
- 模型输入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
{ "data": { "req_data": [ { "buying_price": "high", "maint_price": "high", "doors": "2", "persons": "2", "lug_boot": "small", "safety": "low", "acceptability": "acc" }, { "buying_price": "high", "maint_price": "high", "doors": "2", "persons": "2", "lug_boot": "small", "safety": "low", "acceptability": "acc" } ] } }
- 模型输出
1 2 3 4 5 6 7 8 9 10 11 12
{ "data": { "resp_data": [ { "predict_result": "unacc" }, { "predict_result": "unacc" } ] } }
- 配置文件
代码中request结构和response结构中的data参数是json schema数据结构。data/properties里面的内容对应“模型输入”和“模型输出”。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
{ "model_type":"tensorflow", "model_algorithm":"predict_analysis", "metrics":{ "f1":0.345294, "accuracy":0.462963, "precision":0.338977, "recall":0.351852 }, "apis":[ { "url":"/", "method":"post", "request":{ "content-type":"application/json", "data":{ "type":"object", "properties":{ "data":{ "type":"object", "properties":{ "req_data":{ "items":[ { "type":"object", "properties":{} } ], "type":"array" } } } } } }, "response":{ "content-type":"application/json", "data":{ "type":"object", "properties":{ "data":{ "type":"object", "properties":{ "resp_data":{ "type":"array", "items":[ { "type":"object", "properties":{} } ] } } } } } } } ], "dependencies":[ { "installer":"pip", "packages":[ { "restraint":"exact", "package_version":"1.15.0", "package_name":"numpy" }, { "restraint":"exact", "package_version":"5.2.0", "package_name":"pillow" } ] } ] }
自定义镜像类型的模型配置文件示例
模型输入和输出与目标检测模型配置文件示例类似。
- 模型预测输入为图片类型时,request请求示例如下:
该示例表示模型预测接收一个参数名为images、参数类型为file的预测请求,在推理界面会显示文件上传按钮,以文件形式进行预测。
1 2 3 4 5 6 7 8 9 10 11
{ "content-type":"multipart/form-data", "data":{ "type":"object", "properties":{ "images":{ "type":"file" } } } } - 模型预测输入为json数据类型时,request请求示例如下:
该示例表示模型预测接收json请求体,只有一个参数名为input、参数类型为string的预测请求,在推理界面会显示文本输入框,用于填写预测请求。
1 2 3 4 5 6 7 8 9 10 11
{ "content-type":"application/json", "data":{ "type":"object", "properties":{ "input":{ "type":"string" } } } }
完整请求示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
{
"model_algorithm":"image_classification",
"model_type":"image",
"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",
"required":[
"predicted_label",
"scores"
],
"properties":{
"predicted_label":{
"type":"string"
},
"scores":{
"type":"array",
"items":[{
"type":"array",
"minitems":2,
"maxitems":2,
"items":[{
"type":"string"
},
{
"type":"number"
}
]
}]
}
}
}
}
}]
}
|
机器学习类型的模型配置文件示例
以下代码以xgboost为例。
- 模型输入:
{
"req_data": [
{
"sepal_length": 5,
"sepal_width": 3.3,
"petal_length": 1.4,
"petal_width": 0.2
},
{
"sepal_length": 5,
"sepal_width": 2,
"petal_length": 3.5,
"petal_width": 1
},
{
"sepal_length": 6,
"sepal_width": 2.2,
"petal_length": 5,
"petal_width": 1.5
}
]
}
- 模型输出:
{
"resp_data": [
{
"predict_result": "iris-setosa"
},
{
"predict_result": "iris-versicolor"
}
]
}
- 配置文件:
{
"model_type": "xgboost",
"model_algorithm": "xgboost_iris_test",
"runtime": "python2.7",
"metrics": {
"f1": 0.345294,
"accuracy": 0.462963,
"precision": 0.338977,
"recall": 0.351852
},
"apis": [
{
"url": "/",
"method": "post",
"request": {
"content-type": "application/json",
"data": {
"type": "object",
"properties": {
"req_data": {
"items": [
{
"type": "object",
"properties": {}
}
],
"type": "array"
}
}
}
},
"response": {
"content-type": "application/json",
"data": {
"type": "object",
"properties": {
"resp_data": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"predict_result": {}
}
}
]
}
}
}
}
}
]
}
使用自定义依赖包的模型配置文件示例
如下示例中,定义了1.16.4版本的numpy的依赖环境。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
{
"model_algorithm":"image_classification",
"model_type":"tensorflow",
"runtime":"python3.6",
"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":{
"mnist_result":{
"type":"array",
"item":[
{
"type":"string"
}
]
}
}
}
}
}
],
"metrics":{
"f1":0.124555,
"recall":0.171875,
"precision":0.00234938928519385,
"accuracy":0.00746268656716417
},
"dependencies":[
{
"installer":"pip",
"packages":[
{
"restraint":"exact",
"package_version":"1.16.4",
"package_name":"numpy"
}
]
}
]
}
|
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨