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

举报
RoyalKun 发表于 2020/07/31 11:33:06 2020/07/31
【摘要】 编写推理配置文件参考该帮助文档。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_typeTensorFlow,表示推理环境中安装的AI引擎是TensorFlow

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

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

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

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

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


  • 复用指导

    对于一个目标检测模型,可以复用上面这个推理配置文件,但是需要做如下微调。对于apis,可以直接复用;对于dependencies,需要根据自己的推理代码,修改其中的package_namepackage_version;对于model_typeruntime,根据代码中实际使用的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_typeScikit_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服务

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。