1. Paracel的是什么?
Paracel是豆瓣开发的一个分布式计算框架,它基于参数服务器范式,最初是为机器学习算法设计的。Paracel支持数据和模型的并行,为用户提供简单易用的通信接口,比mapreduce式的系统要更加灵活。Paracel同时支持异步的训练模式,使迭代问题收敛地更快。此外,Paracel程序的结构与串行程序十分相似,用户可以更加专注于算法本身,不需将精力过多放在分布式逻辑上。经典分布式计算模型
2. 参数服务器是什么?
参数服务器是一个全局分布式的key-value存储,用来存储算法的模型或者说参数。当计算节点需要某个参数的时候,可以从参数服务器上读取。用户还可以定义不同的函数在参数服务器端对参数进行更新、过滤等操作。在大部分情况下,计算节点之间的通信都是通过参数服务器进行的。
3. 什么是模型并行?数据并行和模型并行如何同时满足?
模型并行指的是将算法的模型参数分布式存储。随着算法数据量的增加和算法模型的越来越复杂,许多模型已经不能装入单机的内存中了,因此需要将模型并行,从而满足可扩展性的要求。数据和模型的同时并行是一个很大的挑战,数据的并行往往意味着计算性能的可扩展,而模型的并行往往意味着内存使用的可扩展,一个好的分布式算法需要满足这两方面的扩展性要求。在一般情况下,模型和数据是对应的,因此如何切分输入数据的结构决定了模型的切分方式。经典分布式计算模型Paracel定义了一套输入数据格式,提供了将数据切分成有向图、二分图、无向图、稀疏矩阵和绸密矩阵的接口,用户可以按照算法需要,直接将输入数据并行读取成这些数据结构,做到模型的并行。
4. 做Paracel项目的初衷是什么?
豆瓣有Dpark工具来处理海量数据,然而对于性能要求较高和较复杂的问题,Dpark无法很好地满足需求。为了提高分布式算法的开发效率,增强代码的复用能力,我们在2013年底开始做Paracel项目,意为提供一个较通用易用的算法平台。
5. Paracel和Spark/GraphLab的主要区别是什么?
Spark和GraphLab都是非常成功的分布式计算框架,它们各自有着很多吸引用户的优点,但也存在一些局限性。Spark提出了RDD的概念并赋予其一系列的transformation和action接口,若把这些接口想成是一组基,那么用户就可以用这组基组合成不同的算法或应用。值得注意的是,这组基虽然通用,但往往不够灵活,特别是对特定领域的问题。例如图算法,Spark基于Google的Pregel模型实现了Bagel模块供用户使用,而非基本的RDD操作可以满足。另外,Spark的RDD操作更适合窄依赖的场景,数据的局部性考虑不够,多少会影响性能。
GraphLab论证了机器学习问题都可以转化成图计算的方式,相比Spark更侧重于计算性能。不过用户需要首先将问题转化成GraphLab的模型,这会影响开发效率。同时对于一般的算法工程师,GraphLab门槛有点过高,用户必须先理解其原理和分布式逻辑才能进行开发。
相比之下,Paracel较GraphLab更上层,强调简单易用性,而较Spark更底层,提供了灵活通用的通信接口。算法开发者可以更加专注于问题本身而不必过于关注分布式逻辑。
当然,Paracel还很不成熟,功能和社区都不完善,还有许多要向Spark和GraphLab学习的地方。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-33204-1.html
仅说数量了