常见问题

更新时间:
复制为 MD 格式

PAI-Rec在使用过程中经常会遇到的一些问题。

Q:报错:未找到场景信息(scene:scene_test, not found the scene info)

报错示例:

image

报错原因:

PAI-Rec 引擎配置中使用到的场景名称(scene_test),在PAI-Rec控制台 ->【推荐场景】中不存在。

解决方法:

在 PAI-Rec 控制台->【推荐场景】中创建一个名称为 scene_test 的场景。

Q:报错:未找到召回场景(Scene:not found, SceneId:home_feed)

报错示例:

image

报错原因:

推荐引擎接口中scene_id的值和引擎配置中 SceneConfs(召回配置)中用到的场景名称不一致。

解决方法:

可以调整推荐引擎接口中 scene_id 的值,也可以调整 SceneConfs 中场景名,保证两个地方的场景有交集即可。

Q:引擎启动时注册Hologres失败

报错示例:

(event=RegisterHologres dsn=postgres://xxx-vpc-st.hologres.aliyuns.com:80/db?sslmode=disable&connect_timeout=10 name=pai_rec_online_new panic: runtime error invalid memory address or nil pointer dereference)

image

报错原因:
  1. 账户密码没有填写。

  2. PAI-EAS服务没有打通了专有网络。

  3. 打通专有网络的安全组没有开放80端口。

  4. 当前账户密码没有db的权限。

解决方法:
  1. 如果引擎配置中直接使用了 Hologres,检查 HologresConfs 中 DSN 中的账户名和密码是否正确,如果使用了 PAI-FeatureStore,而FeatureStore 的线上数据源使用的是Hologres,需要检查引擎配置中 FeatureStoreConfs 中的 HologresUsername 和 HologresPassword 两个字段是否替换为真实的值,这里的账户密码是在Hologres控制台 -> [实例列表] -> [账号管理] -> [用户管理]页面右上角创建的自定义用户,注意账户名是 BASIC$ 开头的字符串。

  2. 如果在推荐引擎服务和模型服务需要访问Hologres,需要进行网络打通才可以访问,EAS服务打通网络时选择的 VpcId(vpc_id)和 交换机ID(vswitch_id)需要和 Hologres实例的Vpc和交换机一致。

  3. 可以将安全组的80端口打开。

  4. DB授权页面,选择对应数据库的用户授权按钮,检查自定义用户是否有权限,如果没有,可点击页面右上角新增授权按钮,授予自定义用户Developer权限即可。

Q:引擎启动时没有权限(Message: ram permission err: permission denied, accessDeniedDetail: {"AuthAction":"pairec:ListScenes",xxxx})

报错示例:

image

报错原因:

引擎部署所依赖的EAS Role 缺少 PAI-Rec 产品的相关权限。

解决方法:

进入访问控制的角色列表页面,在搜索框中搜索AliyunPAIRecEASRole,点击角色所在行最右侧的新增授权按钮,搜索PaiRecDataManagementAccess,将此权限授予即可。

Q:如何对召回物品做特定的物品过滤

过滤特定物品可通过在调用推荐引擎接口时,将需要过滤的物品ID列表,传入到features.black_itemids中。实际生产中

可以根据业务规则,按照场景或者用户ID来准备需要过滤的数据,然后传入到features.black_itemids中。

image.png

在过滤层需要设置如下:

  • Operator:设置为not_in

  • Value:设置为user. black_itemids

{
    "FilterParams": [
        {
          
            "Name": "item_id", # 物品id的字段名
            "Type": "string",
            "Operator": "not_in",
            "Value": "user.black_itemids"
        }
    ]
}