如何部署模型ModelArts并远程调用 (二):编写推理配置文件

网友投稿 726 2022-05-30

编写推理配置文件

参考该帮助文档。

如何部署模型到ModelArts并远程调用 (二):编写推理配置文件

config.json是推理配置文件,文件是json格式,用于设置推理过程中的环境信息。比如推理环境Python包依赖安装、使用的AI引擎、使用的python版本、以及模型API的输入和输出等。

字段解读

样例解读

模型输入是一张图片;输出是预测结果,以json格式返回。

模型输入格式示例:

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",     "runtime": "tf2.1-python3.7",     "apis": [{         "protocol": "https",          "url": "/",         "method": "post",         "request": {             "Content-type": "multipart/form-data",             "data": {                 "type": "object",                 "properties": {                     "images": {                         "type": "file"                     }                 }             }         },         "response": {             "Content-type": "multipart/form-data",             "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": "3.4.1.15",                 "package_name": "opencv-python-headless"             },             {                 "restraint": "EXACT",                 "package_version": "5.2.0",                 "package_name": "Pillow"             }         ]     }] }

配置文件解读:

model_type是TensorFlow,表示推理环境中安装的AI引擎是TensorFlow。

runtime字段是tf2.1-python3.7,表示推理环境中安装的TensorFlow版本是2.1,python版本是3.6。

apis字段定义了请求API的协议是HTTPS,通过post请求接受和返回信息。

request(接受)中设置了请求接受数据的content-type是form-data,会将API接受到的数据按照表单的形式存储,在Python中可以通过字典的格式读取。并且,会将接受的图片按照file类型传入到推理代码。

response(返回)中将返回数据的content-type同样设置为form-data。其中的data表示请求返回的数据。在该样例中,返回的数据属性有三个,分别是detection_classes(检测到的类别)、detection_boxes(检测到的检测框)和detection_scores(类别的置信度)。推理代码需要将推理结果写入到这三个变量,并作为结果返回(参考模型输出格式示例)。items中的type表示数组中元素的类型,minItems和maxItems分别表示数组中最小和最大元素数。

dependencies,表示在推理环境中安装三个Python依赖包,并指定了包的版本。

复用指导

对于一个目标检测模型,可以复用上面这个推理配置文件,但是需要做如下微调。对于apis,可以直接复用;对于dependencies,需要根据自己的推理代码,修改其中的package_name和package_version;对于model_type和runtime,根据代码中实际使用的AI框架和Python版本填写。model_algorithm,自定义一个字符串即可。

模型输入是一张图片;输出是预测结果,以json格式返回。

模型输入格式示例:

key:images

value:图片文件

模型输出格式示例:

{     "predicted_label": "rose",     "scores": [        ["rose", 0.99],        ["daisy", 0.01]     ] }

推理配置文件:

{     "model_type": "TensorFlow",     "model_algorithm": "image_classification",     "runtime": "tf1.13-python3.6-gpu",     "apis": [{         "protocol": "https",         "url": "/",         "method": "post",         "request": {             "Content-type": "multipart/form-data",             "data": {                 "type": "object",                 "properties": {                     "images": {                         "type": "file"                     }                 }             }         },         "response": {             "Content-type": "multipart/form-data",             "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": "EXACT",                 "package_version": "3.4.1.15",                 "package_name": "opencv-python-headless"             },             {                 "restraint": "",                 "package_version": "",                 "package_name": "Pillow"             }         ]     }] }

配置文件解读:

其他字段的解读和样例一相同。图像分类和目标检测的返回结果格式不同。response中的data包含两个属性,分别是predicted_label(预测的类别)和scores(预测结果的概率分布)。

复用指导:

对于一个图像分类模型,可以复用上面的推理配置文件。复用指导同样例一。

这是一个结构化数据的预测示例,基于sklearn引擎,使用的是传统机器学习算法。

模型输入格式示例

输入的数据是特征列及其数值

{     "data": {         "req_data": [             {                 "buying_price": "high",                 "maint_price": "high",                 "doors": "2",                 "persons": "2",                 "lug_boot": "small",                 "safety": "low",                 "acceptability": "acc"             }         ]     } }

模型输出格式示例

输出的数据是标签列的预测结果

{     "data": {         "resp_data": [             {                 "predict_result": "unacc"             }         ]     } }

配置文件

{     "model_type": "Scikit_Learn",     "model_algorithm": "predict_analysis",     "runtime": "python3.6",     "apis": [         {             "protocol": "https",             "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": "multipart/form-data",                 "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"                 }]         }] }

配置文件解读

model_type是Scikit_Learn,表示推理环境中安装的AI引擎是Scikit_Learn。

runtime字段是python3.6,表示推理环境中安装的python版本是3.6。部署在线服务的时候,选择cpu资源即可。

apis字段定义了请求API的协议是HTTPS,通过post请求接受和返回信息。

request中设置了API请求接受的数据类型是json,接受的数据会放到名称叫req_data的数组中。

response中将返回数据的内容类型设置为form-data,以表单的形式返回。预测结果放到名称为resp_data的数组中。

复用指导

对于一个传统机器学习的模型,可以复用上面的推理配置文件。复用指导参考样例一的复用指导。

附:

如何部署模型到ModelArts并远程调用 (一):保存模型为平台支持的格式

如何部署模型到ModelArts并远程调用 (三):编写推理代码

如何部署模型到ModelArts并远程调用 (四):导入模型

如何部署模型到ModelArts并远程调用 (五):如何调用在线API服务

AI开发平台ModelArts

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:容器网络其实并不难
下一篇:Python 中的引用传递:背景和最佳实践
相关文章