実際のキャレットの並列化は、R、caret、および doMC パッケージに依存します。Parallelizing Caret codeで説明されているように
私と同じような環境で働いている人はいますか?Rキャレットの並列化が正しく機能する最大Rバージョンは何ですか?
> sessionInfo()
R version 3.2.1 (2015-06-18)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 14.04.2 LTS
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=C LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] parallel stats graphics grDevices utils datasets methods base
other attached packages:
[1] caret_6.0-52 ggplot2_1.0.1 lattice_0.20-31 doMC_1.3.3 iterators_1.0.7 foreach_1.4.2 RStudioAMI_0.2
loaded via a namespace (and not attached):
[1] Rcpp_0.12.1 magrittr_1.5 splines_3.2.1 MASS_7.3-41 munsell_0.4.2 colorspace_1.2-6
[7] minqa_1.2.4 car_2.1-0 stringr_1.0.0 plyr_1.8.3 tools_3.2.1 pbkrtest_0.4-2
[13] nnet_7.3-9 grid_3.2.1 gtable_0.1.2 nlme_3.1-120 mgcv_1.8-6 quantreg_5.19
[19] MatrixModels_0.4-1 gtools_3.5.0 lme4_1.1-9 digest_0.6.8 Matrix_1.2-0 nloptr_1.0.4
[25] reshape2_1.4.1 codetools_0.2-11 stringi_0.5-5 BradleyTerry2_1.0-6 scales_0.3.0 stats4_3.2.1
[31] SparseM_1.7 brglm_0.5-9 proto_0.3-10
更新1:私のコードは次のとおりです:
library(doMC) ; registerDoMC(cores=4)
library(caret)
classification_formula <- as.formula(paste("target" ,"~",
paste(names(m_input_data)[!names(m_input_data)=='target'],collapse="+")))
CVfolds <- 2
CVreps <- 5
ma_control <- trainControl(method = "repeatedcv",
number = CVfolds,
repeats = CVreps ,
returnResamp = "final" ,
classProbs = T,
summaryFunction = twoClassSummary,
allowParallel = TRUE,verboseIter = TRUE)
rf_tuneGrid = expand.grid(mtry = seq(2,32, length.out = 6))
rf <- train(classification_formula , data = m_input_data , method = "rf", metric="ROC" ,trControl = ma_control, tuneGrid = rf_tuneGrid , ntree = 101)
更新 2: コマンド ラインから実行すると、コアが 1 つしか機能しない これらのスクリプトを Rstudio から実行すると、 top 経由で 4 つのプロセスが表示されるため、並列が機能します。しかし、この1秒後にエラーが発生します:
Error in names(resamples) <- gsub("^\\.", "", names(resamples)) :
attempt to set an attribute on NULL
更新 4 :
こんにちは、問題は終了した R セッションにあったようです。AWS インスタンスを起動するたびに、R エンジンを更新して R コードを実行しました。Rstudio ブラウザーを更新するたびに、 Session -> Restart R を実行します。走るらしい。Ubuntuコマンドラインからスクリプトを実行する場合と同じかどうかを確認しています。
通常は終了せずに実行されます。データ レベルでキャレットを平行にします。これは、異なるプロセスで各リサンプルを処理できることを意味します。しかし、サンプルがまだ大きい場合 (100,000 / 2 (フォールド数 = 2) X 2,000 フィーチャ)、これを各プロセッサ ユニットで完了するのは難しい場合があります。私は正しいですか?
並列処理はアルゴリズム レベルで行う必要があると思います。これは、各アルゴリズムの実行が複数のコアで実行される可能性が高いことを意味します。そのようなアルゴリズムの実装がキャレットで利用可能な場合???