为了更好的了解分布式机器学习,深入理解参数服务器的理念及设计是必要的。结合最近看的李沐大神参数服务器的论文,加深对PS的理解,故整理此文。
Parameter server 使用缩写PS
提出参数服务器框架来解决分布式机器学习问题,数据和计算工作量都分布到Client节点,而服务器节点维护全局共享的参数,这些参数为稀疏向量和矩阵。PS 维护 Client和Server 之间的异步数据通信。支持灵活的一致性模型、弹性可扩展性和容错性。我们提出了挑战非凸和非光滑问题的算法和理论分析。为了验证该框架的可扩展性,我们给出了数十亿参数的真实数据的实验结果。1. 概述
分布式优化和推理在解决大规模机器学习问题中正变得越来越流行。使用机器集群可以解决以下问题:由于观测数据和参数数量的增长,没有任何一台机器可以足够快地解决这些问题。但是,实现高效的分布式算法并不容易。大量的计算工作量和数据通信量都需要仔细的系统设计。 目前大家比较熟知的通用机器学习系统有Spark MLI、Mahout等,基于Spark的MLI采用迭代MapReduce框架,虽然Spark由于保留了状态并执行了优化策略,因此在很大程度优于Hadoop MapReduce,这种方式使用的是同步迭代通信模型,这使得它们容易受到迭代机器学习算法(即在任何给定时间可能恰好变慢的机器)的非均匀性能分布的影响。基于个人的了解,现有的Angel系统应该也是在paper上实现的,并克服了这些问题。Parameter Server不仅被直接应用在各大公司的机器学习平台上,而且也被集成在TensorFlow,MXNet等主流的深度框架中,作为机器学习分布式训练最重要的解决方案。 许多推理问题在参数化方面有一个有限的结构,比如广义线性模型通常使用单个大参数向量,或者主题模型使用稀疏向量数组 在本文中,我们主要介绍基于参数服务器的分布式优化方法,在此模型中,机器节点分为client和server,每个client拥有一部分数据和计算任务,server端维护全局的共享参数,这种架构思想并不新鲜,它已经被应用于很多的机器学习应用中,包括潜变量模型、分布式图推理和深度学习。但是在这里所阐述的是做一个通用的参数服务器系统,它可以作为分布式机器学习的一个组件。鉴于这样的目标,它应该具备哪些功能特征如下:- 易于使用:全局共享参数可表示为(可能是稀疏的)向量和矩阵,与广泛使用的(键、值)存储或表相比,它们是机器学习应用程