Open gaocegege opened 6 years ago
https://www.zhihu.com/question/40683777
作者:张昊 链接:https://www.zhihu.com/question/40683777/answer/88171608 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
我是Hao Zhang, Poseidon的开发者之一。先回答题主的两个具体问题,再对Poseidon系统做一个简单介绍。(1)Petuum支持多种机器学习算法的数据并行(基于Bosen的data parallelism)和模型并行(基于Strads的model parallelism),Poseidon的分布式框架是基于Bosen parameter server搭建的,所以目前的版本仅支持数据并行;(2)SFB (Sufficient Factor Broadcasting)是我们组提出的基于P2P的大规模机器学习通信范式,相比较于中心化的parameter server通信,SFB有自己的优势也有自己的劣势。我们在搭建Poseidon的过程中,为了减少参数通信消耗,设计了SACP (Structura-aware communication protocol)算法。这个通信算法利用了神经网络的一些模型性质,从PS和SFB中选取最有利的通信方式,取两者之所长并避两者之所短。同时SFB本身是一个非常灵活的通信范式,支持BSP,ASP和SSP一致性模型。如果想对SFB有更多的了解,建议参考这篇论文:http://arxiv.org/pdf/1409.5705v2.pdf下面我给Poseidon深度学习系统做一个简单的介绍。相比较于Caffe,Torch, Theano, MxNet, 我们与其说Poseidon是一个深度学习框架,不如说它是一个系统架构。Poseidon的设计理念是从分布式系统出发,为所有的深度学习框架提供分布式支持,因此Poseidon可以为任何单机下的基于CPU或GPU的深度学习框架提供并行支持(比如Tensorflow),从而很好的保持了原有的用户群生态系统,从用户的角度来看,省时省力。Poseidon的分布式层来源于Petuum的通用分布式机器学习框架Bosen,然而为了能更加有效的利用显卡计算、神经网络特性来加速深度学习,并为commodity cluster(如配置中等的商用集群,无infiband以太网) 提供更好的支持,我们在Bosen的基础上更进一步的搭建了:(1)三层的分布式框架。这个三层式结构能够让Poseidon支持各种复杂的集群配置,比如单机多卡,多机单卡抑或是多机多卡。同时这个结构混合了基于client-server的中心化通信和基于P2P的去中心化通信,以便最大限度的减少通信消耗;(2)分布式环境下对后向传播算法的重调度。这一重调度利用了近期较为流行的神经网络结构的参数分布和计算分布(如VGGNet, AlexNet),能够极大限度的使计算时间和通信时间重叠, 从而增加GPU使用率;(3)如前所述,一个能够基于神经网络特性、集群结构自动调整通信方法的通信协议。这个通信协议利用了神经网络全连接层的梯度矩阵秩为1的特性,从PS和SFB中选择最优的通信方式以最大限度的减少通信消耗。总结,Poseidon于2015年6月发布,属于第一批支持GPU集群的分布式深度学习框架(发布时间早于MXNet, CNTK, TensorFlow, SparkNet, YahooCaffe等), 同时Poseidon在几个公共的benchmark上的取得了不错的效果,与类似的分布式框架相比,其Scalibility甚至超过晚半年发布的SparkNet和YahooCaffe。Poseidon最致力解决的问题是尽量减少通信消耗,从而能够在non-infiband的商用集群下为分布式GPU深度学习提供广泛支持。目前我们发布的Poseidon版本的单机深度学习框架基于Caffe,在设计时我们尽量保存了Caffe的所有接口,便于Caffe用户使用。Poseidon的系统灵活性也使它能够为任何其他深度学习框架提供分布式支持。最后抖个机灵,Poseidon的名字是邢老师想出来的,源于海神波塞冬:因为我们希望我们的系统能够让帮助深度学习研究者让其更深...更广..更大...
https://arxiv.org/pdf/1706.03292.pdf
ATC'17
label/gpu