parameter server | Learn for Master
  • Parameter Server 资料汇总

    此处输入图片的描述

    parameter server 介绍
    作者:Superjom
    链接:https://www.zhihu.com/question/26998075/answer/40577680
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    看看李沐的文章 《Parameter Server for Distributed Machine Learning》里面有包含他的框架的一些介绍。
    后面有看到微软研究院 project Adam的论文,大体思路比较相似,但论文中细节比较丰富,也会互补的一些信息描述下。

    概念:
    参数服务器是个编程框架,用于方便分布式并行程序的编写,其中重点是对大规模参数的分布式存储和协同的支持。

    工业界需要训练大型的机器学习模型,一些广泛使用的特定的模型在规模上的两个特点:
    1. 参数很大,超过单个机器的容纳能力(比如大型Logistic Regression和神经网络)
    2. 训练数据巨大,需要分布式并行提速(大数据)

    这种需求下,当前类似MapReduce的框架并不能很好适合。
    因此需要自己实现分布式并行程序,其实在Hadoop出来之前,对于大规模数据的处理,都需要自己写分布式的程序(MPI)。 之后这方面的工作流程被Google的工程师总结和抽象成MapReduce框架,大一统了。

    参数服务器就类似于MapReduce,是大规模机器学习在不断使用过程中,抽象出来的框架之一。重点支持的就是参数的分布式,毕竟巨大的模型其实就是巨大的参数。

    Parameter Server(Mli)
    —————————-
    架构:
    集群中的节点可以分为计算节点和参数服务节点两种。其中,计算节点负责对分配到自己本地的训练数据(块)计算学习,并更新对应的参数;参数服务节点采用分布式存储的方式,各自存储全局参数的一部分,并作为服务方接受计算节点的参数查询和更新请求。

    简而言之吧,计算节点负责干活和更新参数,参数服务节点则负责存储参数。

    冗余和恢复:
    类似MapReduce,每个参数在参数服务器的集群中都在多个不同节点上备份(3个也是极好的),这样当出现节点失效时,冗余的参数依旧能够保证服务的有效性。当有新的节点插入时,把原先失效节点的参数从冗余参数那边复制过来,失效节点的接班人就加入队伍了。

    并行计算:
    并行计算这部分主要在计算节点上进行。 类似于MapReduce,分配任务时,会将数据拆分给每个worker节点。
    参数服务器在开始学习前,也会把大规模的训练数据拆分到每个计算节点上。单个计算节点就对本地数据进行学习就可以了。学习完毕再把参数的更新梯度上传给对应的参数服务节点进行更新。

    详细的流程:

    1.
    分发训练数据 -> 节点1
    节点2
    节点3

    节点i

    节点N

    2.

    [Read More...]