【问题标题】:Parallel training for Apache MLlib Random ForestApache MLlib 随机森林的并行训练
【发布时间】:2017-03-19 07:34:57
【问题描述】:

我有一个 Java 应用程序,它在具有 200K 样本的训练集上训练 MLlib 随机森林 (org.apache.spark.mllib.tree.RandomForest)。我注意到在训练期间只使用了一个 CPU 内核。鉴于随机森林是 N 个决策树的集合,人们会认为这些树可以并行训练,从而利用所有可用的核心。是否有配置选项或 API 调用或其他任何可以启用决策树并行训练的方法?

【问题讨论】:

  • 如果您只看到一个活动线程,那是您的代码或配置,而不是org.apache.spark.mllib.tree.RandomForest
  • @LostInOverflow 维基答案?
  • @eliasah 让我们给 Morten Jorgensen 时间来更新这个问题。

标签: java apache-spark machine-learning random-forest apache-spark-mllib


【解决方案1】:

我找到了答案。问题在于我如何使用 SparkConf.setMaster("local") 设置 Spark 配置。根据 javadoc,我将其更改为 SparkConf.setMaster("local[16]") 以使用 16 个线程:

http://spark.apache.org/docs/latest/api/java/org/apache/spark/SparkConf.html#setMaster(java.lang.String)

现在我训练我们的速度要快得多,弗吉尼亚州的亚马逊数据中心稍微热一点 :)

RTFM 的典型案例,但在我的辩护中,setMaster() 的这种使用对我来说似乎有点 hacky。更好的设计是添加一个单独的方法来设置要使用的本地线程/内核的数量。

【讨论】:

    猜你喜欢
    • 2017-01-22
    • 2018-06-13
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    • 2020-11-30
    • 2013-08-30
    相关资源
    最近更新 更多