【发布时间】:2018-01-11 03:29:36
【问题描述】:
我目前正在运行h2o 的 DRF 算法和一个 3 节点 EC2 集群(h2o 服务器跨越所有 3 个节点)。
我的数据集有 100 万行和 41 列(40 个预测变量和 1 个响应)。
我使用R绑定控制集群,RF调用如下
model=h2o.randomForest(x=x,
y=y,
ignore_const_cols=TRUE,
training_frame=train_data,
seed=1234,
mtries=7,
ntrees=2000,
max_depth=15,
min_rows=50,
stopping_rounds=3,
stopping_metric="MSE",
stopping_tolerance=2e-5)
对于 3 节点集群(c4.8xlarge,启用增强网络),这大约需要 240 秒; CPU 利用率在 10-20% 之间; RAM 利用率在 20-30% 之间;网络传输在 10-50MByte/sec(输入和输出)之间。建造 300 棵树,直到提前停止。
在 单节点 集群上,我可以在大约 80 秒内获得相同的结果。因此,对于 3 节点集群,我得到的速度不是预期的 3 倍,而是 3 倍。
我做了一些研究,发现一些资源报告了同样的问题(虽然不像我的那么极端)。例如,参见: https://groups.google.com/forum/#!topic/h2ostream/bnyhPyxftX8
具体来说,http://datascience.la/benchmarking-random-forest-implementations/ 的作者指出
虽然不是本研究的重点,但有迹象表明运行 多个分布式随机森林实现(例如 H2O) 节点不能提供人们希望的速度优势(因为 在每次拆分时运送直方图的高成本 网络)。
https://www.slideshare.net/0xdata/rf-brighttalk 还指出了 2 种不同的 DRF 实现,其中一种具有更大的网络开销。
我认为我遇到了与上面链接中描述的相同的问题。
如何提高h2o 在多节点集群上的 DRF 性能?
是否有任何设置可以改善运行时间?
任何帮助都非常感谢!
【问题讨论】:
标签: parallel-processing random-forest h2o