跳转到主要内容
工程的博客

Apache 1.1:火花MLlib性能改进

通过Burak•

2014年9月22日 工程的博客

分享这篇文章

与日益增长的社会,Apache火花的1.1版本。MLlib都有其公平份额的贡献,现在支持许多新特性。我们兴奋地分享一些性能改进中观察到MLlib自1.0版本,并讨论两个关键因素:洪流广播和树聚合。

洪流广播

的美丽火花作为一个统一的框架,任何改进的核心引擎来免费的标准组件,如MLlib火花SQL,流媒体,GraphX。在Apache 1.1火花,我们改变了默认的播放的实现从传统的火花HttpBroadcastTorrentBroadcast,这样一个bt协议均匀负载在司机和执行者。播放一个对象时,司机将序列化对象划分为多个块,并广播块不同的执行人。随后,执行人可以卖到块分别从其他执行人把块之前。

广播

这种变化引发的核心是如何影响MLlib的表现吗?

机器学习算法中一个共同的沟通模式是中间模型的所有广播在每次迭代的开始的训练。在大规模机器学习模型通常是巨大和广播他们通过http可以让司机严重瓶颈,因为所有的执行人(工人)获取模型的驱动程序。用新的洪流广播,这个负载执行人之间共享。它会导致显著的加速,MLlib需要免费。

树聚合

类似于广播模型在每个迭代的开始,司机构建新模型在每个迭代结束时通过聚合部分更新收集的执行人。这是的基础MapReduce范例。一个性能的问题减少函数在火花(和原来的MapReduce)聚合时间尺度线性对数据的分区数量的CPU成本(由于合并部分结果和网络带宽限制)。

聚合

在MLlib 1.1中,我们引入了一个新的聚合通信模式基于多层次聚合树。在此设置中,模型更新结合部分少量的执行人之前发送到司机,从而大大减少加载驱动程序必须处理。测试表明,这些功能聚合时间减少一个数量级,特别是在与大量的分区数据集。

性能改进

改变模型的方式播放和聚合对性能有巨大影响。下面,我们就来展示实证结果比较性能在MLlib一些常见的机器学习算法。加速的轴可以被认为1.1版有超过1.0版。加速在1.5 - 5 x可以观察到所有算法。执行的测试是在一个EC2集群16奴隶,使用m3.2xlarge实例。脚本运行测试的一部分“spark-perf”测试套件可以找到https://github.com/databricks/spark-perf

mllib-perf-test

岭回归和逻辑回归,高大的标识符对应于一个高而瘦削的矩阵(1000000 x 10000)和脂肪对应一个又矮又肥的矩阵(10000 x 1000000)。

性能改进的分布式机器学习通常来自通信模式的改进和算法改进。前在这篇文章中,我们关注和算法的改进将在稍后讨论。所以下载火花1.1现在,享受性能改进,请继续关注未来的职位。

免费试着砖
看到所有工程的博客的帖子