计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
弹性伸缩 AS
镜像服务 IMS
专属主机 DeH
函数工作流 FunctionGraph
云手机服务器 CPH
Huawei Cloud EulerOS
网络
虚拟私有云 VPC
弹性公网IP EIP
虚拟专用网络 VPN
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
VPC终端节点 VPCEP
云连接 CC
企业路由器 ER
企业交换机 ESW
全球加速 GA
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
边缘安全 EdgeSec
威胁检测服务 MTD
CDN与智能边缘
内容分发网络 CDN
CloudPond云服务
智能边缘云 IEC
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
云搜索服务 CSS
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
数据可视化 DLV
数据湖工厂 DLF
湖仓构建 LakeFormation
企业应用
云桌面 Workspace
应用与数据集成平台 ROMA Connect
云解析服务 DNS
专属云
专属计算集群 DCC
IoT物联网
IoT物联网
设备接入 IoTDA
智能边缘平台 IEF
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
国际站常见问题
ICP备案
我的凭证
支持计划
客户运营能力
合作伙伴支持计划
专业服务
区块链
区块链服务 BCS
Web3节点引擎服务 NES
解决方案
SAP
高性能计算 HPC
视频
视频直播 Live
视频点播 VOD
媒体处理 MPC
实时音视频 SparkRTC
数字内容生产线 MetaStudio
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
存储容灾服务 SDRS
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属分布式存储服务 DSS
容器
云容器引擎 CCE
容器镜像服务 SWR
应用服务网格 ASM
华为云UCS
云容器实例 CCI
管理与监管
云监控服务 CES
统一身份认证服务 IAM
资源编排服务 RFS
云审计服务 CTS
标签管理服务 TMS
云日志服务 LTS
配置审计 Config
资源访问管理 RAM
消息通知服务 SMN
应用运维管理 AOM
应用性能管理 APM
组织 Organizations
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
应用身份管理服务 OneAccess
数据库
云数据库 RDS
文档数据库服务 DDS
数据管理服务 DAS
数据复制服务 DRS
云数据库 GeminiDB
云数据库 GaussDB
分布式数据库中间件 DDM
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
人脸识别服务 FRS
图引擎服务 GES
图像识别 Image
内容审核 Moderation
文字识别 OCR
AI开发平台ModelArts
图像搜索 ImageSearch
对话机器人服务 CBS
华为HiLens
视频智能分析服务 VIAS
语音交互服务 SIS
应用中间件
分布式缓存服务 DCS
API网关 APIG
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
多活高可用服务 MAS
事件网格 EG
企业协同
华为云会议 Meeting
云通信
消息&短信 MSGSMS
云生态
合作伙伴中心
云商店
开发者工具
SDK开发指南
API签名指南
Terraform
华为云命令行工具服务 KooCLI
其他
产品价格详情
系统权限
管理控制台
客户关联华为云合作伙伴须知
消息中心
公共问题
开发与运维
应用管理与运维平台 ServiceStage
软件开发生产线 CodeArts
需求管理 CodeArts Req
部署 CodeArts Deploy
性能测试 CodeArts PerfTest
编译构建 CodeArts Build
流水线 CodeArts Pipeline
制品仓库 CodeArts Artifact
测试计划 CodeArts TestPlan
代码检查 CodeArts Check
代码托管 CodeArts Repo
云应用引擎 CAE
开天aPaaS
云消息服务 KooMessage
云手机服务 KooPhone
云空间服务 KooDrive

部署服务

更新时间:2025-02-12 GMT+08:00

功能介绍

将模型部署为服务。

公共池中挂载密钥,支持HCS第三方用户使用secret_volumes字段来进行密钥挂载,且不提供UI界面,只能通过内部接口进行调用。

支持在modelarts边缘服务通过service_secrets来挂载密钥管理当中的密钥。

调试

您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。

URI

POST /v1/{project_id}/services

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

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

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。

表3 请求Body参数

参数

是否必选

参数类型

描述

workspace_id

String

服务所属的工作空间ID。未创建工作空间时默认值为“0”,存在创建并使用的工作空间,以实际取值为准。

schedule

Array of Schedule objects

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

cluster_id

String

可选,部署服务时使用的资源池ID。对于rel-time和batch服务类型,为旧版专属资源池ID,配置此参数后,则使用集群的网络配置,vpc_id参数不生效,使用专属资源池部署服务时需确保集群状态正常,若要使用专属资源池,需配置cluster_id或pool_name两个参数中任意一个,且pool_name优先级高于cluster_id,均不配置时则使用共享资源池,当与下方 config中的cluster_id或pool_name同时配置时,优先使用config中的cluster_id及pool_name参数;对于edge服务类型,为边缘资源池ID,使用边缘资源池部署服务时需确保资源池状态正常,当与下方 config中的cluster_id同时配置时,优先使用config中的cluster_id参数。

pool_name

String

real-time和batch服务类型可选。部署服务时使用的AI专属资源池弹性集群的资源池ID;使用专属资源池部署服务时需确保集群状态正常;当与下方 config中的cluster_id或pool_name同时配置时,优先使用config中的cluster_id及pool_name参数;若要使用专属资源池,需配置cluster_id或pool_name两个参数中任意一个,且pool_name优先级高于cluster_id,均不配置时则使用共享资源池。

infer_type

String

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

  • real-time代表在线服务,将模型部署为一个Web

    Service,并且提供在线的测试UI与监控能力,服务一直保持运行。

  • batch为批量服务,批量服务可对批量数据进行推理,完成数据处理后自动停止。

  • edge表示边缘服务,通过华为云智能边缘平台,在边缘节点将模型部署为一个Web

    Service,需提前在IEF(智能边缘服务)创建好节点。

vpc_id

String

在线服务实例部署的虚拟私有云ID,默认为空,此时ModelArts会为每个用户分配一个专属的VPC,用户之间隔离;如需要在服务实例中访问名下VPC内的其他服务组件,则可配置此参数为对应VPC的ID。VPC一旦配置,不支持修改。当vpc_id与cluster_id一同配置时,只有专属资源池参数生效。

service_name

String

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

description

String

服务描述,默认为空,不超过100个字符,不能包含!<>+&"'符号。

security_group_id

String

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

subnet_network_id

String

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

config

Array of ServiceConfig objects

模型运行配置,当推理方式为batch/edge时仅支持配置一个模型;当推理方式为real-time时,可根据业务需要配置多个模型并分配权重,但多个模型的版本号不能相同。

additional_properties

Map<String,ServiceAdditionalProperties>

服务级别附加属性,便于服务管理。

load_balancer_policy

String

只支持在线同步服务设置后端elb转发策略,枚举值:ROUND_ROBIN(加权轮询算法),LEAST_CONNECTIONS(加权最少连接),SOURCE_IP(源ip算法)

service_secrets

Array of ServiceSecret objects

服务挂载的密钥管理当中的密钥列表。(tag:hcs)

priority

Integer

抢占优先级,取值范围[1, 3],通过设置优先级保障高优先级的业务调度。infer_type为real-time、batch时支持抢占优先级设置。

表4 Schedule

参数

是否必选

参数类型

描述

duration

Integer

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

time_unit

String

调度时间单位,可选DAYS/HOURS/MINUTES。

type

String

调度类型,当前仅支持取值为stop,即运行指定时间后自动停止。

表5 ServiceConfig

参数

是否必选

参数类型

描述

custom_spec

CustomSpec object

自定义资源规格配置,仅当specification配置为custom时返回。

envs

Map<String,String>

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

specification

String

公共参数。资源规格,可通过查询支持的服务部署规格可获取规格列表。当前版本可选modelarts.vm.cpu.2u/modelarts.vm.gpu.pnt004(需申请)/modelarts.vm.ai1.snt3(需申请)/custom(仅支持在部署到专属资源池时使用),需申请的规格请提交工单,由ModelArts运维工程师添加权限。若配置为custom,需同时指定custom_spec参数。

weight

Integer

real-time类型必选。权重百分比,分配到此模型的流量权重,仅当infer_type为real-time时需要配置,多个权重相加必须等于100;当在一个在线服务中同时配置了多个模型版本且设置不同的流量权重比例时,持续地访问此服务的预测接口,ModelArts会按此权重比例将预测请求转发到对应的模型版本实例。

deploy_timeout_in_seconds

Integer

单个模型实例部署的超时时间。

model_id

String

公共参数。模型ID。通过调用查询AI应用列表接口可以获取。

src_path

String

batch服务类型必选。批量任务输入数据的OBS路径。

req_uri

String

batch服务类型必选。批量任务中调用的推理接口,即模型镜像中暴露的REST接口,需要从模型的config.json文件中选取一个api路径用于此次推理;如使用ModelArts提供的预置推理镜像,则此接口为/。

mapping_type

String

batch服务类型必选。输入数据的映射类型,可选file或csv。

  • 选择file时,指每个推理请求对应到输入数据目录下的一个文件,当使用此方式时,此模型对应req_uri只能有一个输入参数且此参数的类型是file。

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

cluster_id

String

可选,部署服务时使用的资源池ID。对于rel-time和batch服务类型,为旧版专属资源池ID,配置此参数后,则使用集群的网络配置,vpc_id参数不生效,使用专属资源池部署服务时需确保集群状态正常,该参数优先级高于cluster_id,配置该参数时需要同时配置服务层级的cluster_id或pool_name参数,且该参数优先级高于服务层级的cluster_id及pool_name,当config内的cluster_id与pool_name均未配置时,会使用服务层级的cluster_id及pool_name参数,均不配置时则会使用共享资源池;对于edge服务类型,为边缘资源池ID,使用边缘资源池部署服务时需确保资源池状态正常,配置该参数时需要同时配置服务层级的cluster_id参数,且该参数优先级高于服务层级的cluster_id;当该参数未配置时,会使用服务层级的cluster_id参数。

pool_name

String

real-time和batch服务类型可选。部署服务时使用的AI专属资源池弹性集群的资源池ID,使用专属资源池部署服务时需确保集群状态正常;该参数优先级高于cluster_id,配置该参数时需要同时配置服务层级的cluster_id或pool_name参数,且该参数优先级高于服务层级的cluster_id及pool_name;当config内的cluster_id与pool_name均未配置时,会使用服务层级的cluster_id及pool_name参数,均不配置时则会使用共享资源池。

nodes

Array of strings

edge服务类型可选。边缘节点ID数组,节点ID为IEF(智能边缘平台)的边缘节点ID,在IEF上创建边缘节点后可得到。

mapping_rule

Object

batch服务类型可选。输入参数与csv数据的映射关系,仅当mapping_type为csv时需要填写。映射规则与模型配置文件config.json中输入参数的定义方式相似,只需要在每一个基本类型(string/number/integer/boolean)的参数下配置index参数,指定使用csv数据中对应索引下标的数据作为此参数的值去发送推理请求,csv数据必须以英文半角逗号分隔,index从0开始计数,特殊地,当index为-1时忽略此参数。具体可参考创建批量服务的样例。

src_type

String

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

dest_path

String

batch服务类型必选。批量任务输出结果的OBS路径。

instance_count

Integer

公共参数。模型部署的实例数,当前限制最大实例数为128,如需使用更多的实例数,需提交工单申请。

additional_properties

Map<String,ModelAdditionalProperties>

模型部署附加属性,便于服务实例管理。

affinity

ServiceAffinity object

服务亲和部署

表6 CustomSpec

参数

是否必选

参数类型

描述

gpu_p4

Float

GPU个数,可选,默认不使用,支持配置小数,输入值不能小于0(最多支持2位小数,小数点后第3位做四舍五入处理)。

memory

Integer

内存,单位为MB,仅支持整数。

cpu

Float

CPU核数,支持配置小数,输入值不能小于0.01(最多支持2位小数,小数点后第3位做四舍五入处理)。

ascend_a310

Integer

Ascend芯片个数,可选,默认不使用,不支持与gpu同时配置。

表7 ModelAdditionalProperties

参数

是否必选

参数类型

描述

log_volume

Array of LogVolume objects

主机日志目录挂载。

仅支持使用专属资源池部署服务场景。如果用户使用公共资源池部署服务,则不支持配置该参数,否则会报错。

max_surge

Float

必须大于0,不配置默认值为1。当小于1时,代表滚动升级时增加的实例数的百分比;当大于1时,代表滚动升级时最大扩容的实例数。

max_unavailable

Float

必须大于0,不配置默认值为0。当小于1时,代表滚动升级时允许缩容的实例数的百分比;当大于1时,代表滚动升级时允许缩容的实例数。

termination_grace_period_seconds

Integer

容器优雅停止时间。

persistent_volumes

Array of PersistentVolumes objects

持久化存储挂载配置。

表8 LogVolume

参数

是否必选

参数类型

描述

host_path

String

主机上要映射的日志路径。

mount_path

String

容器中的日志路径。

表9 PersistentVolumes

参数

是否必选

参数类型

描述

name

String

存储卷的名称。

mount_path

String

存储卷在容器中的挂载路径。如:/tmp。请不要挂载在系统目录下,如“/”、“/var/run”等,会导致容器异常。建议挂载在空目录下,若目录不为空,请确保目录下无影响容器启动的文件,否则文件会被替换,导致容器启动异常,工作负载创建失败。

storage_type

String

挂载类型sfs_turbo极速文件系统挂载。

source_address

String

挂载源路径,挂载为极速文件时为sfs turbo id。

表10 ServiceAffinity

参数

是否必选

参数类型

描述

node_affinity

NodeAffinity object

节点亲和的时候填入该字段

表11 NodeAffinity

参数

是否必选

参数类型

描述

mode

String

节点亲和的方式,required表示强亲和,服务实例只能调度到指定节点,指定节点不存在则失败。preferred表示弱亲和,服务实例倾向于调度到指定节点,指定节点不满足调度条件,则会调度到其他节点。

pool_infos

Array of AffinityPoolInfo objects

配置亲和策略到指定的集群,并指定集群的节点。

表12 AffinityPoolInfo

参数

是否必选

参数类型

描述

pool_name

String

集群名称,集群名称必须在外层pool_name中

nodes

Array of AffinityNodeInfo objects

亲和的节点列表信息

表13 AffinityNodeInfo

参数

是否必选

参数类型

描述

name

String

节点名称,实际上对应的是节点的私有ip

表14 ServiceAdditionalProperties

参数

是否必选

参数类型

描述

smn_notification

Map<String,SmnNotification>

smn消息通知结构,用于通知用户服务状态变化。

log_report_channels

Array of LogReportPipeline objects

日志通道组。没有配置或者数组长度为0时部署代表未启用LTS日志对接。开启后不支持修改。

websocket_upgrade

Boolean

服务接口是否升级为WebSocket。部署服务时,默认值为false;更新服务配置时,默认值为上一次设置的值。

  • false:不升级为WebSocket。

  • true:升级为WebSocket。开启后,不支持修改。开启WebSocket时,不支持同时设置“服务流量限制”。

表15 SmnNotification

参数

是否必选

参数类型

描述

topic_urn

String

smn主题urn地址。

events

Array of integers

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

  • 1:failed

  • 3:running

  • 7:concerning

  • 11:pending

表16 LogReportPipeline

参数

是否必选

参数类型

描述

type

String

日志通道类型(目前支持LTS)。

configuration

LtsConfiguration object

LTS日志配置。

表17 LtsConfiguration

参数

是否必选

参数类型

描述

log_group_id

String

LTS日志组id,长度64。

log_stream_id

String

LTS日志流id,长度64。

表18 ServiceSecret

参数

是否必选

参数类型

描述

secretId

String

密钥id

mouthPath

String

挂载路径

响应参数

状态码:200

表19 响应Body参数

参数

参数类型

描述

service_id

String

服务id。

resource_ids

Array of strings

资源id数组,服务对应的模型生成的资源ID。

请求示例

  • 请求示例,创建在线服务。

    POST https://{endpoint}/v1/{project_id}/services
    
    {
      "infer_type" : "real-time",
      "service_name" : "mnist",
      "description" : "mnist service",
      "config" : [ {
        "specification" : "modelarts.vm.cpu.2u",
        "weight" : 100,
        "model_id" : "0e07b41b-173e-42db-8c16-8e1b44cc0d44",
        "instance_count" : 1
      } ]
    }
  • 请求示例,创建在线服务且配置多版本分流。

    POST https://{endpoint}/v1/{project_id}/services
    
    {
      "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
      } ]
    }
  • 请求示例,创建专属资源池自定义规格在线服务样例。

    POST https://{endpoint}/v1/{project_id}/services
    
    {
      "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
        },
        "instance_count" : 1
      } ]
    }
  • 请求示例,创建在线服务设置自动停止。

    POST https://{endpoint}/v1/{project_id}/services
    
    {
      "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”。

    POST https://{endpoint}/v1/{project_id}/services
    
    {
      "service_name" : "batchservicetest",
      "description" : "",
      "infer_type" : "batch",
      "cluster_id" : "8abf68a969c3cb3a0169c4acb24b****",
      "config" : [ {
        "model_id" : "598b913a-af3e-41ba-a1b5-bf065320f1e2",
        "specification" : "modelarts.vm.cpu.2u",
        "instance_count" : 1,
        "src_path" : "https://infers-data.obs.xxxxx.com/xgboosterdata/",
        "dest_path" : "https://infers-data.obs.xxxxx.com/output/",
        "req_uri" : "/",
        "mapping_type" : "file"
      } ]
    }
  • 请求示例,创建批量服务且输入数据映射方式为“csv”。

    POST https://{endpoint}/v1/{project_id}/services
    
    {
      "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.xxxxx.com/xgboosterdata/",
        "dest_path" : "https://infers-data.obs.xxxxx.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
                      }
                    }
                  } ]
                }
              }
            }
          }
        }
      } ]
    }
  • 请求示例,创建边缘服务样例。

    POST https://{endpoint}/v1/{project_id}/services
    
    {
      "service_name" : "service-edge-demo",
      "description" : "",
      "infer_type" : "edge",
      "config" : [ {
        "model_id" : "eb6a4a8c-5713-4a27-b8ed-c7e694499af5",
        "specification" : "custom",
        "instance_count" : 1,
        "custom_spec" : {
          "cpu" : 1.5,
          "memory" : 7500
        },
        "envs" : { },
        "nodes" : [ "2r8c4fb9-t497-40u3-89yf-skui77db0472" ]
      } ]
    }

响应示例

状态码:200

服务部署成功。

{
  "service_id" : "10eb0091-887f-4839-9929-cbc884f1e20e",
  "resource_ids" : [ "INF-f878991839647358@1598319442708" ]
}

状态码

状态码

描述

200

服务部署成功。

错误码

请参见错误码

我们使用cookie来确保您的高速浏览体验。继续浏览本站,即表示您同意我们使用cookie。 详情

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容