旧版在线服务迁移新版在线服务
使用场景
ModelArts在线服务(旧版)即将下线,对于AI模型部署场景,如果用户当前使用ModelArts在线服务(旧版)部署的服务,会因旧版服务即将下线导致服务中断。ModelArts推出的新版在线服务支持全形态大模型、分布式部署等能力,提供更全面的指标监控和更流畅的运维体验。因此,如何将旧版服务平滑迁移至新版服务成为用户普遍诉求。本章节提供了基于旧版在线服务配置及模型镜像路径,在新版在线服务页面创建对应推理服务的迁移方法。
方案概述
新版在线服务对架构进行了演进,推出了KubeInfer全新的分布式推理技术方案,分布式推理通过多节点并行计算,可显著提升大规模模型的推理效率。通过架构兼容设计,新版在线服务在支持分布式推理的同时,保留了对单机推理场景的兼容性。因此,您可以在新版在线服务页面上部署旧版在线服务的模型和镜像。
权限说明
需要具备新版推理的权限集,详情请见配置推理部署的基本权限。
计费影响
当前新版在线服务仅支持部署在专属资源池,专属资源池会产生计算资源的计费,具体如表1所示。
在创建专属资源池时,从节点创建成功起开始计费,驱动升级和安装过程也视为创建成功的一部分。
|
计费项 |
计费项说明 |
适用的计费模式 |
计费公式 |
|
|---|---|---|---|---|
|
计算资源 |
专属资源池 |
使用计算资源的用量。 具体费用可参见ModelArts价格详情。 |
按需计费 |
规格单价 * 计算节点个数 * 使用时长 |
|
包年/包月 |
规格单价 * 计算节点个数 * 购买时长 |
|||
|
存储资源 |
云硬盘EVS |
用户挂载的容器数据盘。 创建专属资源池时,挂载了容器数据盘(EVS),则这部分存储计费。 |
跟随专属资源池计费模式 |
规格单价 * 磁盘大小 * 磁盘数量 * 使用时长或购买时长 |
准备工作
准备“作业类型”为“模型部署”的专属资源池,可购买专属资源池或修改已有专属资源池的作业类型。
- 购买专属资源池,作业类型选择“模型部署”,详情请见创建Standard专属资源池。
- 修改专属资源池的作业类型,将已有资源池的作业类型增加“模型部署”选项,详情请见修改Standard专属资源池支持的作业类型。
如果您的旧版推理服务依然在运行,作业类型请不要把模型部署选项取消勾选,等上层业务迁移完后,可以再把模型部署(旧版)作业类型取消勾选。
步骤一:获取旧版在线服务部署信息
- 登录ModelArts管理控制台,在左侧菜单栏中选择“模型部署 > 在线服务 旧版”,进入“在线服务 旧版”管理页面。
- 单击待迁移的旧版服务名称,进入服务详情页面。
- 切换到“配置更新记录”页签,在当前配置的模型列表单击模型名称,查看模型详情,获取模型镜像对应的配置信息。
图1 模型详情
新版在线服务与旧版在线服务模型及服务部署的参数映射关系如表2所示。
表2 新旧版在线服务模型配置参数映射 旧版在线服务模型参数
旧版在线服务模型参数值
新版在线服务参数
新版在线服务参数值
元模型来源
从训练中选择
部署配置>单元配置>模型类型
- 模型类型:默认“自定义模型”。
- 模型来源:对象存储服务 OBS
- 模型源地址:训练作业的输出路径。前往控制台训练作业详情获取“输出-输出路径”参数值,详情请见查看训练作业详情。
- 挂载路径:根据新业务自定义。
- 本地存储加速:根据新业务选择开启。
从对象存储(OBS)中选择
- 模型类型:选择自定义模型。
- 模型来源:对象存储服务 OBS
- 模型源地址:与旧版在线服务“元模型存储路径”一致。
- 挂载路径:根据新业务自定义。
- 本地存储加速:根据新业务自定义。
从容器镜像中选择
部署配置>单元配置>镜像类型
无需配置模型,直接在镜像中配置。
- 镜像类型:容器镜像服务(SWR)。
- 选择镜像:与旧版在线服务的“容器镜像存储路径”保持一致。
AI引擎
TensorFlow, PyTorch, MindSpore
部署配置>单元配置>镜像类型
- 镜像类型:镜像仓库
- 选择镜像:预置镜像,选择对应框架的镜像。
Custom
- 镜像类型:容器镜像服务(SWR)
- 选择镜像:与旧版在线服务的“容器镜像存储路径”保持一致。
容器调用接口(AI引擎为Custom)
提供协议和端口号。
部署配置>部署管理配置>容器端口
与旧版在线服务保持一致。
健康检查(AI引擎为Custom)
选择开启启动探针、就绪探针、存活探针。
部署配置>单元配置>健康检查
与旧版在线服务保持一致。
模型说明
设置模型“文档名称”及其文档链接地址。
部署配置>基础配置>描述(可选)
服务描述可以增加对应的模型描述。
系统运行架构
设置所创建模型的系统架构。
/
不维护此关系,由用户自己保证运行架构的正确性
推理加速卡
选择是否使用加速卡。
/
不维护此关系,由用户自己保证加速卡的正确性
部署类型
在线服务。
/
在“模型部署 > 在线服务”页面创建在线服务即可。
启动命令
自定义启动命令。
部署配置>单元配置>更多配置>启动命令
与旧版在线服务保持一致。
- 返回旧版在线服务列表页面,单击待迁移的旧版服务操作列的修改,进入修改页面,获取旧版在线服务部署信息。
新版在线服务与旧版在线服务模型及服务部署的参数映射关系如表3所示。
表3 新旧版在线服务部署配置参数映射 旧版在线服务参数
旧版在线服务参数值
新版在线服务参数
新版在线服务参数值
是否自动停止
开启开关/关闭开关。
服务信息>基本配置>自动停止
勾选/去勾选。
资源池
公共资源池/专属资源池。
部署配置>资源配置>资源池
当前新版在线服务只支持专属资源池,选择准备工作中准备好的专属资源池。
多池负载均衡
开启开关/关闭开关。
/
创建服务后,添加多个部署在不同专属资源池上,添加服务请见《用户指南:管理在线服务部署的生命周期》。
选择模型及配置>模型来源
订阅模型。
/
不支持
选择模型及配置>模型来源
自定义模型&选择模型及版本。
部署配置>单元配置>模型类型
部署配置>单元配置>镜像类型
根据表2“元模型来源”参数对应配置。
选择模型及配置>分流(%)
自定义值。
创建服务后,添加多个部署,不同部署可以配置不同的流量配比,详情请见《用户指南:管理在线服务部署的生命周期》的“修改服务部署的流量权重”。
与旧版旧版在线推理保持一致。
选择模型及配置>实例规格
下拉框选择实例规格。
部署配置>单元配置>单元实例规格
与旧版旧版在线推理保持一致。
选择模型及配置>节点亲和部署
开启开关,选择优先部署的目标节点。
部署配置>单元配置>更多配置>亲和调度
设置亲和类型和强度,选择亲和部署的目标节点,与旧版在线服务保持一致。
选择模型及配置>实例数
自定义值。
部署配置>资源配置>部署副本数
与旧版旧版在线推理保持一致。
选择模型及配置>环境变量
输入环境变量值。
部署配置>单元配置>环境变量
与旧版旧版在线推理保持一致。
选择模型及配置>部署超时时间
自定义值。
部署配置>部署管理配置>更多配置>部署超时时间(分钟)
与旧版旧版在线推理保持一致。
选择模型及配置>存储挂载
- 存储卷类型:OBS桶/OBS并行文件系统
- 源地址
- 挂载路径
存储模型文件:
部署配置>单元配置>添加模型权重
存储代码文件:
部署配置>单元配置>代码来源
存储模型文件:
- 模型来源:与旧版在线服务“存储卷类型”一致。
- 模型源地址:与旧版在线服务“源地址”一致。
- 挂载路径:与旧版在线服务“挂载路径”一致。
存储代码文件:
- 代码来源:代码地址:与旧版在线服务“源地址”一致。
- 与旧版在线服务“存储卷类型”一致。
- 挂载路径:与旧版在线服务“挂载路径”一致。
- 存储卷类型:SFS Turbo
- 源地址
- 挂载路径
存储模型文件:
- 模型来源:与旧版在线服务“存储卷类型”一致。
- 文件系统:与旧版在线服务“文件系统名称”一致。
- 挂载路径:与旧版在线服务“挂载路径”一致。
存储代码文件:
- 代码来源:与旧版在线服务“存储卷类型”一致。
- 文件系统:与旧版在线服务“文件系统名称”一致。
- 挂载路径:与旧版在线服务“挂载路径”一致。
服务流量限制
输入每秒流量限制次数。
服务信息>高可用配置>更多配置>每秒请求上限(次)
与旧版在线服务保持一致。
升级为WebSocket
开启开关/关闭开关。
服务信息>服务协议
旧版在线服务开启开关,新版在线服务选择“WSS”。
运行日志输出
开启开关/关闭开关。
服务信息>高级配置>日志对接LTS
与旧版在线服务保持一致。
日志转储
开启开关/关闭开关。
服务信息>高级配置>日志对接LTS
与旧版在线服务保持一致。
支持APP认证
开启开关/关闭开关。
服务信息>认证方式
不支持,可以在服务信息中认证方式选择“API KEY认证”作为替代。
订阅信息
开启开关/关闭开关。
/
不支持
高级选项>标签
输入标签键和标签值。
服务信息>高级配置>标签
添加标签,标签键和标签值与旧版在线服务保持一致。
高级选项>IPV6
开启开关/关闭开关。
/
不支持
部署二:检查镜像
如果在旧版推理中,业务镜像中有使用rank_table信息做业务编排,在新版推理中,该信息由Modelarts-Infers-Operator组件生成:
|
字段 |
说明 |
|---|---|
status |
completed 表示就绪,incomplete 表示未就绪(需等待) |
server_group_count |
Instance下Role的数量 |
group_id |
Role编号(从0开始),Role 0 通常对外提供服务 |
server_count |
该Role下的Pod数量 |
server_id |
Pod所在宿主机的Host IP |
server_ip |
Pod的访问IP |
pod_name |
Pod名称(唯一标识) |
device |
Pod使用的NPU列表 |
device_id |
NPU在宿主机上的编号(不一定从0开始或连续) |
device_ip |
NPU的访问IP |
device_logical_id |
NPU在Pod内的逻辑编号(从0开始) |
rank_id |
NPU在Role内的逻辑编号(从0开始) |
{
"version": "1.0",
"status": "completed",
"server_group_count": "2",
"server_group_list": [
{
"group_id": "0",
"server_count": "1",
"server_list": [
{
"server_id": "192.xxx.xxx.238",
"server_ip": "172.xxx.xxx.139",
"pod_name": "infer-xxx-role-0-xxx",
"device": [
{"device_id": "0", "device_ip": "29.xxx.xxx.197", "rank_id": "0"},
...
]
}
]
},
{
"group_id": "1",
"server_count": "2",
"server_list": [
{
"server_id": "192.xxx.xxx.0",
"server_ip": "172.xxx.xxx.54",
"pod_name": "infer-xxx-role-1-xxx",
"device": [
{"device_id": "0", "device_ip": "29.xxx.xxx.74", "rank_id": "0"},
...
]
},
...
]
}
]
}
其中,在使用rank table时,需要等到status 为"completed"状态。参考脚本rank_table_checker.py:
import json import os import time GLOBAL_RANK_TABLE_ENV = 'GLOBAL_RANK_TABLE_FILE_PATH' POD_IP_ENV = 'POD_IP' def wait_completed_global_rank_table(): while True: try: pod_ip = os.getenv(POD_IP_ENV) global_rank_table_path = os.getenv(GLOBAL_RANK_TABLE_ENV) if not global_rank_table_path: print('read env \"{}\" failed'.format(GLOBAL_RANK_TABLE_ENV)) with open(global_rank_table_path, 'r') as file: buf = file.read() rank_table = json.loads(buf) if rank_table["status"] == "completed": server_group_list = rank_table['server_group_list'] for group in server_group_list: server_list = group["server_list"] for i in range(len(server_list)): if server_list[i]["server_ip"] == pod_ip: return print("cannot find local ip in ranktable!") else: print("status of ranktable is not completed!") except Exception as e: print(e) time.sleep(1) if __name__ == "__main__": wait_completed_global_rank_table()
步骤三:创建新版在线服务
- 登录ModelArts管理控制台,在左侧菜单栏中选择“模型部署 > 在线服务”,进入“在线服务”管理页面。
- 在“在线服务”列表中,单击“部署服务”。
- 在“部署在线服务”页面,参考表2和表3中旧版在线服务的配置信息,配置新版在线服务的服务信息和部署信息,更多参数说明请见《用户指南:部署模型为在线服务》。
- 服务信息和部署配置配置完成后,在“部署在线服务>确认配置”页面,确认配置信息无误后,单击“确认部署”。
部署服务一般需要运行一段时间,根据您选择的数据量和资源不同,部署时间将耗时几分钟到几十分钟不等。
您可以前往在线服务列表,查看在线服务的基本情况。在线服务列表中,刚部署的服务“状态”为“部署中”,当在线服务的“状态”变为“运行中”时,表示服务部署完成。
后续操作
部署完成后可以在预测页面进行业务验证,详情请见《用户指南:部署模型为在线服务》。如果功能没问题后,可以根据业务诉求,参考通过专属APIG&WAF&VPC&ELB连接内网访问在线服务和通过负载均衡连接内网访问在线服务建设公网访问链路。