32 コアのサーバー上にある ubuntu LXC コンテナーで R を実行しています。さまざまな数のコアを使用して、caret パッケージを使用して並列ランダム フォレスト モデルを実行しています。
cl = makeCluster(c(rep("localhost",cores)), outfile = "")
registerDoParallel(cl,cores = cores)
rf_train <- train(gt~.,data=training,
method='parRF', tuneGrid = data.frame(mtry = 7), na.action = na.omit,
trControl=trainControl(method='repeatedcv',number=10,
classProbs = TRUE, allowParallel = TRUE)
)
stopCluster(cl)
私が使用するcores <- 1
と、エラーなしでシリアルで実行されます。
を使用するcores <- 2
と、 を実行するまでエラーは発生しません。実行するstopCluster(cl)
と、次のようになります。
Warning message:
executing %dopar% sequentially: no parallel backend registered
Warning message:
executing %dopar% sequentially: no parallel backend registered
(これは、によって確認されたように、プロセスが並行して正常に完了した後であることに注意してくださいtop
。)
cores <- 4
以上
を使用すると、クラスターを停止するときにコアごとに繰り返される上記の警告に加えてError in unserialize(socklist[[n]]) : error reading from connection
、計算が完了する前にも表示されます。
この動作は、計算を Rstudio Server で実行してもコンソールで実行しても同じです。このコードは、以前に 32 コアすべてを使用してエラーなしでこの計算を実行できた同僚の 1 人から入手したものです。Rstudio Server がメモリ リークを起こしているのではないかと考えましたが、その証拠を見つけることができません。(走っていても助けにはrm()
なりgc()
ません)。
これらのエラーの原因は何ですか?