будущее ждет завершения предыдущего будущего при отправке на удаленный

Я делаю следующее, чтобы отправить кучу моделей на вычислительный сервер.

future ожидает завершения первого вызова, прежде чем будет отправлен следующий. Как мне сообщить будущему, что оно может одновременно отправлять несколько заданий на удаленный компьютер?

Это вполне возможно, так как я могу отправить несколько заданий на один и тот же удаленный компьютер из разных локальных сеансов R или если я снова вызову plan(login) между вызовами. Но как мне указать топологию, чтобы будущее не ждало и мне не приходилось постоянно вызывать plan?

library(future) 
login <- tweak(remote, workers = "[email protected]")
plan(list(login))
bla %<-% { bla <- rnorm(1000); Sys.sleep(100); saveRDS(bla, file="bla.rds"); bla}
bla2 %<-% { bla2 <- rnorm(1000); Sys.sleep(100); saveRDS(bla2, file="bla2.rds"); bla2 }

person Ruben    schedule 12.04.2018    source источник


Ответы (1)


Автор будущего здесь: Если вас устраивают отдельные процессы R на удаленном компьютере, вы можете использовать:

library("future")
remote_machine <- "[email protected]"
plan(cluster, workers = rep(remote_machine, times = 2L))

чтобы получить двух удаленных работников на одной машине. Таким образом, вы можете иметь два активных фьючерса одновременно без блокировки.

К вашему сведению, plan(remote, ...) в основном просто plan(cluster, persistent = TRUE, ...), где «постоянный» означает, что переменные R сохраняются в рабочем процессе при нескольких будущих вызовах; вы редко хотите это делать - поэтому вместо этого используйте cluster.

person HenrikB    schedule 13.04.2018
comment
Извините, я принял до проверки. remote и cluster отличаются более чем одним аргументом. Если я не настрою cluster, чтобы иметь homogeneous = FALSE, я получаю сообщение об ошибке: bash: /Library/Frameworks/R.framework/Resources/bin/Rscript: Нет такого файла или каталога. Таким образом, по умолчанию с удаленным управлением немного проще работать. Спасибо за подсказку о воспроизведении аргумента рабочих. Было бы неплохо добавить это в документы. - person Ruben; 16.04.2018