Я пытаюсь запустить predict()
параллельно на моей машине с Windows. Это работает с меньшим набором данных, но не масштабируется так же, как для каждого процесса создается новая копия фрейма данных. Есть ли способ работать параллельно, не создавая временных копий?Параллельный прогноз
Моего код (только несколько модификаций this оригинального кода):
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)
Я использую простую репликацию данных, чтобы проверить его. С scale
10 или 1000 он работает, но я бы хотел, чтобы он работал с scale <- 1000000
- кадром данных с 16-миллиметровыми строками (кадр данных 1,86 ГБ, как указано object_size()
от pryr
. Обратите внимание, что при необходимости я также могу использовать машину Linux, если это является единственным вариантом