【问题标题】:Can I measure the paralleliation performance of ML.api in Spark我可以在 Spark 中测量 ML.api 的并行性能吗
【发布时间】:2017-01-01 18:05:53
【问题描述】:

一般来说,我想比较在 Spark 中使用相同学习算法的大型数据集和拆分数据集之间的计算时间。另一个原因是我想得到分区模型的结果。

但是,结果显示原始方式比并行方式更快。一般来说,我预测使用拆分数据集的并行运行速度更快。但是,我不知道如何设置它。

如何调整参数以获得我想要的?

或者我可以停止使用 Spark 中的原始方法使用分区吗?

原文:

val lr = new LogisticRegression()
val lrModel = lr.fit(training)

平行:

val lr = new LogisticRegression()
val split = training.randomSplit(Array(1,1,.....,1), 11L)
for (tran<-split)
  lrModels=lr.fit(train)

【问题讨论】:

  • 你没有调用并行化第二个?
  • @JamesTobin 我想获得拆分模型的权重。我可以这样做吗?或者我可以停止以原始方式使用分区吗?

标签: scala apache-spark machine-learning apache-spark-ml


【解决方案1】:

首先sn-p,“原始”也是并行化的。要理解它,请查看 Spark 执行模型。

在第一个示例中,Spark 有一个大型数据集。 Spark 将其拆分为分区并在其他线程中计算每个分区。在第二个示例中,您手动拆分数据(当然内部数据也拆分为分区)。然后你调用 fit - 然而,在一个循环中,所以这个模型将被计算,然后是另一个,等等。所以“并行”示例并不比第一个更并行,我并不惊讶第一个代码运行得更快。

在第一个示例中,您正在制作一个模型,在其他示例中,您正在制作几个模型。每个模型构建都在少数线程上调用,但是第二个示例中的每个 fit() 都是在之前的计算完成后调用的。

您可以通过参数值 = 1 的重新分区方法停止并行性,但这不是在第一个示例中停止并行性的解决方案。您刚刚表明,迭代方法比并行方法慢 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    相关资源
    最近更新 更多