В 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")
Другие вопросы по тегам