真实生产级别的推荐系统 - Nikhil


大规模构建在生产中部署的推荐系统 ,并在用户等待页面加载时在几百毫秒内提供实时请求。要构建这样的系统,工程师必须做出跨越多个移动层的决策,例如:

  • 高级范式(如协同过滤、基于内容的推荐、向量搜索、基于模型的推荐)
  • ML 算法(例如 GBDT、SVD、多塔神经网络等)
  • 建模库(例如 PyTorch、Tensorflow、XGBoost)
  • 数据管理(例如数据库的选择、缓存策略、重用主数据库或将所有数据复制到另一个针对推荐工作负载优化的系统中等1。
  • 功能管理(例如离线与在线、预计算与实时服务)
  • 服务系统(性能、查询延迟、分布模型、容错等)
  • 部署系统(例如,新代码如何更新、构建步骤、进程重启时保持缓存工作等)
  • 硬件(例如 GPU、SSD)

难怪构建这样的系统是一项艰巨的任务。不过值得庆幸的是,经过多年的反复试验,FAANG 和其他顶级科技公司已经独立地融合在一个通用架构上,用于构建/部署生产级推荐系统。此外,这种架构与领域/垂直无关,可以为各种应用程序提供支持——从电子商务和提要到搜索、通知、电子邮件营销等。

我们将从一篇文章开始,从高层次上解释该架构的服务端,然后是一篇关于训练端的文章——这两篇文章将主要概述结构并分别确定服务和训练中的关键扩展问题。未来的帖子将一一讨论这些扩展问题,并描述它们通常是如何解决的,以及多年来学习开发的最佳实践。那么让我们开始吧:
现代推荐系统由八个(有些重叠)逻辑阶段组成:

  1. 恢复
  2. 过滤
  3. 特征提取
  4. 计分
  5. 排行
  6. 功能记录
  7. 训练数据生成
  8. 模型训练

点击标题