本文为您介绍如何进行模型服务定时部署。
背景信息
目前支持使用以下任意一种方式来定时部署EAS服务。
在Designer中通过更新EAS服务组件,来更新已部署的EAS服务。
搭配使用EAS和DataWorks来定时部署EAS服务。
前提条件
使用方案一部署EAS服务
待更新的模型已存储在OSS Bucket中。
使用方案二部署EAS服务
购买DataWorks独享调度资源组,详情请参见新增和使用独享调度资源组。
购买PAI,详情请参见开通并创建默认工作空间。
完成定时训练,并将模型保存至固定地址,详情请参见使用DataWorks离线调度Designer工作流。
如果RAM用户进行定时自动模型部署,则需要对其赋予DataWorks相关权限及EAS模型部署权限,详情请参见RAM用户登录并使用DataWorks和云产品依赖与授权:EAS。
使用限制
使用方案二部署EAS服务:
仅支持使用DataWorks独享调度资源组,不支持使用公共资源组。
方案一:使用Designer-更新EAS服务组件
步骤一:创建Designer工作流
如果您的模型是基于Designer工作流训练得到的,可以直接在训练组件下游连接更新EAS服务组件,详情请参见在线模型服务定时自动更新。
如果您的模型不是在Designer中训练得到的,但是存储在OSS Bucket中,也可以新建一个空白工作流,详情请参见新建自定义工作流。并参照下图拖入读OSS数据组件和更新EAS服务组件连接使用。在读OSS数据组件中配置OSS数据路径为模型存储的路径即可。
如果您的模型是从一个自己规划的OSS目录中按时间读取的,可以在工作流中配置全局变量。并在读OSS数据组件中引入全局变量进行模型路径配置,例如:
oss://examplebucket.oss-cn-shanghai-internal.aliyuncs.com/${date}/heart.pmml
。说明您可以先使用页面的OSS路径选择器选到一个有效模型文件路径,再将路径中和时间变量相关的部分用全局变量进行替换,可以减少手动进行endpoint等配置输入的复杂度。
步骤二:部署上述工作流至DataWorks
参考使用DataWorks离线调度Designer工作流,将上述工作流一键部署至DataWorks作为定时调度节点。
如果您在步骤一中引入了Designer全局变量,请参考示例2:定时调度参数替换,在节点调度配置中将全局变量的配置替换成所需的系统变量。
步骤三:部署后查看定时更新的服务版本
查看定时部署的模型服务版本,具体操作步骤如下。
登录PAI控制台。
在左侧导航栏单击工作空间列表,在工作空间列表页面中单击周期性更新的模型服务所处的工作空间名称,进入对应工作空间内。
按照下图操作指引,查看模型服务自动更新的所有历史版本。
方案二:手动在DataWorks中进行部署
步骤一:创建独享调度资源组
登录DataWorks控制台。
单击左侧导航栏资源组列表,在独享资源组页签下单击创建调度资源组,在购买页面根据业务需要配置相应的参数,配置要点如下。
参数
描述
地域和可用区
选择后续需要使用此独享资源组的地域。
说明独享调度资源组不支持跨地域使用。例如,华东2(上海)地域的独享资源,只能给华东2(上海)地域的工作空间使用。
独享资源类型
选择为独享调度资源。
独享调度资源
选择独享调度资源组的规格大小,不同规格的费用及最大并发运行实例数存在差异。详情请参见独享调度资源组计费说明:包年包月。
资源数量
资源组中的机器数量。为保证生产环境的高可用性,资源数量建议选择为2个及2个以上。
计费周期
独享资源组为包年包月服务,为保障服务不中断,建议您勾选到期自动续费。资源组创建完后,您也可以前往阿里云续费管理页面,开启或取消自动续费服务。详情请参见通用参考:停止使用DataWorks商品。
资源名称
设置资源组的名称,此名称需在租户内唯一,请避免重复,否则会导致在后续进行确定操作时报错。
说明租户即主账号,一个租户(主账号)下可以有多个用户(子账号)。
资源组
选择阿里云资源管理中创建的资源组。
若您的公司购买了多种阿里云资源,则可通过资源管理创建资源组进行云资源分组,并为资源组设置管理员,通过分组独立管理资源组内的所有资源。
重要此处选择的资源组是在阿里云账号下进行资源分组管理的一种机制,帮助您解决单个阿里云账号内的资源分组和授权管理的复杂性问题。与DataWorks产品所说的任务运行需使用的资源组为两个概念,请注意区分。
单击立即购买,根据界面提示进行付款等操作后即可完成购买独享调度资源组。
购买后,DataWorks即开始初始化此独享资源组,当资源组状态为运行中后,独享资源组即已添加至控制台。
说明独享资源组的初始化需要约20分钟,请您耐心等待其状态更新为运行中。
步骤二:绑定归属的工作空间
独享调度资源组需要绑定归属的工作空间,才可以在对应的工作空间下选择该资源组。
在资源组列表的独享资源组页签下,单击相应资源组后的修改归属工作空间。
在修改归属工作空间单击对应工作空间后的绑定,即可将独享资源组绑定至此工作空间。
步骤三:创建业务流程
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的 ,在下拉框中选择对应工作空间后单击进入数据开发。
在数据开发页面,鼠标悬停至图标,单击新建业务流程。
在新建业务流程对话框中,输入业务名称和描述。
单击新建。
在业务流程页面,拖拽通用Shell节点至右侧画布。
在新建节点页面的名称文本框,输入部署节点。
单击确认。
步骤四:部署初始模型
因为定时自动部署是在初始模型服务基础上,增加一个模型服务版本,作为线上运行服务。所以定时自动部署之前,需要先部署初始模型。如果已经存在初始模型服务,则直接执行步骤五。
编辑部署脚本。
在业务流程页面,双击已创建的Shell节点(部署节点)。
在Shell节点页面,输入如下命令。
# 编写服务部署描述文件。 cat << EOF > echo.json { "name": "yourModelName", "generate_token": "true", "model_path": "yourModelAdress", "processor": "yourProcessorType", "metadata": { "instance": 1, #可以根据实际情况修改Instance数量。 "cpu": 2, #可以根据实际情况修改CPU数量。 "memory": 4000 } } EOF # 执行部署命令。 /home/admin/usertools/tools/eascmd64 -i <yourAccessKeyID> -k <yourAccessKeySecret> -e pai-eas.cn-shanghai.aliyuncs.com create echo.json
重要如果您使用的独享调度资源组是在2022年8月10日之前创建的,则上述脚本的第16行代码,需要将
/home/admin/usertools/tools/eascmd64 ***
修改为/home/admin/usertools/tools/eascmd ***
。echo.json是描述服务相关信息(模型存储位置及使用资源等)的JSON文件,以下参数需要根据实际情况配置:
name:模型服务名称必须在同地域内唯一,是模型服务的唯一标识,可以结合业务含义命名。
model_path:训练模型的存储位置,支持HTTP和OSS地址。
如果使用HTTP地址,则所需的文件必须为TAR、GZ、BZ2及ZIP等压缩包格式。如果使用OSS地址,则可以指定压缩包文件路径或目录路径。使用OSS地址时,需要指定Endpoint,即在上述服务部署描述文件中增加
"oss_endpoint":"oss-cn-beijing.aliyuncs.com",
代码行(按照实际情况修改地域)。说明使用OSS存储模型时,需要为PAI赋予OSS访问权限,详情请参见OSS授权。
processor:Processor类型。
metadata:服务的Meta信息,需要根据实际情况修改。详细的字段信息请参见命令使用说明。
yourAccessKeyID:Access Key ID。如何获取AccessKey,详情请参见如何获取AccessKey。
yourAccessKeySecret:Access Key Secret。如何获取AccessKey,详情请参见如何获取AccessKey
Endpoint:部署命令
-e
后的Endpoint参数与地域的对应关系如下。地域
Endpoint
华东2(上海)
pai-eas.cn-shanghai.aliyuncs.com
华北2(北京)
pai-eas.cn-beijing.aliyuncs.com
华东1(杭州)
pai-eas.cn-hangzhou.aliyuncs.com
华南1(深圳)
pai-eas.cn-shenzhen.aliyuncs.com
中国(香港)
pai-eas.cn-hongkong.aliyuncs.com
新加坡
pai-eas.ap-southeast-1.aliyuncs.com
印度尼西亚(雅加达)
pai-eas.ap-southeast-5.aliyuncs.com
德国(法兰克福)
pai-eas.eu-central-1.aliyuncs.com
运行脚本。
在Shell节点页面,单击页面上方的图标。
在警告对话框,单击继续运行。
在运行参数页面,选择调度资源组为已创建的独享资源组。
单击确定。
运行完成后,即可生成一个线上的模型服务。您可以参见以下步骤,在PAI控制台查看该模型服务。
(可选)查看部署的模型服务。
登录PAI控制台。
在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。
按照下图操作指引,查看已部署的模型服务。
后续步骤中,将不断对该模型服务增加服务版本,从而实现模型定时部署。
步骤五:编辑定时自动部署脚本
编辑步骤四中的Shell节点脚本,示例如下(如果已执行步骤四,则前14行代码无需修改。如果未执行步骤四,则需要根据实际情况修改前14行代码中的参数值)。
# 编写服务部署描述文件。 cat << EOF > echo.json { "name": "yourModelName", "generate_token": "true", "model_path": "yourModelAdress", "processor": "yourProcessorType", "metadata": { "instance": 1, "cpu": 2, "memory": 4000 } } EOF #第14行代码。 # 执行模型更新部署。每执行一次定时部署调度,系统就会在原模型服务基础上,增加一个模型服务版本,作为最新的线上运行服务。 /home/admin/usertools/tools/eascmd64 -i <yourAccessKeyID> -k <yourAccessKeySecret> -e pai-eas.cn-shanghai.aliyuncs.com modify <yourModelName> -s echo.json # 此处可以编写服务的测试逻辑。 # 如果测试服务发生异常,则使用下述命令回滚模型服务。 #/home/admin/usertools/tools/eascmd64 -i <yourAccessKeyID> -k <yourAccessKeySecret> -e pai-eas.cn-shanghai.aliyuncs.com version -f <The name of the model to be rolled back> 1
重要如果您使用的独享调度资源组是在2022年8月10日之前创建的,则上述脚本的第16行和第19行代码,需要将
/home/admin/usertools/tools/eascmd64 ***
修改为/home/admin/usertools/tools/eascmd ***
。其中的参数解释请参见步骤四:部署初始模型。
步骤六:执行定时调度
执行调度任务。
在Shell节点页面,单击页面右侧的调度配置。
在调度配置页面的时间属性区域,选择调度周期。
在调度依赖区域,单击依赖的上游节点后的使用工作空间根节点。
配置依赖关系,详情请参见配置同周期调度依赖。
单击Shell节点页面上方的图标,保存配置。
单击Shell节点页面上方的图标,提交调度任务。
查看定时调度的运行实例。
在Shell节点页面,单击右上方的运维。
在运维中心页面,选择周期任务运维>周期实例。
在实例详情页面,查看模型自动部署的定时时间。
选择操作列下的更多>查看运行日志,查看每次定时部署的运行日志。
查看定时部署的模型服务。
登录PAI控制台。
在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。
按照下图操作指引,查看模型服务自动更新的所有历史版本。