如何部署模型到ModelArts并远程调用 (二):编写推理配置文件
编写推理配置文件
参考该帮助文档。
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并远程调用 (三):编写推理代码
- 点赞
- 收藏
- 关注作者
评论(0)