【论文翻译】【李沐老师】Scaling Distributed Machine Learning with the Parameter Server

在这里插入图片描述

Abstract

我们提出了一个分布式机器学习问题的参数服务器框架。数据和工作负载都分布在工作节点上,而服务器节点维护全局共享的参数,以密集或稀疏的向量和矩阵表示。该框架管理节点之间的异步数据通信,并支持灵活的一致性模型、弹性可伸缩性和连续容错(flexible consistency models, elastic scalability, and continuous fault tolerance)
为了证明该框架的可扩展性,我们在数PB的真实数据上展示了实验结果,包括从稀疏逻辑回归到潜在Dirichlet分配和分布式绘制等问题的数十亿个示例和参数(ranging from Sparse Logistic Regression to Latent Dirichlet Allocation and Distributed Sketching)

1 Introduction

分布式优化和推理正成为解决大规模机器学习问题的先决条件。在规模上,由于数据的增长和由此产生的模型复杂性,没有一台机器能够足够快地解决这些问题,这往往表现为参数数量的增加。然而,实现一个高效的分布式算法并不容易。密集的计算工作量和数据通信量都需要仔细的系统设计。
训练数据的实际数量可以在1TB到1PB之间。这使得我们能够创建具有 1 0 9 10^9 109 1 0 12 10^{12} 1012个参数的强大而复杂的模型[9]。这些模型通常由所有工作节点(worker nodes)全局共享,它们必须在执行计算时频繁访问共享参数,以对其进行优化。共享(Sharing)带来了三个挑战:

  • 访问这些参数需要大量的网络带宽
  • 许多机器学习算法都是顺序的。当同步成本和机器延迟较高时,由此产生的障碍会影响性能。
  • 在规模上,容错至关重要。学习任务通常在云环境中执行,在云环境中,机器可能不可靠,作业可能被抢占。

为了说明最后一点,我们从一家大型互联网公司的一个集群收集了三个月的所有工作日志。我们在表1中显示了为生产环境服务的批量机器学习任务的统计信息。在这里,任务失败主要是被抢占或丢失机器而没有必要的容错机制。

在许多研究环境中,作业只在集群上运行,没有竞争,与此不同,容错在实际部署中是必要的

1.1 Contributions

自推出以来,参数服务器框架 [43] 在学术界和工业界激增。本文描述了参数服务器的第三代开源实现,重点关注分布式推理的系统方面。它给开发者带来了两个好处。首先,通过对机器学习系统的常用组件进行分解,它使特定应用的代码保持简洁。同时,作为一个针对系统级优化的共享平台,它提供了一个强大的、通用的和高性能的实现,能够处理从稀疏逻辑回归到主题模型和分布式草图的各种算法。我们的设计决策以实际系统中的工作负载为指导。我们的参数服务器提供五个关键功能:

  • Efficient communication:异步通信模型不会阻塞计算(除非请求)。它针对机器学习任务进行了优化,以减少网络流量和开销。
  • Flexible consistency models:宽松的一致性进一步隐藏了同步成本和延迟。我们允许算法设计者平衡算法收敛速度和系统效率。最佳权衡取决于数据、算法和硬件。
  • Elastic Scalability:弹性可扩展性:无需重新启动正在运行的框架即可添加新节点。
  • Fault Tolerance and Durability:容错性和持久性:在 1 秒内从非灾难性机器故障中恢复和修复,而不会中断计算。矢量时钟可确保在网络分区和故障后明确定义的行为。
  • Ease of Use: 易于使用:全局共享参数表示为(可能是稀疏的)向量和矩阵,以促进机器学习应用程序的开发。线性代数数据类型带有高性能多线程库。

所提出系统的新颖性在于通过选择正确的系统技术、使它们适应机器学习算法以及修改机器学习算法以使其更加系统友好而实现的协同作用。特别是,我们可以放宽一些原本很难的系统约束,因为相关的机器学习算法对扰动非常宽容。结果是第一个能够扩展到工业规模大小的通用 ML 系统。

1.2 Engineering Challenges

在解决分布式数据分析问题时,不同工作节点之间共享参数的读取和更新问题无处不在。参数服务器框架提供了一种有效的机制,用于在工作节点之间聚合和同步模型参数和统计信息。每个参数服务器节点仅维护部分参数,每个工作节点在运行时通常只需要这些参数的一个子集。构建高性能参数服务器系统时会遇到两个关键挑战:
Communication. 虽然可以在传统数据存储中将参数更新为键值对,但天真地使用这种抽象是低效的:值通常很小(浮点数或整数),并且将每个更新作为键值操作发送的开销很高。

我们改善这种情况的见解来自观察到许多学习算法将参数表示为结构化的数学对象,例如向量、矩阵或张量。在每个逻辑时间(或迭代),通常会更新对象的一部分。也就是说,工作节点通常发送向量的一部分,或矩阵的整行。这提供了在参数服务器上自动批处理更新通信及其处理的机会,并允许有效地实现一致性跟踪。

Fault tolerance. 如前所述,它在规模上至关重要,并且为了高效运行,它必须不需要完全重新启动长时间运行的计算。服务器之间的参数实时复制支持热故障转移。故障转移和自我修复反过来通过将机器移除或添加分别视为故障或修复来支持动态扩展。

图 1 概述了在多个系统上进行的最大监督和无监督机器学习实验的规模。在可能的情况下,我们与每个系统的作者确认了扩展限制(截至 2014 年 4 月的数据)。显而易见,我们能够在更多数量级的处理器上覆盖更多的数据,比任何其他已公布的系统都要多。此外,表2提供了几个机器学习系统的主要特征概览。我们的参数服务器在一致性方面提供了最大程度的灵活性。它是唯一提供连续容错的系统。它的本地数据类型使它对数据分析特别友好
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43154149/article/details/124089333