文档首页 > > AI工程师用户指南> 部署模型> 批量服务> 部署为批量服务

部署为批量服务

分享
更新时间:2020/09/11 GMT+08:00

模型准备完成后,您可以将模型部署为批量服务。在“部署上线>批量服务”界面,列举了用户所创建的批量服务。您可以在右上方搜索框中输入服务名称,单击进行查询。

前提条件

  • 数据已完成准备:已在ModelArts中创建状态“正常”可用的模型。
  • 准备好需要批量处理的数据,并上传至OBS目录。
  • 已在OBS创建至少1个空的文件夹,用于存储训练输出的内容。

背景信息

  • 批量服务目前还处于限时免费阶段,运行中的批量服务,并不会产生费用。
  • 用户最多可创建1000个批量服务。
  • 根据模型定义的输入请求不同(JSON文本或文件),不同的模型输入,需要填写的参数不同。当模型输入为JSON文件时,则需要根据配置文件生成映射文件;如果模型输入为文件时,则不需要。

操作步骤

  1. 登录ModelArts管理控制台,在左侧导航栏中选择“部署上线 > 批量服务”,单击进入“批量服务”列表。
  2. 在批量服务列表中,单击左上角“部署”,进入“部署”页面。
  3. 在部署页面,填写批量服务相关参数,然后单击下一步。
    1. 填写基本信息。基本信息包含“名称”“描述”。其中“名称”默认生成。例如:service-bc0d,您也可以根据实际情况填写“名称”“描述”信息。
    2. 填写服务参数。包含资源池、模型配置等关键信息,详情请参见表1
      表1 参数说明

      参数名称

      说明

      选择模型及版本

      选择状态“正常”的模型及版本。

      输入数据目录位置

      选择输入数据的OBS路径,即您上传数据的OBS目录。只能选择文件夹或“.manifest”文件。“.manifest”文件规范请参见Manifest文件规范

      请求路径

      批量服务中调用模型的接口URl。

      映射关系

      如果模型输入是json格式时,系统将根据此模型对应的配置文件自动生成映射关系。如果模型的输入是文件,则不需要映射关系。

      自动生成的映射关系文件,填写每个参数对应到csv单行数据的字段索引,索引index从0开始计数。

      映射关系生成规则:映射规则来源于模型配置文件“config.json”中输入参数(request)。当“type”定义为“string/number/integer/boolean”基本类型时,需要配置映射规则参数,即index参数。请参见映射关系示例了解其规则。

      index必须从0开始的正整数,当index设置不符合规则时,最终的请求将忽略此参数。配置映射规则后,其对应的csv数据必须以英文半角逗号分隔。

      输出数据目录位置

      选择批量预测结果的保存位置,可以选择您创建的空文件夹。

      计算节点规格

      支持选择如下计算规格:

      • “自动学习规格(CPU)”“自动学习规格(GPU)”:仅适用于自动学习项目中训练得到的模型。只有当“模型列表”中自动学习项目生成的模型时,才可以查看到此规格。
      • “CPU:2 核 8 GiB”:适合纯CPU类型的负载运行的模型。
      • “CPU:2 核 8 GiB GPU:1*P4”:适合CPU+GPU类型模型的运行,带有1个Nvidia P4卡。

      计算节点个数

      设置当前版本模型的实例个数。如果节点个数设置为1,表示后台的计算模式是单机模式;如果节点个数设置大于1,表示后台的计算模式为分布式的。请根据实际编码情况选择计算模式。

      环境变量

      设置环境变量,注入环境变量到容器实例。

  4. 完成参数填写后,单击“立即创建”,完成批量服务的部署。部署服务一般需要运行一段时间,根据您选择的数据量和资源不同,部署时间将耗时几分钟到几十分钟不等。

    批量服务部署完成后,将立即启动,运行过程中将按照您选择的资源按需计费。

    您可以前往批量服务列表,查看批量服务的基本情况。在批量服务列表中,刚部署的服务“状态”“部署中”,当批量服务的“状态”变为“运行完成”时,表示服务部署完成。

Manifest文件规范

推理平台批量服务支持使用manifest文件,manifest文件可用于描述数据的输入输出。

输入manifest文件样例
  • 文件名:“test.manifest”
  • 文件内容:
    {"source": "obs://obs-data-bucket/test/data/1.jpg"}
    {"source": "https://infers-data.obs.cn-north-1.myhuaweicloud.com:443/xgboosterdata/data.csv?AccessKeyId=2Q0V0TQ461N26DDL18RB&Expires=1550611914&Signature=wZBttZj5QZrReDhz1uDzwve8GpY%3D&x-obs-security-token=gQpzb3V0aGNoaW5hixvY8V9a1SnsxmGoHYmB1SArYMyqnQT-ZaMSxHvl68kKLAy5feYvLDMNZWxzhBZ6Q-3HcoZMh9gISwQOVBwm4ZytB_m8sg1fL6isU7T3CnoL9jmvDGgT9VBC7dC1EyfSJrUcqfB_N0ykCsfrA1Tt_IQYZFDu_HyqVk-GunUcTVdDfWlCV3TrYcpmznZjliAnYUO89kAwCYGeRZsCsC0ePu4PHMsBvYV9gWmN9AUZIDn1sfRL4voBpwQnp6tnAgHW49y5a6hP2hCAoQ-95SpUriJ434QlymoeKfTHVMKOeZxZea-JxOvevOCGI5CcGehEJaz48sgH81UiHzl21zocNB_hpPfus2jY6KPglEJxMv6Kwmro-ZBXWuSJUDOnSYXI-3ciYjg9-h10b8W3sW1mOTFCWNGoWsd74it7l_5-7UUhoIeyPByO_REwkur2FOJsuMpGlRaPyglZxXm_jfdLFXobYtzZhbul4yWXga6oxTOkfcwykTOYH0NPoPRt5MYGYweOXXxFs3d5w2rd0y7p0QYhyTzIkk5CIz7FlWNapFISL7zdhsl8RfchTqESq94KgkeqatSF_iIvnYMW2r8P8x2k_eb6NJ7U_q5ztMbO9oWEcfr0D2f7n7Bl_nb2HIB_H9tjzKvqwngaimYhBbMRPfibvttW86GiwVP8vrC27FOn39Be9z2hSfJ_8pHej0yMlyNqZ481FQ5vWT_vFV3JHM-7I1ZB0_hIdaHfItm-J69cTfHSEOzt7DGaMIES1o7U3w%3D%3D"}
  • 文件要求:
    1. 文件名后缀需为“.manifest”
    2. 文件内容是多行JSON,每行JSON描述一个输入数据,需精确到文件,不能是文件夹;
    3. JSON内容需定义一个source字段,字段值是OBS的文件地址,有2种表达形式:
      1. “obs://{{桶名}}/{{对象名}}”,适用于访问自己名下的OBS数据;
      2. OBS生成的分享链接,包含签名信息。适用于访问其他人的OBS数据。

输出manifest文件样例

使用manifest文件输入,输出结果目录也会有一个manifest文件。
  • 假设用户输出结果路径为//test-bucket/test/,则结果存放位置如下:
    OBS桶/目录名
    ├── test-bucket
    │   ├── test
    │   │   ├── infer-result-0.manifest
    │   │   ├── infer-result
    │   │   │ ├── 1.jpg_result.txt
    │   │   │ ├── 2.jpg_result.txt
  • infer-result-0.manifest文件内容:
    {"source": "obs://obs-data-bucket/test/data/1.jpg",  "inference-loc": "obs://test-bucket/test/infer-result/1.jpg_result.txt"}
    {"source ": "https://infers-data.obs.cn-north-1.myhuaweicloud.com:443/xgboosterdata/2.jpg?AccessKeyId=2Q0V0TQ461N26DDL18RB&Expires=1550611914&Signature=wZBttZj5QZrReDhz1uDzwve8GpY%3D&x-obs-security-token=gQpzb3V0aGNoaW5hixvY8V9a1SnsxmGoHYmB1SArYMyqnQT-ZaMSxHvl68kKLAy5feYvLDMNZWxzhBZ6Q-3HcoZMh9gISwQOVBwm4ZytB_m8sg1fL6isU7T3CnoL9jmvDGgT9VBC7dC1EyfSJrUcqfB_N0ykCsfrA1Tt_IQYZFDu_HyqVk-GunUcTVdDfWlCV3TrYcpmznZjliAnYUO89kAwCYGeRZsCsC0ePu4PHMsBvYV9gWmN9AUZIDn1sfRL4voBpwQnp6tnAgHW49y5a6hP2hCAoQ-95SpUriJ434QlymoeKfTHVMKOeZxZea-JxOvevOCGI5CcGehEJaz48sgH81UiHzl21zocNB_hpPfus2jY6KPglEJxMv6Kwmro-ZBXWuSJUDOnSYXI-3ciYjg9-h10b8W3sW1mOTFCWNGoWsd74it7l_5-7UUhoIeyPByO_REwkur2FOJsuMpGlRaPyglZxXm_jfdLFXobYtzZhbul4yWXga6oxTOkfcwykTOYH0NPoPRt5MYGYweOXXxFs3d5w2rd0y7p0QYhyTzIkk5CIz7FlWNapFISL7zdhsl8RfchTqESq94KgkeqatSF_iIvnYMW2r8P8x2k_eb6NJ7U_q5ztMbO9oWEcfr0D2f7n7Bl_nb2HIB_H9tjzKvqwngaimYhBbMRPfibvttW86GiwVP8vrC27FOn39Be9z2hSfJ_8pHej0yMlyNqZ481FQ5vWT_vFV3JHM-7I1ZB0_hIdaHfItm-J69cTfHSEOzt7DGaMIES1o7U3w%3D%3D",  "inference-loc": "obs://test-bucket/test/infer-result/2.jpg_result.txt"}
  • 文件格式:
    1. 文件名为“infer-result-{{index}}.manifest”,index为实例序号,批量服务运行多少个实例就会产生多少个manifest文件。
    2. manifest同一目录下会创建infer-result目录存放结果。
    3. 文件内容是多行JSON,每行JSON描述一个输入数据的对应输出结果。
    4. JSON内容包含2个字段。
      1. source:输入数据描述,与输入的manifest一致。
      2. inference-loc:输出结果路径,格式为“obs://{{桶名}}/{{对象名}}”

映射关系示例

如下示例展示了配置文件、映射规则、csv数据以及最终推理请求的关系。

假设,您的模型所用配置文件,其apis参数如下所示:

 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
[
    {
        "protocol": "http",
        "method": "post",
        "url": "/",
        "request": {
            "type": "object",
            "properties": {
                "data": {
                    "type": "object",
                    "properties": {
                        "req_data": {
                            "type": "array",
                            "items": [
                                {
                                    "type": "object",
                                    "properties": {
                                        "input_1": {
                                            "type": "number"
                                        },
                                        "input_2": {
                                            "type": "number"
                                        },
                                        "input_3": {
                                            "type": "number"
                                        },
                                        "input_4": {
                                            "type": "number"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        }
    }
]

此时,其对应的映射关系如下所示。ModelArts管理控制台将从配置文件中自动解析映射关系,如果您调用ModelArts API时,需要自行根据规则编写映射关系。

{
    "type": "object",
    "properties": {
        "data": {
            "type": "object",
            "properties": {
                "req_data": {
                    "type": "array",
                    "items": [
                        {
                            "type": "object",
                            "properties": {
                                "input_1": {
                                    "type": "number",
                                    "index": 0
                                },
                                "input_2": {
                                    "type": "number",
                                    "index": 1
                                },
                                "input_3": {
                                    "type": "number",
                                    "index": 2
                                },
                                "input_4": {
                                    "type": "number",
                                    "index": 3
                                }
                            }
                        }
                    ]
                }
            }
        }
    }
}

用户需要进行推理的数据,即CSV数据,格式如下所示。数据必须以英文逗号隔开。

5.1,3.5,1.4,0.2
4.9,3.0,1.4,0.2
4.7,3.2,1.3,0.2

根据定义好的映射关系,最终推理请求样例如下所示,与在线服务使用的格式类似:

{
	"data": {
		"req_data": [{
			"input_1": 5.1,
			"input_2": 3.5,
			"input_3": 1.4,
			"input_4": 0.2
		}]
	}
}
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问