Параллельное обучение для случайного леса Apache MLlib

У меня есть Java-приложение, которое обучает случайный лес MLlib (org.апаш.искра.mllib.дерево.RandomForest) на тренажере с 200k образцами. Я заметил, что во время обучения используется только одно ядро процессора. Учитывая, что случайный лес представляет собой ансамбль из N деревьев решений, можно было бы подумать, что деревья могут обучаться параллельно и, таким образом, использовать все доступные ядра. Существует ли параметр конфигурации или вызов API или что-нибудь еще, что может включить параллельное обучение деревьев решений?

1 ответ

  1. Я нашел ответ на этот вопрос. Проблема заключалась в том, как я настроил конфигурацию Spark с помощью SparkConf.setMaster («local»). Я изменил это на SparkConf.setMaster («local[16]») для использования 16 потоков, согласно javadoc:

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

    Теперь мое обучение нас работает гораздо быстрее, и Amazon datacentre в Вирджинии немного жарче 🙂

    Типичный случай RTFM, но в мою защиту это использование setMaster() кажется мне немного банальным. Лучше было бы добавить отдельный метод для установки количества локальных потоков / ядер для использования.