姓名:姬文浩 学号:22011210610 学院:通信工程学院
一、概述
分布式机器学习不仅关乎算法和理论,更重要的是应用与实践。为了最终利用分布式集群解决大规模机器学习的问题,我们需要将分布式机器学习算法实现为分布式机器学习系统。面对一个实际问题,我们可以为其选择一个合适的算法,并针对其特点设计开发一套系统加以实现。这种直接实现可以针对算法特性做直接优化,从而最大限度地利用硬件资源以达到最优的效率。然而,即便只针对一个特定算法,设计和开发相应的分布式机器学习系统也并非易事。如前面章节所述,分布式机器学习融合了机器学习和系统两方面的知识,这两方面考虑的问题截然不同但又相互交织。更重要的是,如果我们需要针对每个特定算法设计系统,那么许多充满挑战的设计问题将被一次次重复解决。
在多年的实践中,研究人员和开发者在解决分布式机器学习问题时抽象出了一些通用的分布式机器学习架构。这些架构将系统和学习隔离开来。一方面,这些架构实现并优化了通用且极具挑战的系统问题,如调度、局部性、容灾、网络传输等。另一方面,这些架构也抽象出分布式机器学习的核心算法逻辑,并提供了高层次的应用程序编程接口(API)。近些年来,使用这些成熟架构成了实现分布式机器学习系统的典范做法。在前面章节中,我们曾经提及迭代式MapReduce(IMR)、参数服务器(ParameterServer)和数据流(Data Flow)三种主流的分布式机器学习架构。目前,业界使用的分布式机器学习系统大多可以被这三种架构所覆盖。它们对数据并行、模型并行以及同步和异步通信有着不同程度的支持。基于这三种架构的实际分布式机器学习系统的设计原理和使用方法,并通过典型案例来对比各种分布式机器学习系统之间的差异。
基于IMR的系统主要的适用场景是“同步+数据并行”。它从大数据处理平台演化而来,运行逻辑比较简单。IMR 有很多成熟的实际系统可以使用,比如Hadoop H20、Spark MLIib等。
基于参数服务器的系统可以同时支持同步和异步的并行算法。它的接口简单明了、逻辑清晰,可以很方便、灵活地与单机算法相结合。最近有很多不错的开源项目,比如Multiverso、PS Lite 、KunPeng等。
基于数据流的系统由一个有向无环图所定义,可以灵活地描述复杂的并行模型,比如数据并行、模型并行、混合并行等。Tensorflow是其中的典型代表。
二、IMR和Spark
IMR是对传统MpRedure系统的一种改进。MapReduce的模式过于简单,针对机器学习任务,其弱点主要体现在以下两点:
1)Map + Redue 的抽象过于简单。复杂的计算逻辑常需要用很长的pRede手列来描述。而机器学习过程通常都需要对训练数据进行多轮选代处理,用Mpedtre序列来完成效率愈发低下。
2) MapReduce 对于中间数据处理的灵活性和效率比较低。由于MapReduce通常使用HDFS这类硬盘存储作为所有数据( 包括中间数据)的存储媒介,因此对于有大量中间数据生成的迭代式机器学习任务而言效率低下。
IMR系统相比于传统MapReduce系统增加了对迭代操作和内存管理的支持。