La mejor manera de interactuar con una sesión R que se ejecuta en la nube

10

Tengo R ejecutándose en Amazon EC2, usando una versión modificada del bioconductor AMI . Actualmente, estoy usando putty para ssh en mi servidor, comenzando R desde la línea de comando y luego copiando y pegando mi script desde notepad ++ en mi sesión de putty.

La cosa es que odio cortar y pegar. Se siente como una edad de piedra y ocasionalmente tengo problemas extraños de almacenamiento en búfer que arruinan mi código. No puedo usar RStudio , ya que no es compatible con multinúcleo , del cual dependo en gran medida.

¿Cuál es la forma más elegante de hacer esto?

/ Editar: Gracias por todas las excelentes sugerencias. Por ahora, he cambiado a usar foreach con el backend doRedis, que funciona muy bien en mi Mac, mi PC y en Amazon a través de RStudio. Este cambio fue bastante fácil una vez que aprendí a escribir una función que emula "lapply" usando "foreach". (¡Además, doRedis es increíble!)

Zach
fuente
2
Por cierto, tal pregunta sería muy sobre el tema aún por crearse Computational Science SE .
Imo, screen + vim es el combo ganador, pero puede que no sea atractivo para todos.
Marc Claesen

Respuestas:

12

Se me ocurren algunas maneras. He hecho esto bastante y estas son las formas que me parecieron más útiles:

  1. Modo Emacs Daemon . ssh en la instancia EC2 con el interruptor -X para que reenvíe X windows a su máquina de eliminación. El uso del modo demonio asegurará que no pierdas el estado si tu conexión se agota o se cae
  2. En lugar de usar el paquete multinúcleo, use un backend paralelo diferente con el paquete foreach. De esa manera puedes usar RStudio, lo cual es fantástico. Foreach es genial porque puedes probar tu código en un modo no paralelo, luego cambiar al modo paralelo simplemente cambiando tu backend (1 o 2 líneas de código). Recomiendo el backend doRedis. Estás en la nube, ¡también podrías encender varias máquinas!
JD Long
fuente
+1 para el modo Emacs Daemon. He estado haciendo un poco de ssh últimamente, y esto parece realmente útil.
richiemorrisroe 01 de
¿Hay una manera fácil de emular lapply usando foreach? He escrito una gran cantidad de código que se aplica a los apalancamientos, y me gusta el paquete multinúcleo porque puedo reemplazar lapply por mclapply. ¿Hay una 'foreachlapply' o tendré que volver a escribir mucho código? ¡Gracias!
Zach
1
Bueno, doRedissolo puedo hacer cosas de redis; Una gran entrada no es la única razón para los cálculos de HPC.
13

La forma más conveniente es simplemente instalar el servidor VNC y un entorno ligero como XFCE y crear una sesión virtual que pueda usar desde donde quiera (persiste las desconexiones), es decir, algo como esto: ingrese la descripción de la imagen aquí

Otros beneficios adicionales son que puede usar su portapapeles local en el escritorio virtual y ver las gráficas R mucho más rápido que mediante el reenvío X11 o la copia de archivos de imagen.

Se necesita un poco de esfuerzo para configurar todo correctamente (X init, túnel ssh), pero Internet está lleno de tutoriales sobre cómo hacerlo.


fuente
1
Aún mejor es NX, que generalmente tiene características de rendimiento mucho mejores.
scw
¿Te gustaría un tutorial que te guste o debería mirar los mejores resultados en google?
Zach
3

No sé cómo funciona Amazon EC2, así que quizás mis soluciones simples no funcionen. Pero normalmente uso scp o sftp (a través de WinSCP si estoy en Windows) o git.

Thomas Levine
fuente
3

Usaría rsync para enviar los scripts y los archivos de datos al servidor, luego "nohup Rscript myscript.R> output.out &" para ejecutar las cosas y cuando termine, rsync para obtener los resultados.

Martín
fuente
2
screeno tmuxson mejores que nohup: también separan el script para que no se elimine al cerrar sesión, pero permiten volver a conectar la sesión y comenzar de nuevo, incluso desde otra computadora cliente. tmuxincluso se puede usar como una especie de administrador de ventanas en modo texto.
0

VIM + tmux + VIM Slime. Obtiene el mejor editor de texto y la capacidad de enviar código del editor a la línea de comando R (al igual que en Rstudio).

bdeonovic
fuente
0

Uso R Studio en EC2 todo el tiempo gracias a los AMI creados por Louis Aslett . No tiene que saber nada de SSH ni nada (aparte de R, por supuesto). Solo necesita una cuenta EC2. Como se menciona en una de las otras respuestas, R Studio admite computación paralela, por ejemplo , a través del paquete foreach . Esto realmente permite aprovechar el poder de EC2. Al usar una instancia de cómputo optimizado (32 núcleos), pude reducir significativamente el tiempo de entrenamiento para mis modelos ML casi sin costo (unos pocos dólares por hora).

Antoine
fuente