クラスタを4つ同時に予約できるクラスタ(大学のサーバ)でrandomForestをParallelで実行したいとします。 foreachパッケージの説明で述べたようにforeachとdoSNOWパッケージを使用しましたが、次のコードを使用すると、すべての負荷が最初のノードにあり、他の3つのノードではメモリ消費がないことがわかります。誰かがどのようにこのコードを編集して各ノードのすべてのコアが同等の作業を行い、それを1つのフォレストにまとめることができるか教えてください。クラスタ内の異なるノードでRandomForestを並列に実行する
> library("foreach")
> library("doSNOW")
> registerDoSNOW(makeCluster(48, type="SOCK"))
> x <- matrix(runif(500), 100)
> y <- gl(2, 50)
> rf <- foreach(ntree = rep(22, 48), .combine = combine, .packages = "randomForest") %dopar%
+ randomForest(x, y, ntree = ntree)
> rf
Call:
randomForest(x = x, y = y, ntree = ntree)
Type of random forest: classification
Number of trees: 1056
バケットキューイングシステム(Torque、LSF、Slurmなど)を使用して4つのノードを要求していますか? –
下記の大きな回答ですが、大学のクラスタ管理者と相談する必要があると付け加えたいと思います。彼らはあなたの特定のクラスタのための最良の方法であなたを助けることができるでしょう。 – vincentmajor