本文为您介绍如何进行模型服务定时部署。
背景信息
目前支持使用以下任意一种方式来定时部署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控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS。
按照下图操作指引,查看模型服务自动更新的所有历史版本。
方案二:手动在DataWorks中进行部署
步骤一:创建独享调度资源组
登录DataWorks控制台。
单击左侧导航栏中的资源组,默认进入独享资源组页面,在该页面新建独享调度资源组,具体参数配置说明,请参见新增和使用独享调度资源组。
步骤二:绑定归属的工作空间
独享调度资源组需要绑定归属的工作空间,才可以在对应的工作空间下选择该资源组。
在资源组列表的独享资源组页签下,单击相应资源组后的修改归属工作空间。
在修改归属工作空间单击对应工作空间后的绑定,即可将独享资源组绑定至此工作空间。
步骤三:创建业务流程
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的 ,在下拉框中选择对应工作空间后单击进入数据开发。
在数据开发页面,鼠标悬停至图标,单击新建业务流程。
在新建业务流程对话框中,输入业务名称和描述。
单击新建。
右键单击目标业务流程,选择
。在新建节点页面的名称文本框,输入部署节点,然后单击确认。
步骤四:部署初始模型
因为定时自动部署是在初始模型服务基础上,增加一个模型服务版本,作为线上运行服务。所以定时自动部署之前,需要先部署初始模型。如果已经存在初始模型服务,则直接执行步骤五。
编辑部署脚本。
在业务流程页面,双击已创建的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控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS。
在模型在线服务(EAS)页面,查看已部署的模型服务。
后续步骤中,将不断对该模型服务增加服务版本,从而实现模型定时部署。
步骤五:编辑定时自动部署脚本
编辑步骤四中的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控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS。
按照下图操作指引,查看模型服务自动更新的所有历史版本。