Проблема с отслеживанием использования памяти в r-сеансе и увеличением загрузки памяти во время обучения моделей с множественным повышением - PullRequest
0 голосов
/ 08 октября 2019

Я сталкиваюсь с двумя проблемами с памятью в R:

  • Я не могу достаточно отслеживать использование памяти во время моего сеанса r на сервере Linux внутри моей определенной функции. Я использую gc() и pryr:mem_usage() для отслеживания загрузки памяти (поэтому я читаю SO вопросы: Q1 , Q2 ), но это не соответствует фактическому использованию памяти, когдаЯ проверяю это в терминале с помощью команды top. gc() и pryr:mem_usage() показывают мне, например, 8 ГБ или 20 ГБ, но на самом деле это 115 ГБ, когда я проверяю его в терминале ... Где может быть проблема?

  • Внутри моей функцииЯ запускаю несколько моделей повышения подряд как lightgbm или xgboost, которые используют несколько ядер, создают прогнозы, работают с данными и сохраняют их на data.table (fread и fwrite). Во время этих процессов резко возрастает нагрузка на память, я также использую gc() для освобождения сборщика мусора, но это не помогло. Я обычно запускаю эту функцию несколько раз (ничего не возвращая, все сохраняется в файлах), но всегда с разными предметами для прогнозирования. Моя логика подсказывает мне, что при многократном запуске функции загрузка памяти должна быть постоянной, но она увеличивается до тех пор, пока память не переполнится. Сеанс останавливается, и когда я останавливаю процесс, сеанс выдает предупреждение: Warning message: In system(cmd, wait = FALSE) : system call failed: Cannot allocate memory. Только перезапуск сеанса r помогает исправить загрузку памяти, больше ничего не помогает. Есть ли другой способ справиться с возрастающей загрузкой памяти, который не связан с сохраненными объектами в памяти во время сеанса?

Спасибо

...