Melhor maneira de interagir com uma sessão R em execução na nuvem

10

Tenho R rodando no Amazon EC2, usando uma versão modificada do AMI do biocondutor . Atualmente, estou usando o putty para ssh no meu servidor, iniciando o R na linha de comando e copiando e colando meu script do bloco de notas ++ na minha sessão do putty.

O problema é que eu odeio cortar e colar. Parece uma idade da pedra e ocasionalmente recebo problemas de buffer estranhos que estragam meu código. Não posso usar o RStudio , porque ele não suporta multicore , do qual dependo fortemente.

Qual é a maneira mais elegante de fazer isso?

/ Edit: Obrigado por todas as ótimas sugestões. Por enquanto, passei a usar o foreach com o back-end do doRedis, que funciona muito bem no meu Mac, no meu PC e na amazon via RStudio. Essa opção foi bem fácil depois que aprendi a escrever uma função que emula "lapply" usando "foreach". (Além disso, doRedis é incrível!)

Zach
fonte
2
Aliás, essa pergunta seria muito sobre o tópico ainda a ser criado, Computational Science SE .
Imo, screen + vim é a combinação vencedora, mas isso pode não agradar a todos.
Marc Claesen

Respostas:

12

Eu posso pensar em algumas maneiras. Já fiz isso bastante e aqui estão as maneiras que achei mais úteis:

  1. Modo Emacs Daemon . ssh na instância do EC2 com a opção -X para encaminhar o X windows de volta à sua máquina removida. O uso do modo daemon garantirá que você não perca o estado se a conexão expirar ou cair
  2. Em vez de usar o pacote multicore, use um back-end paralelo diferente com o pacote foreach. Dessa forma, você pode usar o RStudio, o que é fantástico. O Foreach é ótimo porque você pode testar seu código de maneira não paralela e alternar para o modo paralelo simplesmente alterando seu back-end (1 ou 2 linhas de código). Eu recomendo o back-end do doRedis. Você está na nuvem, também pode disparar várias máquinas!
JD Long
fonte
+1 para o modo Emacs Daemon. Ultimamente, tenho feito bastante ssh, e isso parece realmente útil.
richiemorrisroe
Existe uma maneira fácil de emular lapply usando o foreach? Escrevi muito código que aproveita a aplicação, e gosto do pacote multicore porque posso simplesmente substituir o lapply pelo mclapply. Existe um 'foreachlapply' ou terei que reescrever muito código? Obrigado!
Zach
11
Bem, doRedissó podemos fazer coisas de redis; uma entrada enorme não é a única razão para cálculos de HPC.
13

A maneira mais conveniente é apenas instalar o servidor VNC e algum ambiente leve como o XFCE e criar uma sessão virtual que você possa usar de onde quiser (persiste desconexões), ou seja, algo como isto: insira a descrição da imagem aqui

As vantagens adicionais são que você pode usar a área de transferência local na área de trabalho virtual e ver R plotando muito mais rápido do que via encaminhamento do X11 ou cópia de arquivos de imagem.

É preciso algum esforço para configurar tudo certo (X init, túnel ssh), mas a Internet está cheia de tutoriais sobre como fazê-lo.


fonte
11
Ainda melhor é o NX, que geralmente apresenta características de desempenho muito melhoradas.
ACS
Gostaria de um tutorial que você gosta ou devo apenas olhar para os melhores resultados no Google?
Zach
3

Não sei como o Amazon EC2 funciona; talvez minhas soluções simples não funcionem. Mas normalmente uso scp ou sftp (através do WinSCP, se estiver no Windows) ou git.

Thomas Levine
fonte
3

Eu usaria o rsync para enviar os scripts e arquivos de dados ao servidor, depois "nohup Rscript myscript.R> output.out &" para executar as coisas e, quando terminar, o rsync para obter os resultados.

Martin
fonte
2
screenou tmuxsão melhores do que nohupeles - eles também desanexam o script para que não seja eliminado pelo logout, mas permitem reconectar a sessão e recomeçar, mesmo a partir de outro computador cliente. tmuxpode até ser usado como um tipo de gerenciador de janelas em modo de texto.
0

VIM + tmux + VIM Slime. Você obtém o melhor editor de texto e a capacidade de enviar código do editor para a linha de comando do R (como no Rstudio).

bdeonovic
fonte
0

Eu uso o R Studio no EC2 o tempo todo, graças às AMIs criadas por Louis Aslett . Você não precisa conhecer nenhum SSH nem nada (além de R, é claro). Você só precisa de uma conta EC2. Como mencionado em uma das outras respostas, o R Studio suporta computação paralela, por exemplo , por meio do pacote foreach . Isso realmente permite aproveitar o poder do EC2. Usando uma instância otimizada para computação (32 núcleos), pude reduzir significativamente o tempo de treinamento para meus modelos de ML quase sem nenhum custo (alguns dólares por hora).

Antoine
fonte