《分布式机器学习平台与算法综述》学习笔记
2019年3月发表于计算机科学。可在知网下载。
本文内容
摘要
分布式机器学习的核心思想“分而治之”。分布式机器学习是机器学习的研究领域之一。分布式机器学习的主流平台有Spark、MXNet、Petuum、TensorFlow及PyTorch。本文对这些平台深入总结,分析对比其特性。其次,从数据并行和模型并行两方面深入阐述了机器学习算法的分布式实现方式,而后依照整体同步并行模型、异步并行模型和延迟异步并行模型3种方法对机器学习算法的分布式计算模型进行概述;最后从平台性能改进研究、算法优化、模型通信方式、大规模计算下算法的可扩展性和分布式环境下模型的容错性5个方面探讨了分布式机器学习在未来的研究方向。
引言
分布式机器学习的目标是将具有庞大数据和计算量的任务分布式地部署到多台机器上,以提高数据计算地速度和可扩展性,减少任务耗时。
有文献分析总结了基于大数据地机器学习算法与并行算法地研究现状,有文献比较了当下主流分布式机器学习平台地规模和可用性,有文献回顾了并行机器学习算法地研究现状与应用情况,有文献回顾了机器学习领域中一些流行地算法和优化技术,重点阐述了分布式机器学习的相关平台与算法的现状、应用及未来的发展趋势。
各分布式平台比较
有Spark、MXNet、Petuum、TensorFlow及PyTorch各个平台的介绍和比较。这里就不做记录。笔者想了解并行机器学习算法方面的内容,然后改进结合Spark分布式平台。
机器学习算法
有文献介绍了大数据下的机器学习算法,从大数据特征选择、分类、聚类及关联分析等方面阐述了传统算法的弊端及机器学习算法在各适用领域的发展情况。
机器学习算法的分布式实现方式
实现思想是划分大规模网络模型并将其分配给不同的机器进行分布式计算,在每次迭代后对各机器的计算结果进行融合,直至算法收敛。
分布式实现的障碍:
- 机器之间的通信延迟较大
- 各机器计算结果的差异影响模型收敛
数据并行
将数据划分为P部分,分配给工作节点,每个工作节点独立计算更新函数,最后将结果累加,然后更新参数值。有一个拥有全部参数的机器节点与各个机器交互。
模型并行
对模型进行划分,然后各个工作节点负责本地局部模型的参数更新。个人理解为每个工作节点负责更新部分参数,这样的话,数据就需要每个节点都跑一遍?
计算模型
常见的并行计算模型有整体同步并行模型、异步并行模型、延迟异步并行模型。
整体同步并行模型
各工作节点下的机器负责一部分数据计算并将参数传到对应的参数管理节点,参数管理节点接收后对所有参数进行整合,统一同步更新各工作节点参数,然后再进行一轮新的迭代计算。这样的坏处是,较快执行完的Worker节点执行完要等待最慢的。准确率高,但是浪费计算资源,效率低。
异步并行模型
以互相不干扰、互相不等待为执行原则,各工作节点负责一部分计算,将部分参数传到相应的参数管理节点进行参数同步更新,执行下一次迭代计算。会导致每次迭代计算中每个工作节点获取到不同的参数,造成模型计算结果不一致,从而导致模型的准确率降低。
延迟异步并行模型
结合了BSP和ASP两者的优点。各工作节点以不同的迭代轮数计算并更新参数,同时设置了阈值s,当最快节点和最慢节点迭代次数差值到达s时,阻塞该节点,等待最慢的节点执行。时最终欢迎的分布式算法计算模型。