配置兜底策略

PAI-Rec 兜底功能在主推荐链路超时或结果不足时,自动启用兜底策略,确保服务高可用与推荐结果不为空。

阿里云 PAI-Rec 推荐白盒化产品 —— 兜底功能说明

1. 概述

为保障服务高可用性与用户体验稳定性,PAI-Rec 内置兜底机制(Fallback Mechanism)

当主推荐链路因超时或结果数量不足无法正常返回有效推荐时,系统将自动启用预设的兜底策略,快速生成替代结果,确保请求始终返回符合预期数量的有效推荐内容,避免空结果或服务中断。

注意:兜底功能与主推荐链路部署在同一服务实例内,不依赖外部降级服务,响应延迟低,适用于对 SLA 要求严格的在线推荐场景。

2. 使用场景

兜底功能主要应对以下两类主链路异常情况:

  • 主链路执行超时
    例如在大促、流量高峰或模型复杂度突增时,召回、过滤或排序阶段耗时超过阈值,导致整体响应延迟升高。

  • 主链路返回结果数量不足
    主链路虽完成执行,但最终产出 item 数量低于业务期望值(如目标返回 50 条,实际仅返回 10 条),影响展示效果。


3. 兜底策略类型

PAI-Rec 支持两种兜底策略,按优先级顺序依次尝试,直至满足目标返回数量:

策略类型

说明

上下文召回

用户可预先上传静态 ID 列表(如运营指定商品),兜底时优先返回该列表内容。

全局热门池

基于全站行为统计的热门物品(如近7天点击/转化 Top-N),用于补充上下文召回不足的部分。从候选物品池中随机采样,作为最终兜底手段,确保结果数量达标。


4. 配置方法

兜底策略通过 PAI-Rec 控制台引擎配置 进行设置,配置格式为 JSON,并支持热加载,无需重启服务即可生效。

4.1 触发条件和数据来源配置

在引擎配置中,通过在场景配置中添加以下字段,设置兜底触发条件和兜底数据来源:

{
  "SceneConfs": {
    "home_feed": {
      "default": {
        "FallbackConfig": {
          "Timeout": 50,
          "FeatureStoreName": "fs_pairec",
          "FeatureStoreViewName": "global_hot_v1",
          "CacheTime": 7200,
          "CompleteItemsIfNeed": false
        }
      }
    }
  }
}

字段名

类型

是否必填

描述

Timeout

int

超时时间,单位毫秒

FeatureStoreName

string

FeatureStore 数据源名称

FeatureStoreViewName

string

FeatureStore特征视图名

CacheTime

int

兜底数据缓存时间,单位秒

CompleteItemsIfNeed

bool

是否在数量不足时进行补足

4.2 兜底数据源

  • 上下文召回列表:用户需在 PAI-Rec 接口中上传物品列表,并在引擎配置中ContextItemRecall 。参考文档:上下文召回(ContextItemRecall)

  • 全局热门数据

    • 可通过 PAI-Rec “推荐方案定制”功能自动生成;

    • 或由用户自行构建后写入 PAI FeatureStore

    • FeatureStore 数据源配置参考:FeatureStore(特征平台)


5. 运行机制

PAI-Rec 采用 并行执行 + 结果替换 的兜底架构:

  1. 请求进入后,主推荐链路与兜底监控逻辑同时启动;

  2. 系统持续检测是否满足兜底条件(超时或数量不足);

  3. 一旦触发,立即执行兜底策略生成完整推荐结果;

  4. 主链路仍继续运行至完成(便于日志分析),但其结果会被丢弃

  5. 最终对外返回 100% 来自兜底链路的结果


6. 监控与日志

6.1 监控指标

PAI-Rec 支持对接以下监控系统:

  • Prometheus

  • 阿里云 ARMS

提供核心指标:

  • 兜底触发次数(pairec_fallback_total)

基于触发次数指标和推荐总次数可以计算兜底触发率,PAI-Rec 提供 Grafana 监控大盘配置可以查看兜底触发率,可以参考文档:配置可观测监控Prometheus

建议在 ARMS 中配置告警规则,当触发率突增时及时排查主链路异常。

6.2 服务日志

兜底相关日志包含关键字段,便于追踪:

requestId=abc123 module=fallback useCache=true cost=1
  • requestId:关联主链路与兜底日志

  • module=fallback:标识兜底模块

  • useCache:是否命中缓存(如热门池缓存)

  • cost:兜底逻辑执行耗时(单位:ms)


7. 使用限制与最佳实践

限制说明

  • 兜底返回数量受底层物品池大小限制(如热门池仅含 1000 个 item,则最多返回 1000 条);

  • 全局热门数据必须存储在 PAI FeatureStore 中,目前不支持其他数据源;

  • 不支持轻量级模型兜底或复杂策略组合。

最佳实践

  • 定期更新 FeatureStore 中的热门数据,确保时效性;

  • 在大促前压测兜底链路,验证其性能与容量;

  • 结合 ARMS 监控兜底触发率,将其作为主链路健康度的重要指标。