概述
异步算法
MapReduce是不能实现异步算法的。异步算法比同步算法需要更多的迭代次数,但异步算法避免了同步造成的时间浪费,所示实际上异步更快一些。
server可以是多个
异步算法可以收敛
异步不需要等待,计算完成后立刻和server通信,然后立刻开始下一轮计算。
绿色部分都是通信,每次通信server都会更新参数,到t1时刻server端参数都更新8次了,三号计算出的梯度基于t0时刻计算出的,已经过时了,没用了。若server用work3的梯度来更新参数,只会让参数变得更差,所以异步算法要求work比较稳定。联邦学习就存在这种问题,work都是手机之类的设备,不稳定,所以异步不适用联邦学习。
前两两种并行梯度下降实现,一种同步用MapReduce实现,一种异步用Parameter Server实现,这两者相同点都是client, server架构,他们都有一个server来协调work的计算。
这种网络是去中心化的网络,叫Peer to Peer,点对点,这种架构没有server,所有节点都是work.
每个节点的w_i不太一样,直到最后他们才能收敛到同一个地方去。每个节点重复这四个步骤,第三步的加权平均保证了所有节点可以收敛到同一个地方。
去中心化的梯度下降,随机梯度下降,都是可以收敛的,最近几年不少论文做这方面的证明。可以看看2017年这篇文章和它的引用,以及在谷歌学术上引用它的文章。
图的连接越紧密,算法收敛越快,比如完全图,算法收敛非常快,图不是强连接,即图可以拆成两部分,则算法不会收敛。
一台机器可以多插处理器,但无法插太多,所以要用多个节点。
通信是重中之重,研究并行计算的人最关心的就是怎样通信,通信代价由多大。两种通信:共享内存、信息传递。
MapReduce用来做数据处理很好,但用来做机器学习效率并不高。异步的效率更高,更适合机器学习,现在并行训练,神经网络都是在用Parameter Server。Decentralized可以同步也可以异步,但现在理论分析基本都是同步的。去中心化的还不是太流行(不受server限制),但受到关注越来越多。
并行计算和分布式计算界限比较模糊,机器学习的人比较喜欢分布式计算这个词,只要数据或模型被划分到多个节点上,这几个节点用message passing通信,机器学习的人就认为是分布式计算了。
------------------------------
最后
以上就是有魅力刺猬为你收集整理的分布式机器学习二异步算法的全部内容,希望文章能够帮你解决分布式机器学习二异步算法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复