Comparthing Logo
推荐系统机器学习基础设施分布式系统云架构莫普斯可扩展性

分布式推荐流程与集中式推荐流程

分布式推荐管道将计算分散到多个节点上以实现大规模可扩展性,而集中式管道将处理集中在一个位置,以便在较小的部署中简化管理并降低延迟。

亮点

  • 分布式管道能够横向扩展到数十亿用户,但会在编排和一致性管理方面引入显著的操作复杂性。
  • 集中式系统在本地查询方面延迟更低,调试也更简单,但随着数据量的增长,会面临严重的垂直扩展限制。
  • 分布式环境下的模型训练需要像 all-reduce 或参数服务器这样的专门算法,而集中式训练则使用标准优化方法。
  • 基础设施成本权衡发生了巨大变化——集中式在小规模下更便宜,分布式在大规模下可实现规模经济。

分布式推荐管道是什么?

将数据处理、模型训练和推理分布到多台机器或集群上的推荐系统。

  • Netflix率先采用分布式推荐架构,以处理遍布全球数据中心的数十亿条评分数据。
  • Apache Spark 和 Ray 是构建分布式推荐管道常用的框架。
  • 分布式管道通常使用数据分区策略,例如基于用户的分片或基于项目的分片。
  • 分布式架构中的模型同步通常采用参数服务器或全归约算法。
  • 分布式系统中的延迟挑战可以通过边缘缓存和区域模型副本来解决。

集中式推荐流程是什么?

推荐系统通过单一集中式基础设施处理数据、训练模型并提供预测结果。

  • 亚马逊等公司早期的推荐系统最初采用集中式架构,之后才扩展到横向扩展。
  • 集中式管道简化了调试过程,因为所有日志和指标都集中在一个位置。
  • 单节点训练消除了分布式梯度下降过程中因通信开销而导致的速度减慢。
  • 随着用户群和目录规模呈指数级增长,集中式系统面临垂直扩展的极限。
  • 现代集中式方法通常利用单台高性能机器上的 GPU 加速来进行中等规模的部署。

比较表

功能 分布式推荐管道 集中式推荐流程
可扩展性方法 跨节点的水平扩展 单机垂直扩展
潜伏期特征 基础延迟较高,但可通过区域副本缓解。 降低本地查询的基本延迟
容错性 内置冗余机制,单节点故障不会导致系统停止运行 单点故障需要备份系统
运营复杂性 编排和一致性方面的高复杂性 更易于监控和故障排除
训练速度 通过并行处理加快处理大型数据集的速度 处理中小数据集速度更快,且无通信开销
基础设施成本 前期投入较高,但大规模生产可实现规模经济 小规模部署时收益较低,随着规模扩大收益递减。
数据一致性 节点间的最终一致性 高度一致性,单一数据源
典型用例 数十亿用户,全球平台 数百万用户,区域服务

详细对比

架构和数据流

分布式推荐流水线将工作负载分配到多个服务器或集群上,这些服务器或集群通常地理位置分散,以便服务全球用户。数据在工作节点上并行处理之前,会先流经 Kafka 等消息队列。集中式流水线则将所有数据保留在单个数据中心或云区域内,数据在专用硬件上通过线性或轻度并行化的流水线传输。

模型训练动态服务器

分布式环境下的训练需要复杂的协调——当数据分布在多个节点上时,联邦学习或使用LARS的大批量优化等技术就显得必不可少。集中式训练可以使用标准的随机梯度下降法,而无需担心梯度同步延迟,这使得没有专门机器学习基础设施工程师的团队能够更快地进行实验。

推理和服务模式

分布式系统通常通过边缘节点或区域集群将模型副本推送到更靠近用户的位置,以牺牲一致性为代价来换取响应速度。集中式服务受益于热缓存和可预测的性能,但当用户群分布在各大洲时,其服务便会面临挑战,通常需要类似 CDN 的变通方案来实现静态推荐。

运营成本和团队结构

运行分布式流水线通常需要熟悉 Kubernetes、服务网格和分布式追踪的平台工程师。管理集中式系统的团队通常可以使用通用型后端工程师,但当业务增长需要架构变更时,他们可能会面临人才短缺的问题。

规模化成本动态

分布式架构会产生网络成本和重复存储,乍看之下似乎很浪费,但规模一旦扩大,就会造成浪费——为数亿用户运行一台大型服务器的成本将高得令人难以承受。集中式系统在硬件利用率方面表现出色,但一旦超过其极限,迁移的痛苦就会变得非常显著。

优点与缺点

分布式推荐管道

优点

  • + 大规模水平扩展能力
  • + 内置容错能力
  • + 与用户的地理位置接近程度
  • + 并行训练加速
  • + 没有单一的硬件瓶颈

继续

  • 高度复杂的运营
  • 节点间的一致性挑战
  • 显著的网络开销
  • 需要专业知识
  • 跨系统调试困难

集中式推荐流程

优点

  • + 更易于开发和调试
  • + 降低本地用户的延迟
  • + 强大的数据一致性
  • + 更便捷的安全合规
  • + 更快的迭代周期

继续

  • 硬性垂直缩放天花板
  • 单点故障风险
  • 远距离用户的地理延迟
  • 硬件成本变得极其高昂。
  • 有限的并行处理能力

常见误解

神话

分布式推荐流程总是比集中式流程更快。

现实

对于中小型数据集,分布式系统由于通信和协调方面的开销通常比集中式系统更快。分布式系统的速度优势只有在数据量庞大到单台机器无法容纳时才会显现出来。

神话

集中式系统无法处理现代推荐工作负载。

现实

许多成功的公司都运营着服务数千万用户的集中式推荐系统。现代配备GPU的单节点可以训练规模惊人的模型,而且架构的简洁性往往弥补了理论上的可扩展性限制。

神话

从集中式架构迁移到分布式架构是一个简单的升级过程。

现实

迁移需要对数据管道、模型训练流程和服务基础设施进行根本性的重新设计。团队常常低估所需的工程投入和运维专业知识。

神话

分布式系统自然而然地提供了更好的容错能力。

现实

虽然分布式架构能够承受单个节点的故障,但它们也引入了新的故障模式——网络分区、共识问题和级联依赖关系——而集中式系统则完全避免了这些问题。真正的弹性需要精心设计,而不仅仅是分布式架构。

神话

分布式和集中式方法的推荐质量有所不同。

现实

底层算法保持不变;架构选择影响的是延迟、吞吐量和可维护性,而非推荐本身的准确性。模型质量取决于数据和算法的选择,而非部署模式。

神话

在分布式系统中进行边缘部署可以消除所有延迟问题。

现实

边缘副本虽然缩短了网络距离,但也带来了模型过时和一致性方面的挑战。靠近边缘的用户可能获得更快的响应速度,但推荐内容也可能过时,这并非纯粹的改进,而是一种权衡。

常见问题解答

哪些公司使用分布式推荐管道?
Netflix 运营着业内资料最详尽的分布式推荐系统之一,该系统跨多个 AWS 区域处理数十亿条评分。Spotify 使用分布式管道为数亿用户提供音乐推荐。LinkedIn 的推荐基础设施分布在其自身的数据中心,用于提供专业内容建议。
初创公司何时应该选择集中式而非分布式系统?
用户数量不足 1000 万且机器学习基础设施经验有限的初创公司几乎都应该从集中式架构开始。运维的简便性使得小型团队能够专注于模型迭代,而不是调试分布式系统。虽然在业务增长需要时可以随时迁移,但尽早规划数据管道抽象层能够简化迁移过程。
分布式系统如何处理实时推荐更新?
它们通常采用最终一致性模型,其中模型更新通过消息代理异步传播。一些系统使用 Flink 或 Spark Streaming 等流式架构来实现近乎实时的更新,而另一些系统则为了简化部署而接受几分钟的延迟。关键挑战在于如何在保证数据新鲜度的同时,兼顾频繁跨节点同步带来的开销。
构建分布式推荐管道的主要框架有哪些?
Apache Spark 及其 MLlib 库仍然是面向批处理的分布式训练的热门选择。Ray 及其 Ray Serve 库支持更灵活的分布式训练和服务模式。TensorFlow Extended 和 PyTorch Distributed 提供更底层的控制。具体到推理方面,Triton Inference Server 和 TorchServe 有助于将模型服务分布到各个 GPU 集群。
集中式管道能否有效利用云服务?
没错——很多团队都在单个大型云实例或托管服务(例如 AWS SageMaker 和 Google Vertex AI)上运行集中式流水线。这些平台抽象化了硬件管理,同时保持了架构概念上的集中式。云提供商负责底层分布式部署,但你仍然会受到单机限制。
数据隐私法规如何影响架构选择?
GDPR 和类似法规有时会推动采用分布式架构,使用户数据保留在特定地理区域内。对于全球性公司而言,单一区域的集中式系统可能违反数据驻留要求。分布式架构中的联邦学习可以进一步减少集中式数据收集,但同时也显著增加了复杂性。
这两种方法在监测方面存在哪些差异?
集中式系统能够将日志和指标直接收集到单一目标位置。分布式管道则需要像 Jaeger 或 Zipkin 这样的分布式追踪工具、通过 ELK 技术栈进行集中式日志记录,以及精心设计的健康检查端点。调试体验也截然不同——集中式故障只有单一的时间线,而分布式故障则需要跨服务进行关联分析。
分布式架构和集中式架构之间是否可以实现混合架构?
许多生产系统采用混合方法:集中式训练用于全局模型,并采用分布式服务;或者采用分布式预处理,并采用集中式模型训练。一些团队会在将训练好的模型部署到分布式服务基础设施之前,先进行集中式实验以开发模型。在实践中,这些界限变得模糊,务实的工程设计往往会混合使用不同的模式。
不同规模下的成本有何差异?
日活跃用户低于约 100 万时,集中式系统通常成本更低,因为避免了网络和协调方面的开销。日活跃用户在 100 万到 5000 万之间时,成本很大程度上取决于数据量和查询模式。日活跃用户超过 1 亿时,分布式系统通常可以通过通用硬件实现更高的成本效益,但这需要成熟的运维实践才能实现。
分布式推荐系统需要团队具备哪些技能?
除了标准的机器学习工程之外,团队还需要分布式系统知识——理解共识协议、网络分区和最终一致性。围绕 Kubernetes、服务网格和云网络的架构技能也变得至关重要。许多组织专门组建平台团队,旨在将这些复杂性从机器学习从业人员的日常工作中剥离出来。
模型尺寸如何影响架构选择?
拥有数十亿参数的大型语言模型推荐系统实际上需要跨多个GPU或TPU进行分布式计算。而较小的矩阵分解模型或双塔模型则可以在单台机器上轻松完成训练和服务。近年来,推荐系统模型规模的不断扩大,迫使原本集中式的系统转向分布式训练,有时甚至在服务需求尚未真正需要之前就已开始分布式训练。
从集中式迁移到分布式迁移有哪些常见的模式?
大多数迁移方案都从分布式服务开始,同时保持训练的集中式运行,先分离读取路径,再分离写入路径。接下来,团队通常会将数据预处理分布式化,同时保持单节点训练。全面迁移到分布式训练通常是最后一步,因为它需要进行最多的算法更改。每个阶段都能在一定程度上缓解可扩展性问题,同时将工程投入分散到更长的时间里。

裁决

当需要服务于拥有数十亿次交互且对最终一致性有一定容忍度的全球用户群体时,应选择分布式推荐管道。而对于需要快速迭代、用户数量达数百万或团队在分布式系统方面的专业知识有限的情况,则应坚持使用集中式架构。

相关比较