Dans le code ci-dessous, j'essaie d'entraîner deux modèles auto.arima différents en parallèle sur différents cœurs. Je reçois l'erreur ci-dessous lorsque j'essaie d'exécuter le code. Je ne suis pas sûr si mon problème est avec do.call ou parLapply, aussi je suis assez nouveau pour le traitement parallèle donc tous les conseils sont très utiles.Formation de plusieurs modèles Auto.Arima en parallèle
Code:
library("forecast")
library("parallel")
TList2<-list(x=tsd1, lambda = Tlambda, stepwise=TRUE, approximation = TRUE)
DList2<-list(x=tsd2, lambda = Rlambda, stepwise=TRUE, approximation = TRUE)
##Parallelizing ARIMA Model Training
# Calculate the number of cores
no_cores <- 1
# Initiate cluster
cl <- makeCluster(no_cores)
ARIMA_List<-list(TList2,DList2)
ARIMA_Models<-parLapply(cl, ARIMA_List,
function(x){do.call(auto.arima, args=x)})
stopCluster(cl)
Error:
Error in checkForRemoteErrors(val) :
one node produced an error: object 'auto.arima' not found
Data:
dput(TList2)
structure(list(x = c(6, 15.5, 22, 16, NA, NA, 13, 13.5, 10, 6,
14.5, 16, NA, 8, 11, NA, 2, 2, 10, NA, 9, NA, 11, 16, NA, 4,
17, 7, 11.5, 22, 20.5, 10, 22, NA, 13, 17, 22, 9, 13, 19, 8,
16, 18, 22, 21, 14, 7, 20, 21.5, 17), lambda = 0.999958829041611,
stepwise = TRUE, approximation = TRUE), .Names = c("x", "lambda",
"stepwise", "approximation"))
dput(DList2)
structure(list(x = c(11, 4, 8, 11, 11, NA, 3, 2.5, 6, 11, 7,
1, NA, 6, 6, NA, 6, 11, 3, NA, 11, NA, 10, 10, NA, NA, 9, 3,
3, 11, 8, 10, NA, NA, 11, 10, 9, 3, 7, NA, 2, 4, 11, 2.5, 3,
NA, 4, 7, 1, 5), lambda = 0.170065851742339, stepwise = TRUE,
approximation = TRUE), .Names = c("x", "lambda", "stepwise",
"approximation"))
Merci, qui a fait l'affaire! Je suis assez nouveau dans le traitement parallèle, est-ce que le code entraîne deux modèles simultanément sur 2 cœurs différents? Qu'a fait l'ajout de clusterEvalQ (cl, library (forecast))? – user6183069
Je suis plutôt novice en informatique parallèle. Et j'ai mis en signet [this] (http://stackoverflow.com/questions/18357788/parallel-parlapply-setup) post, qui est plus ou moins une copie de la vôtre. Intuitivement, je dirais que si vous n'utilisez qu'un seul noyau, cela ne fait pas de différence. Mais si vous enregistrez plus, il devrait faire ce que vous attendez - lancer Arima en parallèle. – lukeA