部署PAI-Rec引擎服务

更新时间:
复制为 MD 格式

本文介绍如何基于PAI-Rec平台把引擎服务部署到PAI-EAS平台上。

创建引擎配置单

在启动PAI-Rec引擎前,需先创建并成功发布配置单至预发和生产环境。引擎将依据配置单中的设置进行初始化。若后续对配置进行了调整,可直接发布更新后的配置,引擎能够实时读取新配置并实现热更新,无需重启服务。这里有个别情况不支持热更新需要注意,第一种是数据源参数的更改,例如更改Hologres数据源的数据库等,第二种情况是删除某个场景的配置,如果请求参数中仍使用此场景,还是会有相关配置被使用的。

  1. 登录PAI-Rec管理控制台,在左侧导航栏选择引擎服务管理>引擎配置

  2. 预发环境,单击创建配置单,系统会提供默认设置,可直接创建。

  3. 单击克隆,可从预发环境的配置克隆生成生产环境的配置单。

    在弹出的克隆配置单对话框中,填写克隆配置单名称,并在克隆配置单版本下拉框中选择需要克隆的版本。

  4. 生产环境,单击目标配置单右侧的详情,进行发布。

创建服务

  1. 登录PAI-Rec管理控制台,在左侧导航栏选择引擎服务管理>服务管理

  2. 单击创建服务,按照如下说明配置相关参数。

    1. 基础配置

      参数

      描述

      服务名称

      部署到PAI-EAS上的服务名称。

      服务描述

      服务描述信息。

      地域

      部署到PAI-EAS的服务地域。

      镜像名称

      如果无需自定义开发代码,选择官方镜像;如果需要自定义开发代码,选择用户自定义镜像,可参考快速创建项目打包镜像。

      镜像密钥

      PAI-EAS通过此处设置的镜像密钥拉取镜像。

      推荐引擎配置

      引擎服务用到的引擎配置名称。需要先发布预发和生产环境的引擎配置。

    2. EAS配置

      1. 配置EAS参数。

        参数

        描述

        EAS资源组

        如果没有私有资源组,默认使用公共资源组即可。

        EAS配置文件

        包括预发环境配置正式环境配置,通过该配置,在PAI-EAS分别创建预发服务和生产服务。

      2. 预发环境配置页签,单击创建即可,PAI-Rec会根据配置自动在EAS平台创建服务。

        页面会提示需确保权限策略 PaiRecDataManagementAccess 已授予角色 AliyunPAIRecEASRole。确认配置无误后,单击 创建

      3. 选择对应工作空间后,单击进入EAS,在模型在线服务(EAS)页面,找到刚才部署的服务名称,等待服务状态变为运行中时,代表预发服务部署成功。您可以单击服务名称,查看服务日志等信息。

      4. 部署生产服务,操作和预发服务同理,当预发或生产服务部署失败时,第一步需要在RAM控制台检查AliyunPAIRecEASRole是否有PaiRecDataManagementAccess,如果已经有权限,下一步可以根据服务日志来判断错误的具体解决方式,例如如果有权限类型的错误,可以参考Q:引擎启动时没有权限(Message: ram permission err: permission denied, accessDeniedDetail: {"AuthAction":"pairec:ListScenes",xxxx})来解决。

    3. 预发发布/生产发布

      如果使用官方镜像部署,可跳过此步骤,直接创建。

测试服务

部署服务后,可以测试该服务。具体操作,请参见接口测试

EAS控制台测试

  1. 登录PAI-EAS控制台,单击服务名称,在在线调试页签,测试服务。接口路径需要加上/api/rec/feed,请求的body设置参数即可。在 在线调试 页签中,HTTP 方法选择 POST,请求 URL 填写推荐服务地址(如 http://17307601***.com/api/predict/pairec_config_test/api/rec/feed),Body 选择 raw 格式,请求体示例为 {"scene_id":"home_feed","size":10,"uid":"76295990"}。发送请求后,右侧 Response 区域返回状态码 200,响应 JSON 包含 code:200msg:successexperiment_id 及 10 条推荐结果(每条包含 item_idscoreretrieve_id)。

  2. 服务请求后,可以根据接口返回的request_id查看日志详情。

    日志页签的关键字输入框中粘贴 request_id 值进行筛选,日志详情展示该推荐请求的完整处理链路:controller begin → feed(含 scene_name、exp_room_id 等场景参数)→ MockRecall → recall → Filter → LoadFeatures → rank → controller end,各模块耗时(cost)以毫秒为单位记录,可据此定位性能瓶颈。

PAI-Rec控制台测试

登录PAI-Rec管理控制台,在左侧导航栏选择排查工具>推荐结果诊断,根据服务、环境和接口等进行测试。

在页面中依次配置关联PAI-Rec服务环境设置(如选择生产)、路由信息物品表,在请求数据区域编辑请求JSON,可按需开启调试模式,然后单击诊断查看推荐结果。

引擎配置概览

从上述接口中可知,返回了等于入参size大小的item数量,并且召回源名称是mock_recall

RecallConfs定义了一路模拟的召回mock_recall,在SceneConfs中,场景home_feed下引用了这一路召回。

详细的引擎配置,请参见引擎配置单

   "RecallConfs": [
        {
            "Name": "mock_recall",
            "RecallType": "MockRecall",
            "RecallCount": 200
        }
    ],
    "SceneConfs": {
        "home_feed": {
            "default": {
                "RecallNames": [
                    "mock_recall"
                ]
            }
        }
    }
警告

服务正式上线时,RecallNames需要删除mock_recall

引擎配置热加载

服务部署后,可以按照实际需求调整引擎配置。例如,将上面的mock_recall的召回数量从200调整到500。

  1. 登录PAI-Rec管理控制台,在左侧导航栏选择引擎服务管理>引擎配置

  2. 生产页签,单击目标引擎右侧的查看

    进入引擎配置页面,在配置单列表操作列单击目标配置单的详情,可查看对应配置单的详细信息。

  3. 单击创建变更单内容,可以基于已发布的配置,创建变更内容,也可以对未发布的配置进行多次编辑修改。

    在弹出的 创建配置单内容 面板中,可选择 从当前发布状态版本的配置内容开始编辑从配置模板开始编辑,并在下方 JSON 编辑器中修改引擎配置参数,例如在 RecallConfs 中将 RecallCount 设置为 500

  4. 编辑完成后,单击发布

  5. 发布成功后,PAI-Rec引擎服务会读取到相应的配置,进行热加载,无需重启服务。

    可以在EAS服务日志页面搜索reload,查看是否成功加载。日志中出现包含reload关键字及对应配置版本号(如20240909183616)的记录,即表示配置热加载成功。

    加载的版本会和已发布的版本对应起来。

    在引擎配置的版本列表中,已发布的版本(如 20240909183616)状态显示为已发布,其编辑发布操作置灰不可点击,仅可查看配置

    使用上面的方式进行测试,可以看到召回数量已经变化。

    EAS服务日志页面,通过requestId筛选可查看完整请求链路,其中mock_recall.go日志显示module=MockRecall count=500 cost=1,表明MockRecall模块召回数量已变为500条,整条请求总耗时cost=5毫秒。