计算
弹性云服务器 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

将模型部署为批量推理服务

更新时间:2024-11-22 GMT+08:00

模型准备完成后,您可以将模型部署为批量服务。在“模型部署>批量服务”界面,列举了用户所创建的批量服务。

前提条件

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

背景信息

  • 用户最多可创建1000个批量服务。
  • 根据模型定义的输入请求不同(JSON文本或文件),不同的模型输入,需要填写的参数不同。当模型输入为JSON文件时,则需要根据配置文件生成映射文件;如果模型输入为文件时,则不需要。

操作步骤

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

      参数名称

      说明

      “资源池”

      “公共资源池”

      公共资源池有CPU或GPU两种规格。如需使用,需联系管理员创建公共资源池。

      “专属资源池”

      您可以在资源池规格中选择对应的规格进行使用。

      “模型来源”

      根据您的实际情况选择“自定义模型”或者“订阅模型”

      “选择模型及版本”

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

      “输入数据目录位置”

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

      说明:
      • 输入数据为图片时,建议单张图片小于12MB。
      • 输入数据格式为csv时,建议不要包含中文。
      • 输入数据格式为csv时,建议文件大小不超过12MB。
      • 如果单张图片/csv文件超过文件12MB,会提示报错,建议调整文件大小使其符合要求,或联系技术支持人员调整文件大小限制。

      “请求路径”

      批量服务中调用模型的接口URL,表示服务的请求路径,此值来自模型配置文件中apis的url字段。

      “映射关系”

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

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

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

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

      “输出数据目录位置”

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

      “实例规格”

      系统将根据您的模型匹配提供可用的计算资源。请在下拉框中选择可用资源,如果资源标识为售罄,表示暂无此资源。

      例如,模型来源于自动学习项目,则计算资源将自动关联自动学习规格供使用。

      “实例数”

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

      “环境变量”

      设置环境变量,注入环境变量到容器实例。为确保您的数据安全,在环境变量中,请勿输入敏感信息,如明文密码。

      “部署超时时间”

      用于设置单个模型实例的超时时间,包括部署和启动时间。默认值为20分钟,输入值必须在3到120之间。

      “运行日志输出”

      默认关闭,批量服务的运行日志仅存放在ModelArts日志系统,在服务详情页的“日志”支持简单查询。

      如果开启此功能,批量服务的运行日志会输出存放到云日志服务LTS。LTS自动创建日志组和日志流,默认缓存7天内的运行日志。如需了解LTS专业日志管理功能,请参见云日志服务

      说明:
      • “运行日志输出”开启后,不支持关闭。
      • LTS服务提供的日志查询和日志存储功能涉及计费,详细请参见了解LTS的计费规则
      • 请勿打印无用的audio日志文件,这会导致系统日志卡死,无法正常显示日志,可能会出现“Failed to load audio”的报错。
  4. 完成参数填写后,根据界面提示完成批量服务的部署。部署服务一般需要运行一段时间,根据您选择的数据量和资源不同,部署时间将耗时几分钟到几十分钟不等。
    说明:

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

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

Manifest文件规范

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

输入manifest文件样例
  • 文件名:“test.manifest”
  • 文件内容:
    {"source": "obs://test/data/1.jpg"}
    {"source": "s3://test/data/2.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-ZaMSxHvl68kKLAy5feYvLDM..."}
  • 文件要求:
    1. 文件名后缀需为“.manifest”
    2. 文件内容是多行JSON,每行JSON描述一个输入数据,需精确到文件,不能是文件夹;
    3. JSON内容需定义一个source字段,字段值是OBS的文件地址,有2种表达形式:
      1. 桶路径“<obs path>{{桶名}}/{{对象名}}/文件名”,适用于访问自己名下的OBS数据;您可以访问OBS服务的对象获取路径。<obs path>可以为“obs://”或“s3://”。
      2. OBS生成的分享链接,包含签名信息。适用于访问其他人的OBS数据。分享链接有效时间限制,请在有效时间内操作。

输出manifest文件样例

批量服务的输出结果目录会有一个manifest文件。
  • 假设用户输出结果路径为/test-bucket/test/,则结果存放位置如下:
    OBS桶/目录名
    ├── test-bucket
    │   ├── test
    │   │   ├── infer-result-{{task_id}}.manifest
    │   │   ├── infer-result
    │   │   │ ├── 1.jpg_result.txt
    │   │   │ ├── 2.jpg_result.txt
  • infer-result-0.manifest文件内容:
    {"source": "obs://obs-data-bucket/test/data/1.jpg","result":"SUCCESSFUL","inference-loc": "obs://test-bucket/test/infer-result/1.jpg_result.txt"}
    {"source": "s3://obs-data-bucket/test/data/2.jpg","result":"FAILED","error_message": "Download file failed."}
    {"source ": "https://infers-data.obs.example.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","result":"SUCCESSFUL","inference-loc": "obs://test-bucket/test/infer-result/2.jpg_result.txt"}
  • 文件格式:
    1. 文件名为“infer-result-{{task_id}}.manifest”,task_id为批量任务id,批量服务对应唯一的批量任务id。
    2. 当处理文件数目较多时,可能会有多个manifest文件,后缀相同,均为“.manifest”,文件名以后缀区分,例如“infer-result-{{task_id}}_1.manifest”等。
    3. manifest同一目录下会创建infer-result-{{task_id}}目录存放文件处理结果。
    4. 文件内容是多行JSON,每行JSON描述一个输入数据的对应输出结果。
    5. JSON内容包含多个字段。
      1. source:输入数据描述,与输入的manifest一致。
      2. result:文件处理结果,值为SUCCESSFUL或FAILED,分别代表成功与失败。
      3. inference-loc:输出结果路径,result为SUCCESSFUL时有此字段,格式为“obs://{{桶名}}/{{对象名}}”
      4. error_message:错误信息,result为FAILED时有此字段。

映射关系示例

如下示例展示了配置文件、映射规则、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
40
41
[
    {
        "method": "post",
        "url": "/",
        "request": {
            "Content-type": "multipart/form-data",
            "data": {
                "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
		}]
	}
}

查看批量服务预测结果

当您在部署批量服务时,会选择输出数据目录位置,您可以查看“运行完成”状态的批量服务运行结果。

  1. 登录ModelArts管理控制台,在左侧菜单栏中选择“模型部署>批量服务”,进入“批量服务”管理页面。
  2. 单击状态为“运行完成”的目标服务名称,进入服务详情页面。

    • 您可以查看服务的“名称”“状态”“服务ID”“输入数据目录位置”“输出数据目录位置”“描述”
    • 您也可以通过单击描述右侧的,对描述信息进行编辑。

  3. “输出数据目录位置”参数右侧获取详细OBS地址,前往此OBS目录,可以获取批量服务预测结果,包括预测结果文件和模型预测结果。

    如果预测成功,目录下有预测结果文件和模型预测结果;如果预测失败,目录下只有预测结果文件。

    • 预测结果文件:文件格式为“xxx.manifest”,里面包含文件路径、预测结果等信息。
    • 模型预测结果输出:
      • 当输入为图片时,每张图片输出一个结果,输出结果格式为“图片名_result.txt”。例如:IMG_20180919_115016.jpg_result.txt。
      • 当输入为音频时,每个音频输出一个结果,输出结果格式为“音频名_result.txt”。例如:1-36929-A-47.wav_result.txt。
      • 当输入为表格数据时,输出结果格式为“表格名_result.txt”。例如:train.csv_result.txt。

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

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容