如何部署模型到ModelArts并远程调用 (二):编写推理配置文件
【摘要】 编写推理配置文件参考该帮助文档。config.json是推理配置文件,文件是json格式,用于设置推理过程中的环境信息。比如推理环境Python包依赖安装、使用的AI引擎、使用的python版本、以及模型API的输入和输出等。
编写推理配置文件
参考该帮助文档。
config.json
是推理配置文件,文件是json格式,用于设置推理过程中的环境信息。比如推理环境Python包依赖安装、使用的AI引擎、使用的python版本、以及模型API的输入和输出等。
字段解读
参数 | 描述 |
---|---|
model_algorithm |
自定义字符串。表明该模型的用途,由模型开发者填写,以便使用者理解该模型的用途 。写法满足以英文字母开头,不包含中文以及&!'"<>=,不超过36个字符的要求即可。例如:image_classification(图像分类)、object_detection(物体检测)、predict_analysis(预测分析)等。 |
model_type |
表明模型的AI引擎框架,目前仅支持TensorFlow、MXNet、Spark_MLlib、Caffe、Scikit_Learn、XGBoost、PyTorch(区分大小写)等AI引擎。 |
runtime |
表明模型的运行时环境,和model_type 字段相关,ModelArts推理支持的所有runtime 环境见此文档。如果runtime 以cpu或者gpu结尾,表示在部署在线服务的时候,只能选择cpu资源或者gpu资源。 |
apis |
定义模型可对外提供的restful api,包括模型接收和返回的请求格式。详细写法参考下面的样例及其解读。apis 的结构可以参考该文档。 |
dependencies |
设置模型推理代码需要import的Python包。目前只支持pip安装方式,对于软件包建议指定到具体的版本,即restraint 依赖填入EXACT,package_version指定版本号。也可以不填写package_version,只填写package_name。详细指导可参考下面的带样例解读。 |
样例解读
样例一:目标检测模型推理配置文件示例
模型输入是一张图片;输出是预测结果,以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并远程调用 (三):编写推理代码
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)