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 采用 并行执行 + 结果替换 的兜底架构:
请求进入后,主推荐链路与兜底监控逻辑同时启动;
系统持续检测是否满足兜底条件(超时或数量不足);
一旦触发,立即执行兜底策略生成完整推荐结果;
主链路仍继续运行至完成(便于日志分析),但其结果会被丢弃;
最终对外返回 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=1requestId:关联主链路与兜底日志module=fallback:标识兜底模块useCache:是否命中缓存(如热门池缓存)cost:兜底逻辑执行耗时(单位:ms)
7. 使用限制与最佳实践
限制说明
兜底返回数量受底层物品池大小限制(如热门池仅含 1000 个 item,则最多返回 1000 条);
全局热门数据必须存储在 PAI FeatureStore 中,目前不支持其他数据源;
不支持轻量级模型兜底或复杂策略组合。
最佳实践
定期更新 FeatureStore 中的热门数据,确保时效性;
在大促前压测兜底链路,验证其性能与容量;
结合 ARMS 监控兜底触发率,将其作为主链路健康度的重要指标。