本文为您介绍如何搭配使用PAI-EAS和DateWorks,进行模型服务定时部署。

前提条件

  • 购买DataWorks独享调度资源组,详情请参见DataWorks独享资源
  • 购买PAI,详情请参见开通
  • 完成实验的定时训练,并将模型保存至固定地址,详情请参见离线调度
  • 如果使用子账号定时自动部署模型服务,则需要对其赋予DateWorks相关权限及PAI-EAS模型部署权限,详情请参见用户使用子账号授权

步骤一:创建独享资源组

  1. 登录DataWorks控制台
  2. 在左侧导航栏,单击资源组列表
  3. 独享资源组页签,单击新增独享资源组
  4. 新增独享资源组页面,配置参数。
    参数 描述
    资源组类型 选择独享调度资源
    资源组名称 资源组名称必须在租户内唯一。
    说明 租户即主账号,一个租户(主账号)下可以有多个用户(子账号)。
    资源组备注 资源组的简单描述,便于区分各资源组。
    订单号 选择已购买的独享资源组订单号。
    可用区 选择地域的可用分区。
  5. 单击创建

步骤二:绑定归属的工作空间

独享调度资源组需要绑定归属的工作空间,才可以在对应的工作空间下选择该资源组。

  1. 独享资源组页签,单击相应资源组后的修改归属工作空间
  2. 修改归属工作空间对话框的分配到工作空间区域,选中分配独享调度资源组的目标工作空间。
  3. 单击确定

步骤三:安装部署工具包EASCMD

安装EASCMD工具包,需要联系管理员授权。

  1. 创建命令。
    1. 资源组列表独享资源组页签,单击操作列下的运维助手
    2. 在运维助手页面,单击新建命令
    3. 新建命令页面,配置参数。
      参数 描述
      命令名称 命令的名称。
      命令描述 命令的简要描述,便于区分各命令。
      命令类型 系统默认Shell类型,不支持修改。
      命令内容 输入如下命令。
      wget -P /home/admin/usertools/tools/ http://eas-data.oss-cn-shanghai.aliyuncs.com/tools/eascmd
      chmod +x /home/admin/usertools/tools/eascmd
      安装目录 安装至/home/admin/usertools/tools/目录。
      超时时间 命令执行的超时时间,单位为秒。如果命令执行超时,则系统强制结束命令。建议配置为60秒。
    4. 单击新建命令
  2. 执行命令。
    1. 在运维助手页面,单击操作列下的执行命令执行命令
    2. 执行命令页面,选择基线命令是,执行成功后纳入环境基线
    3. 单击运行
  3. 查看命令执行情况。
    1. 在运维助手页面下方的列表,单击相应命令后的查看结果查看命令执行结果
    2. 命令执行结果对话框,查看命令执行情况。如果执行进度为100%,则EASCMD工具包安装成功。工具包安装成功

步骤四:创建工作流

  1. 进入数据开发页面。
    1. 登录DataWorks控制台
    2. 在左侧导航栏,单击工作空间列表
    3. 选择工作空间所在地域后,单击相应工作空间后的进入数据开发
  2. 鼠标悬停至新建图标,单击业务流程
    业务流程
  3. 新建业务流程对话框,输入业务名称描述
    注意 业务名称必须是大小写字母、中文、数字、下划线(_)及小数点(.),且不能超过128个字符。
  4. 单击新建
  5. 在业务流程页面,拖拽通用 > Shell至右侧画布。新增节点
  6. 新建节点页面的节点名称文本框,输入部署节点
  7. 单击提交

步骤五:部署初始模型

因为定时自动部署是在初始模型服务基础上,增加一个模型服务版本,作为线上运行服务。所以定时自动部署之前,需要先部署初始模型。如果已经存在初始模型服务,则直接执行步骤六。

  1. 编辑部署脚本。
    1. 在业务流程页面,双击已创建的Shell节点(部署节点)。
    2. 在Shell节点页面,输入如下命令。
      # 编写服务部署描述文件。
      cat << EOF > echo.json
      {
        "name": "yourModelName",
        "generate_token": "true",
        "model_path": "yourModelAdress",
        "processor": "yourProcessorType",
        "metadata": {
          "instance": 1, #可以根据实际情况修改Instance数量。
          "cpu": 2 #可以根据实际情况修改CPU数量。
        }
      }
      EOF
      # 执行部署命令。
      /home/admin/usertools/tools/eascmd -i <yourAccessKeyID> -k <yourAccessKeySecret>  -e pai-eas.cn-shanghai.aliyuncs.com create echo.json
      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信息,需要根据实际情况修改。详细的字段信息请参见EASCMD客户端使用说明
      • yourAccessKeyID:Access Key ID。
      • yourAccessKeySecret:Access Key Secret。
      • 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-south-1.aliyuncs.com
        印度尼西亚(雅加达) pai-eas.ap-southeast-5.aliyuncs.com
        德国(法兰克福) pai-eas.eu-central-1.aliyuncs.com
  2. 运行脚本。
    1. 在Shell节点页面,单击页面上方的2图标。
    2. 警告对话框,单击继续运行
    3. 运行参数页面,选择调度资源组为已创建的独享资源组。
    4. 单击确定
      运行完成后,即可生成一个线上的模型服务。您可以参见以下步骤,在PAI控制台查看该模型服务。
  3. 可选:查看部署的模型服务。
    1. 登录PAI控制台
    2. 在左侧导航栏,选择模型部署 > EAS-模型在线服务
    3. 在PAI控制台页面的左上方,选择相应的地域。
    4. PAI EAS模型在线服务页面,查看已部署的模型服务。
      查看部署的初始模型后续步骤中,将不断对该模型服务增加服务版本,从而实现模型定时部署。

步骤六:编辑定时自动部署脚本

编辑步骤五中的Shell节点脚本,示例如下(如果已执行步骤五,则前13行代码无需修改。如果未执行步骤五,则需要根据实际情况修改前13行代码中的参数值)。
# 编写服务部署描述文件。
cat << EOF > echo.json
{
  "name": "yourModelName",
  "generate_token": "true",
  "model_path": "yourModelAdress",
  "processor": "yourProcessorType",
  "metadata": {
    "instance": 1,
    "cpu": 2
  }
}
EOF #第13行代码。
# 执行模型更新部署。每执行一次定时部署调度,系统就会在原模型服务基础上,增加一个模型服务版本,作为最新的线上运行服务。
/home/admin/usertools/tools/eascmd -i <yourAccessKeyID> -k <yourAccessKeySecret> -e pai-eas.cn-shanghai.aliyuncs.com modify <yourModelName> -s echo.json
# 此处可以编写服务的测试逻辑。
# 如果测试服务发生异常,则使用下述命令回滚模型服务。
#/home/admin/usertools/tools/eascmd -i <yourAccessKeyID> -k <yourAccessKeySecret> -e pai-eas.cn-shanghai.aliyuncs.com version -f <The name of the model to be rolled back> 1
其中的参数解释请参见步骤五:部署初始模型

步骤七:执行定时调度

  1. 执行调度任务。
    1. 在Shell节点页面,单击页面右侧的调度配置
    2. 调度配置页面的时间属性区域,选择调度周期
    3. 调度依赖区域,单击依赖的上游节点后的使用工作空间根节点
    4. 配置依赖关系,详情请参见依赖关系
    5. 单击Shell节点页面上方的保存图标,保存配置。
    6. 单击Shell节点页面上方的提交图标,提交调度任务。
  2. 查看定时调度的运行实例。
    1. 在Shell节点页面,单击右上方的运维
    2. 运维中心页面,选择周期任务运维 > 周期实例
    3. 在实例详情页面,查看模型自动部署的定时时间
    4. 选择操作列下的更多 > 查看运行日志,查看每次定时部署的运行日志。查看运行日志
  3. 查看定时部署的模型服务。
    1. 登录PAI控制台
    2. 在左侧导航栏,选择模型部署 > EAS-模型在线服务。
    3. 在PAI控制台页面的左上方,选择相应的地域。
    4. PAI EAS模型在线服务页面,从当前版本列下的列表,查看模型服务自动更新的所有历史版本。查看自动部署模型