Sto cercando di eseguire predict()
in parallelo sul mio computer Windows. Funziona su un set di dati più piccolo, ma non si adatta bene, poiché per ogni processo viene creata una nuova copia del frame di dati. C'è un modo per correre in parallelo senza fare copie temporanee?Prevedi parallelo
il mio codice (solo poche modifiche di this codice originale):
library(foreach)
library(doSNOW)
fit <- lm(Employed ~ ., data = longley)
scale <- 100
longley2 <- (longley[rep(seq(nrow(longley)), scale), ])
num_splits <-4
cl <- makeCluster(num_splits)
registerDoSNOW(cl)
split_testing<-sort(rank(1:nrow(longley))%%num_splits)
predictions<-foreach(i= unique(split_testing),
.combine = c, .packages=c("stats")) %dopar% {
predict(fit, newdata=longley2[split_testing == i, ])
}
stopCluster(cl)
sto usando semplice replica dei dati per testarlo. Con scale
10 oppure 1000 sta funzionando, ma desidero farlo funzionare con scale <- 1000000
-. Frame di dati con righe 16M (struttura dati 1.86GB come indicato dalla object_size()
da pryr
noti che quando necessario posso anche usare macchina Linux, se questo è l'unica opzione