Airbnb 用 Chronon 推送模式把推荐嵌入更新压到 10 至 30 秒
Airbnb 为其开源的特征平台 Chronon 新增了推送模式(Push Mode)与近实时(NRT)模型转换能力,能够在房客产生行为后的数秒内更新基于序列推荐的嵌入向量。该优化将嵌入的滞后时间从近两天缩短到不到一分钟,通常 10 至 30 秒即可完成更新。Airbnb 同时披露:离线 NDCG 指标提升 1.67%
Airbnb 开源的特征平台 Chronon 最近多了两项能力:推送模式(Push Mode)和近实时(NRT)模型转换。有了它们,房客刚产生行为,基于序列推荐生成的嵌入向量就能在数秒内刷新。原先嵌入的滞后时间接近两天,现在压到了不到一分钟,通常 10 至 30 秒就能完成更新。Airbnb 同时披露了两组数据:离线 NDCG 指标提升 1.67%,在线 A/B 测试中未取消订单量增长约 0.33%。
这套方案架在 Airbnb 基于 JourneyFormer 的序列推荐器上。该推荐器用 Transformer 编码器来表示房客的预订、评论和浏览历史。以前编码器按日批处理任务跑,产出的嵌入向量存进低延迟存储。搜索时,排序系统取出最新的嵌入向量,再和实时查询拼在一起,Transformer 因此被挡在对延迟敏感的在线推理路径之外。问题在于,日批处理任务跑完之后发生的活动,要等下一次运行才可能反映进嵌入向量,再加上处理延迟,实际滞后接近两天。
数据新鲜度的问题,Airbnb 靠给 Chronon 加两项能力来解决。其一是推送模式:特征值提交后,流式处理会主动发出通知,下游可以据此响应房客的行为变更,不用轮询,也不用等定时任务。其二是近实时模型转换:已经上线的模型可以直接在流式处理流水线里跑。近实时路径用的是同一个 Transformer 序列编码器,流处理工作流不必再单独实现一份推理。
新流水线采集搜索、房源浏览等事件,把新事件与房客已有的短期、长期序列数据合到一起,特征状态更新完成后就触发模型推理。生成的嵌入向量写入低延迟存储,和批处理系统共用同一份存储。在线排序路径因此基本没动,只是检索到的表示变得更及时。
Airbnb 基础设施高级软件工程师 Pengyu Hou 把这次平台变更描述为弥合事件驱动数据与模型推理之间的差距:
近实时模型转换能力让 Chronon 可以直接在流式处理路径内部调用已经部署好的模型……
这种做法对应一种更广泛的特征服务模式:预测跟着底层特征的变化更新,而不是每个用户请求都算一遍。另一个开源特征平台 Feast 也有缓存预测架构,由特征更新触发推理,用更高的写入量和更复杂的流水线换更低的 serving 延迟。Chronon 的路子是把流计算和模型转换都集成进特征平台,重点落在离线计算和在线推理的一致性上。
推送模式和近实时模型转换这两项功能,Airbnb 已经贡献给公共 Chronon 代码库。Chronon 本身同时支持批处理和流式计算,还提供在线特征服务,目的是让训练与生产推理保持一致。