Executando tarefas R em um ambiente de computação em grade
-
27-09-2019 - |
Pergunta
Estou executando alguns grandes modelos de regressão em R em um ambiente de computação em grade.Pelo que eu sei, a grade apenas me dá mais memória e processadores mais rápidos, então acho que essa pergunta também se aplicaria para quem usa R em um computador potente.
Os modelos de regressão que estou executando têm muitas observações e diversas variáveis fatoriais que possuem muitos (10 ou 100) níveis cada.Como resultado, a regressão pode se tornar computacionalmente intensiva.Percebi que quando alinho 3 regressões em um script e o envio para a grade, ele sai (trava) devido a restrições de memória.No entanto, se eu executá-lo como três scripts diferentes, ele funcionará bem.
Estou fazendo uma limpeza, então, após a execução de cada modelo, salvo o objeto do modelo em um arquivo separado, rm(list=ls()) para limpar toda a memória e, em seguida, executo gc() antes que o próximo modelo seja executado.Ainda assim, executar todos os três em um script parece travar, mas interromper o trabalho parece estar bem.
O administrador do sistema diz que dividir é importante, mas não vejo por que, se estou limpando após cada execução.3 em um script os executa em sequência de qualquer maneira.Alguém tem uma idéia de por que a execução de três scripts individuais funciona, mas a execução de todos os modelos em um script causaria problemas de memória no R?
obrigado!EXL
Solução
Perguntas semelhantes que valem a pena ler:Forçando a execução da coleta de lixo em R com o comando gc() Uso de memória em R
Minha experiência tem sido que R não é excelente no gerenciamento de memória.Você pode tentar colocar cada regressão em uma função na esperança de que deixar variáveis fora do escopo funcione melhor do que gc(), mas eu não prenderia a respiração.Existe um motivo específico pelo qual você não pode executar cada um em seu próprio lote?Mais informações solicitadas por Joris também ajudariam.