В R, есть ли способ разделить переменную между процессами различий R на одной машине?
Моя проблема в том, что у меня большая модель, которая медленно загружается в память. Чтобы протестировать его на многих примерах, мне нужно запустить некоторую программу на C для генерации входных функций для модели, а затем запустить скрипт R для прогнозирования. Загрузка модели занимает слишком много времени каждый раз.
Так мне интересно
1) если есть какой-то способ сохранить модель (переменную в R) в памяти.
или же
2) Могу ли я запустить отдельный процесс R в качестве выделенного сервера, тогда все процессы прогнозирования R могут получить доступ к переменной на сервере на той же машине.
Модель никогда не меняется в течение всего прогноза. Это модель randomForest, хранящаяся в файле.rdata, размер которого составляет ~500 МБ. Загрузка этой модели идет медленно.
Я знаю, что могу использовать параллельный R (snow, doPar и т. Д.) Для параллельного прогнозирования, однако это не то, чего я хочу, так как это требует от меня изменения потока данных, который я использовал.
Большое спасибо.
1 ответ
Если вы обновляете модель каждый раз, вы можете сохранить модель в виде файла RData, а затем поделиться им на разных машинах. Хотя загрузка диска с диска в память может занять некоторое время, это сэкономит время на восстановление.
save(myModel, file="path/to/file.Rda")
# then
load(file="path/to/file.Rda")
Редактировать в соответствии с предложением @VictorK: как отмечает Виктор, поскольку вы сохраняете только один объект, saveRDS
может быть лучшим выбором
saveRDS(myModel, file="path/to/file.Rds")
myModel <- readRDS(file="path/to/file.Rds")