AI开发平台ModelArtsAI开发平台ModelArts

计算
弹性云服务器 ECS
裸金属服务器 BMS
云手机 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器 HECS
VR云渲游平台 CVR
特惠算力专区
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属企业存储服务
云存储网关 CSG
专属分布式存储服务 DSS
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘小站 IES
智能边缘平台 IEF
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
园区智能体 CampusGo
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
视频分析服务 VAS
语音交互服务 SIS
知识图谱 KG
人证核身服务 IVS
IoT物联网
设备接入 IoTDA
设备管理 IoTDM(联通用户专用)
全球SIM联接 GSL
IoT数据分析
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
开发与运维
软件开发平台 DevCloud
项目管理 ProjectMan
代码托管 CodeHub
流水线 CloudPipeline
代码检查 CodeCheck
编译构建 CloudBuild
部署 CloudDeploy
云测 CloudTest
发布 CloudRelease
移动应用测试 MobileAPPTest
CloudIDE
Classroom
开源镜像站 Mirrors
应用魔方 AppCube
云性能测试服务 CPTS
应用管理与运维平台 ServiceStage
云应用引擎 CAE
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
资源管理服务 RMS
应用身份管理服务 OneAccess
区块链
区块链服务 BCS
可信跨链服务 TCS
可信分布式身份服务
智能协作
IdeaHub
开发者工具
SDK开发指南
API签名指南
DevStar
HCloud CLI
Terraform
Ansible
云生态
云市场
合作伙伴中心
华为云培训中心
其他
管理控制台
消息中心
产品价格详情
系统权限
我的凭证
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
应用编排服务 AOS
多云容器平台 MCP
基因容器 GCS
容器洞察引擎 CIE
云原生服务中心 OSC
容器批量计算 BCE
容器交付流水线 ContainerOps
应用服务网格 ASM
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB (for openGauss)
云数据库 GaussDB(for MySQL)
云数据库 GaussDB NoSQL
数据管理服务 DAS
数据库和应用迁移 UGO
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据湖治理中心 DGC
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
API网关 APIG
分布式缓存服务 DCS
分布式消息服务RocketMQ版
企业应用
域名注册服务 Domains
云解析服务 DNS
云速建站 CloudSite
网站备案
商标注册
华为云WeLink
会议
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMAExchange
API全生命周期管理 ROMA API
安全与合规
安全技术与应用
DDoS防护 ADS
Web应用防火墙 WAF
云防火墙 CFW
应用信任中心 ATC
企业主机安全 HSS
容器安全服务 CGS
云堡垒机 CBH
数据库安全服务 DBSS
数据加密服务 DEW
数据安全中心 DSC
云证书管理服务 CCM
SSL证书管理 SCM
漏洞扫描服务 VSS
态势感知 SA
威胁检测服务 MTD
管理检测与响应 MDR
安全治理云图 Compass
认证测试中心 CTC
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
专属云
专属计算集群 DCC
解决方案
高性能计算 HPC
SAP
混合云灾备
华为工业云平台 IMC
价格
成本优化最佳实践
专属云商业逻辑
用户服务
帐号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
更新时间:2021-03-18 GMT+08:00
分享

部署在线服务

部署在线服务包括:

  • 已部署为在线服务的初始化。
  • 部署在线服务predictor。
  • 部署批量服务transformer。

部署服务返回服务对象Predictor,其属性包括服务管理章节下的所有功能。

示例代码

在ModelArts notebook平台中,Session鉴权无需输入鉴权参数。其它平台的Session鉴权请参见Session鉴权

  • 方式1:已部署为在线服务predictor的初始化
    1
    2
    3
    4
    from modelarts.session import Session
    from modelarts.model import Predictor
    session = Session()
    predictor_instance = Predictor(session, service_id="input your service_id")
    
  • 方式2:部署在线服务predictor
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    from modelarts.session import Session
    from modelarts.model import Model
    from modelarts.config.model_config import ServiceConfig,TransformerConfig 
    session = Session()
    model_instance = Model(session, model_id="input your model_id")
    predictor_instance = model_instance.deploy_predictor( 
                                                 service_name="input service predictor name",
                                                 infer_type="real-time",
                                                 vpc_id="vpc_id",
                                                 subnet_network_id="subnet_network_id ",
                                                 security_group_id="security_group_id",
                                                 configs=configs                # predictor配置参数, 参考下文configs参数格式说明)
    

    参数“model_id”代表将部署成在线服务的模型。“model_id”可以通过查询模型列表或者ModelArts管理控制台获取。

  • 方式3:部署批量服务transformer
    1
    2
    3
    4
    5
    6
    7
    transformer = model_instance.deploy_transformer( 
                                                     service_name="input service transformer name",
                                                     infer_type="batch",
                                                     vpc_id="vpc_id",
                                                     subnet_network_id="subnet_network_id ",
                                                     security_group_id="security_group_id",
                                                     configs=configs            # transformer配置参数, 参考下文configs参数格式说明)
    
  • 关于部署在线服务predictor和批量服务transformer时,configs参数格式说明
    • 部署在线服务predictor时:

      SDK提供了ServiceConfig类对其定义,configs为list,list中的元组对象是ServiceConfig.定义代码如下:

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      configs = []
      service_config1 = ServiceConfig( 
                                       model_id="model_id1",
                                       weight="70",
                                       specification="specification",
                                       instance_count=2,
                                       envs=envs)
      service_config2 = ServiceConfig( 
                                       model_id="model_id2",
                                       weight="30",
                                       specification="specification",
                                       instance_count=2,
                                       envs=envs)
      configs.append(service_config1, service_config2)
      
    • 部署批量服务transformer时:

      SDK提供了TransformerConfig类对其定义,configs都是list,list中的元组对象是TransformerConfig.定义代码如下:

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      configs = []
      transformer_config1 = TransformerConfig( 
                                               model_id="model_id",
                                               specification="specification",
                                               instance_count=2,
                                               src_path="src_path",
                                               dest_path="dest_path",
                                               req_uri="req_uri",
                                               mapping_type="mapping_type",
                                               mapping_rule="mapping_rule",
                                               envs=envs)
      configs.append(transformer_config1)
      

参数说明

表1 参数说明

参数

是否必选

参数类型

描述

service_id

String

服务ID,可从ModelArts前端在线服务中获取。

session

Object

会话对象,初始化方法见Session鉴权

表2 部署在线服务predictor和transformer参数说明

参数

是否必选

参数类型

描述

service_name

String

服务名称,支持1-64位可见字符(含中文),只能以英文大小写字母或者中文字符开头,名称可以包含字母、中文、数字、中划线、下划线。

description

String

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

infer_type

String

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

  • real-time代表在线服务,将模型部署为一个Web Service,并且提供在线的测试UI与监控能力,服务一直保持运行。
  • batch为批量服务,批量服务可对批量数据进行推理,完成数据处理后自动停止。
  • edge表示边缘服务,通过华为云智能边缘平台,在边缘节点将模型部署为一个Web Service,需提前在IEF(智能边缘服务)创建好节点。

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的请求放行。

configs

包括predictor configs结构和transformer configs

模型运行配置。

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

schedule

schedule结构数组

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

表3 predictor configs结构

参数

是否必选

参数类型

描述

model_id

String

模型ID。“model_id”可以通过查询模型列表或者ModelArts管理控制台获取。

weight

Integer

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

{
"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
}
]
}

specification

String

资源规格,当前版本可选modelarts.vm.cpu.2u/modelarts.vm.gpu.p4(需申请)/modelarts.vm.ai1.a310(需申请),需申请权限才能使用的规格请在华为云创建工单,由ModelArts运维工程师添加权限。当取值为“local”时,即为在本地推理,请参见部署本地Predictor说明

instance_count

Integer

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

envs

Map<String, String>

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

表4 transformer configs结构

参数

是否必选

参数类型

描述

model_id

String

模型ID。

specification

String

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

instance_count

Integer

模型部署的实例数,邀测阶段取值范围[1, 2]。

envs

Map<String, String>

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

src_path

String

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

dest_path

String

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

req_uri

String

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

mapping_type

String

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

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

创建批量服务且输入数据映射方式为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.myhuaweicloud.com/xgboosterdata/",
"dest_path": "https://infers-data.obs.myhuaweicloud.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.myhuaweicloud.com/xgboosterdata/",
"dest_path": "https://infers-data.obs.myhuaweicloud.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

Map

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

样例中mapping_rule描述的推理请求体格式为:

{
"data": {
"req_data": [{
"input1": 1,
"input2": 2,
"input3": 3,
"input4": 4,
"input5": 5
}]
}
}
表5 部署predictor和transformer返回参数说明

参数

是否必选

参数类型

描述

predictor

Predictor对象

Predictor对象,其属性描述包括服务管理章节全部功能。

表6 schedule结构

参数

是否必选

参数类型

说明

op_type

String

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

time_unit

String

调度时间单位,可选:

  • DAYS
  • HOURS
  • MINUTES

duration

Integer

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

  • 给出MXNet实现手写数字识别项目中部署在线predictror实例:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    from modelarts.session import Session
    from modelarts.model import Model
    from modelarts.config.model_config import ServiceConfig,TransformerConfig 
    model_instance = Model(session, model_id = "input you model id")
    configs = []
    config1 = ServiceConfig(model_id="input you model id", 
                            weight="100", 
                            instance_count=1, 
                            specification="modelarts.vm.cpu.2u",
                            envs={"input_data_name":"images",
                                  "input_data_shape":"0,1,28,28",
                                  "output_data_shape":"0,10"})
    configs.append(config1)
    predictor = model_instance.deploy_predictor(service_name="DigitRecognition", configs=configs)
    
  • 给出MXNet实现手写数字识别项目中部署transformer实例(批推理):
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    from modelarts.session import Session
    from modelarts.model import Model
    from modelarts.config.model_config import ServiceConfig,TransformerConfig
    model_instance = Model(session, model_id = "input your model id") 
    configs = []
    config1 = TransformerConfig(model_id="input your model id", 
                                specification="modelarts.vm.cpu.2u", 
                                instance_count=1, 
                                envs={"input_data_name":"images","input_data_shape":"0,1,28,28","output_data_shape":"0,10"},
                                src_path="/w0403/testdigitrecognition/inferimages/",
                                dest_path="/w0403/testdigitrecognition/" ,
                                req_uri = "/",
                                mapping_type = "file")
    configs.append(config1)
    predictor = model_instance.deploy_transformer(service_name="DigitRecognition", infer_type="batch", configs=configs)
    
分享:

    相关文档

    相关产品

关闭导读