文档首页 > > API参考> 服务管理> 部署服务

部署服务

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

功能介绍

将模型部署为服务。

URI

POST /v1/{project_id}/services

参数说明如表1所示。
表1 参数说明

参数

是否必选

参数类型

说明

project_id

String

用户项目ID。获取方法请参见获取项目ID

请求消息

请求参数如表2所示。
表2 请求参数

参数

是否必选

参数类型

说明

service_name

String

服务名称,支持1-64位可见字符(含中文),名称可以包含字母、中文、数字、中划线、下划线。

description

String

服务备注,默认为空,不超过100个字符。

infer_type

String

推理方式,取值为real-time/batch/edge。

  • real-time:实时服务,服务一直保持运行。
  • batch:批量服务,可配置批量任务运行,任务运行结束则停止。
  • edge表示部署到边缘节点,需提前在IEF(智能边缘服务)创建好节点。

workspace_id

String

服务所属的工作空间ID,默认为“0”,代表默认工作空间。

vpc_id

String

在线服务实例部署的虚拟私有云ID,默认为空。

此时ModelArts会为每个用户分配一个专属的VPC,用户之间隔离;如需要在服务实例中访问名下VPC内的其他服务组件,则可配置此参数为对应VPC的ID。

VPC一旦配置,不支持修改。当vpc_id与cluster_id一同配置时,只有专属集群参数生效。

subnet_network_id

String

子网的网络ID,默认为空。

当配置了vpc_id则此参数必填。需填写虚拟私有云控制台子网详情中显示的“网络ID”。通过子网可提供与其他网络隔离的、可以独享的网络资源。

security_group_id

String

安全组,默认为空,当配置了vpc_id则此参数必填。

安全组起着虚拟防火墙的作用,为服务实例提供安全的网络访问控制策略。安全组须包含至少一条入方向规则,对协议为TCP、源地址为0.0.0.0/0、端口为8080的请求放行。

cluster_id

String

专属集群ID,默认为空,不使用专属集群;使用专属集群部署服务时需确保集群状态正常;配置此参数后,需要使用集群的网络配置,“vpc_id”参数不生效。当与下方real-time config中的cluster_id同时配置时,优先使用real-time config中的cluster_id参数。

config

对应infer_type的config结构数组

模型运行配置,当推理方式为batch/edge时仅支持配置一个模型,如果上传多个模型,默认只会读取第一个去新建服务;当推理方式为real-time时,可根据业务需要配置多个模型并分配权重,但多个模型的版本号不能相同。

schedule

schedule结构数组

服务调度配置,仅在线服务可配置,默认不使用,服务长期运行。请参见表6

additional_properties

Map<String, Object>

服务级别附加属性,便于服务管理。请参见表7

表3 real-time config结构

参数

是否必选

参数类型

说明

model_id

String

模型ID。

weight

Integer

权重百分比,分配到此模型的流量权重,仅当infer_type为real-time时需要配置,多个权重相加必须等于100。

specification

String

资源规格,根据所提供版本选择适合业务的规格。当前版本可选:

  • modelarts.vm.cpu.2u
  • modelarts.vm.gpu.0.25p4
  • modelarts.vm.gpu.0.5p4
  • modelarts.vm.gpu.p4
  • modelarts.vm.gpu.0.25t4
  • modelarts.vm.gpu.0.5t4
  • modelarts.vm.gpu.t4
  • modelarts.vm.arm.d310.3u6g
  • modelarts.vm.ai1.a310
  • modelarts.vm.cpu.free
  • modelarts.vm.gpu.free

instance_count

Integer

模型部署的实例数。实例数取值必须大于0。

envs

Map<String, String>

运行模型需要的环境变量键值对,可选填,默认为空。

cluster_id

string

专属资源池ID,默认为空,不使用专属资源池。配置此参数后,需要使用集群的网络配置,“vpc_id”参数不生效。

表4 batch config结构

参数

是否必选

参数类型

说明

model_id

String

模型ID。

specification

String

资源规格,当前版本可选modelarts.vm.cpu.2u/modelarts.vm.gpu.p4。

instance_count

Integer

模型部署的实例数。

envs

Map<String, String>

运行模型需要的环境变量键值对,可选填,默认为空。

src_type

String

数据来源类型,可选填ManifestFile。默认为空,表示只读取src_path目录下的文件。当取值为ManifestFile时,src_path必须为具体的manifest路径,在manifest文件中可指定多个数据路径(参考推理manifest规范)。

src_path

String

批量任务输入数据的OBS路径。

dest_path

String

批量任务输出结果的OBS路径。

req_uri

String

批量任务中调用的推理路径,针对不同的推理路径可能有不同的输入参数和输入数据。

mapping_type

String

输入数据的映射类型,可选“file”“csv”

  • file指每个推理请求对应到输入数据目录下的一个文件,当使用此方式时,此模型对应req_uri只能有一个输入参数且此参数的类型是file。
  • 选择csv时指每个推理请求对应到csv里的一行数据,当使用此方式时,输入数据目录下的文件只能以.csv为后缀,且需配置mapping_rule参数,以表达推理请求体中各个参数对应到csv的索引。

mapping_rule

Map

输入参数与csv数据的映射关系,仅当“mapping_type”“csv”时需要填写。

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

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

表5 edge config结构

参数

是否必选

参数类型

说明

model_id

String

模型ID。

specification

String

资源规格,当前版本可选modelarts.vm.cpu.2u/modelarts.vm.gpu.p4。

envs

Map<String, String>

运行模型需要的环境变量键值对,可选填,默认为空。

nodes

String数组

边缘节点ID数组。

表6 schedule结构

参数

是否必选

参数类型

说明

type

String

调度类型,当前仅支持取值为“stop”

time_unit

String

调度时间单位,可选:

  • DAYS
  • HOURS
  • MINUTES

duration

Integer

对应时间单位的数值,比如2小时后停止,则“time_unit”“HOURS”“duration”“2”

表7 服务级别additional_properties已有属性

参数

参数类型

说明

smn_notification

smn_notification结构

smn消息通知结构,用于通知用户服务状态变化。请参见表8

表8 smn_notification结构

参数

是否必选

参数类型

说明

topic_urn

String

smn主题urn地址。

events

List<Integer>

事件ID,目前已有事件ID如下。

  • 1:failed
  • 3:running
  • 7:concerning
  • 11:pending

响应消息

响应参数如表9所示。
表9 响应参数

参数

参数类型

说明

service_id

String

服务ID。

示例

如下为部署不同类型服务的样例。

  • 请求示例,创建在线服务
    POST    https://endpoint/v1/{project_id}/services
    {
      "service_name": "mnist",
      "description": "mnist service",
      "infer_type": "real-time",
      "config": [
        {
          "model_id": "xxxmodel-idxxx",
          "weight": "100",
          "specification": "modelarts.vm.cpu.2u",
          "instance_count": 1
        }
      ]
    }
  • 请求示例,创建在线服务且配置多版本分流
    {
      "service_name": "mnist",
      "description": "mnist service",
      "infer_type": "real-time",
      "config": [
        {
          "model_id": "xxxmodel-idxxx",
          "weight": "70",
          "specification": "modelarts.vm.cpu.2u",
          "instance_count": 1,
          "envs":
          {
              "model_name": "mxnet-model-1",
              "load_epoch": "0"
          }
        },
        {
          "model_id": "xxxxxx",
          "weight": "30",
          "specification": "modelarts.vm.cpu.2u",
          "instance_count": 1
        }
      ]
    }
  • 请求示例,创建专属资源池自定义规格在线服务样例
    {
    	"service_name": "realtime-demo",
    	"description": "",
    	"infer_type": "real-time",
    	"cluster_id": "8abf68a969c3cb3a0169c4acb24b0000",
    	"config": [{
    		"model_id": "eb6a4a8c-5713-4a27-b8ed-c7e694499af5",
    		"weight": "100",
    		"cluster_id": "8abf68a969c3cb3a0169c4acb24b0000",
    		"specification": "custom",
    		"custom_spec": {
    			"cpu": 1.5,
    			"memory": 7500,
    			"gpu_p4": 0,
    			"ascend_a310": 0
    		},
    		"instance_count": 1
    	}]
    }
  • 请求示例,创建在线服务设置自动停止
    {
    	"service_name": "service-demo",
    	"description": "demo",
    	"infer_type": "real-time",
    	"config": [{
    		"model_id": "xxxmodel-idxxx",
    		"weight": "100",
    		"specification": "modelarts.vm.cpu.2u",
    		"instance_count": 1
    	}],
    	"schedule": [{
    		"type": "stop",
    		"time_unit": "HOURS",
    		"duration": 1
    	}]
    }
  • 请求示例,创建批量服务且输入数据映射方式为“file”
    {
    "service_name": "batchservicetest",
    "description": "",
    "infer_type": "batch",
    "config": [{
        "model_id": "598b913a-af3e-41ba-a1b5-bf065320f1e2",
        "specification": "modelarts.vm.cpu.2u",
        "instance_count": 1,
        "src_path": "https://infers-data.obs.cn-north-4.myhuaweicloud.com/xgboosterdata/",
        "dest_path": "https://infers-data.obs.cn-north-4d.com/output/",
        "req_uri": "/",
        "mapping_type": "file"
    }]
    }
  • 请求示例,创建批量服务且输入数据映射方式为“csv”
    {
    "service_name": "batchservicetest",
    "description": "",
    "infer_type": "batch",
    "config": [{
        "model_id": "598b913a-af3e-41ba-a1b5-bf065320f1e2",
        "specification": "modelarts.vm.cpu.2u",
        "instance_count": 1,
        "src_path": "https://infers-data.obs.cn-north-4.myhuaweicloud.com/xgboosterdata/",
        "dest_path": "https://infers-data.obs.cn-north-4.myhuaweicloud.com.com/output/",
        "req_uri": "/",
        "mapping_type": "csv",
        "mapping_rule": {
            "type": "object",
            "properties": {
                "data": {
                    "type": "object",
                    "properties": {
                        "req_data": {
                            "type": "array",
                            "items": [{
                                "type": "object",
                                "properties": {
                                    "input5": {
                                        "type": "number",
                                        "index": 0
                                    },
                                    "input4": {
                                        "type": "number",
                                        "index": 1
                                    },
                                    "input3": {
                                        "type": "number",
                                        "index": 2
                                    },
                                    "input2": {
                                        "type": "number",
                                        "index": 3
                                    },
                                    "input1": {
                                        "type": "number",
                                        "index": 4
                                    }
                                }
                            }]
                        }
                    }
                }
            }
        }
    }]
    }
    • 示例中“mapping_rule”描述的推理请求体格式为:
      {
      "data": {
          "req_data": [{
              "input1": 1,
              "input2": 2,
              "input3": 3,
              "input4": 4,
              "input5": 5
          }]
      }
      }
  • 响应示例
    {
      "service_id": "10eb0091-887f-4839-9929-cbc884f1e20e"
    }

状态码

状态码请参见表1

分享:

    相关文档

    相关产品

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

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

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

字符长度不能超过200

提交反馈 取消

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

智能客服提问云社区提问