本文介绍如何基于PAI-Rec平台把引擎服务部署到PAI-EAS平台上。
创建引擎配置单
在启动PAI-Rec引擎前,需先创建并成功发布配置单至预发和生产环境。引擎将依据配置单中的设置进行初始化。若后续对配置进行了调整,可直接发布更新后的配置,引擎能够实时读取新配置并实现热更新,无需重启服务。这里有个别情况不支持热更新需要注意,第一种是数据源参数的更改,例如更改Hologres数据源的数据库等,第二种情况是删除某个场景的配置,如果请求参数中仍使用此场景,还是会有相关配置被使用的。
-
登录PAI-Rec管理控制台,在左侧导航栏选择引擎服务管理>引擎配置。
-
在预发环境,单击创建配置单,系统会提供默认设置,可直接创建。
-
单击克隆,可从预发环境的配置克隆生成生产环境的配置单。
在弹出的克隆配置单对话框中,填写克隆配置单名称,并在克隆配置单版本下拉框中选择需要克隆的版本。
-
在生产环境,单击目标配置单右侧的详情,进行发布。
创建服务
-
登录PAI-Rec管理控制台,在左侧导航栏选择引擎服务管理>服务管理。
-
单击创建服务,按照如下说明配置相关参数。
-
基础配置
参数
描述
服务名称
部署到PAI-EAS上的服务名称。
服务描述
服务描述信息。
地域
部署到PAI-EAS的服务地域。
镜像名称
如果无需自定义开发代码,选择官方镜像;如果需要自定义开发代码,选择用户自定义镜像,可参考快速创建项目打包镜像。
镜像密钥
PAI-EAS通过此处设置的镜像密钥拉取镜像。
推荐引擎配置
引擎服务用到的引擎配置名称。需要先发布预发和生产环境的引擎配置。
-
EAS配置
-
配置EAS参数。
参数
描述
EAS资源组
如果没有私有资源组,默认使用公共资源组即可。
EAS配置文件
包括预发环境配置和正式环境配置,通过该配置,在PAI-EAS分别创建预发服务和生产服务。
-
在预发环境配置页签,单击创建即可,PAI-Rec会根据配置自动在EAS平台创建服务。
页面会提示需确保权限策略 PaiRecDataManagementAccess 已授予角色 AliyunPAIRecEASRole。确认配置无误后,单击 创建。
-
选择对应工作空间后,单击进入EAS,在模型在线服务(EAS)页面,找到刚才部署的服务名称,等待服务状态变为运行中时,代表预发服务部署成功。您可以单击服务名称,查看服务日志等信息。
-
部署生产服务,操作和预发服务同理,当预发或生产服务部署失败时,第一步需要在RAM控制台检查AliyunPAIRecEASRole是否有PaiRecDataManagementAccess,如果已经有权限,下一步可以根据服务日志来判断错误的具体解决方式,例如如果有权限类型的错误,可以参考Q:引擎启动时没有权限(Message: ram permission err: permission denied, accessDeniedDetail: {"AuthAction":"pairec:ListScenes",xxxx})来解决。
-
-
预发发布/生产发布
如果使用官方镜像部署,可跳过此步骤,直接创建。
-
测试服务
部署服务后,可以测试该服务。具体操作,请参见接口测试。
EAS控制台测试
-
登录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:200、msg:success、experiment_id及 10 条推荐结果(每条包含item_id、score、retrieve_id)。 -
服务请求后,可以根据接口返回的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。
-
登录PAI-Rec管理控制台,在左侧导航栏选择引擎服务管理>引擎配置。
-
在生产页签,单击目标引擎右侧的查看。
进入引擎配置页面,在配置单列表操作列单击目标配置单的详情,可查看对应配置单的详细信息。
-
单击创建变更单内容,可以基于已发布的配置,创建变更内容,也可以对未发布的配置进行多次编辑修改。
在弹出的 创建配置单内容 面板中,可选择 从当前发布状态版本的配置内容开始编辑 或 从配置模板开始编辑,并在下方 JSON 编辑器中修改引擎配置参数,例如在
RecallConfs中将RecallCount设置为500。 -
编辑完成后,单击发布。
-
发布成功后,PAI-Rec引擎服务会读取到相应的配置,进行热加载,无需重启服务。
可以在EAS服务日志页面搜索reload,查看是否成功加载。日志中出现包含
reload关键字及对应配置版本号(如20240909183616)的记录,即表示配置热加载成功。加载的版本会和已发布的版本对应起来。
在引擎配置的版本列表中,已发布的版本(如
20240909183616)状态显示为已发布,其编辑和发布操作置灰不可点击,仅可查看配置。使用上面的方式进行测试,可以看到召回数量已经变化。
在EAS服务日志页面,通过requestId筛选可查看完整请求链路,其中
mock_recall.go日志显示module=MockRecall count=500 cost=1,表明MockRecall模块召回数量已变为500条,整条请求总耗时cost=5毫秒。