Meilleure façon d'interagir avec une session R exécutée dans le cloud

10

J'ai R fonctionnant sur amazon EC2, en utilisant une version modifiée du bioconducteur AMI . Actuellement, j'utilise putty pour ssh dans mon serveur, en commençant R à partir de la ligne de commande, puis en copiant et en collant mon script à partir de notepad ++ dans ma session putty.

Le truc, c'est que je déteste couper et coller. Cela semble être l'âge de la pierre et j'ai parfois des problèmes de tampon étranges qui bousillent mon code. Je ne peux pas utiliser RStudio , car il ne prend pas en charge le multicœur , dont je dépend fortement.

Quelle est la façon la plus élégante de procéder?

/ Edit: Merci pour toutes les bonnes suggestions. Pour l'instant, je suis passé à l'utilisation de foreach avec le backend doRedis, qui fonctionne très bien sur mon Mac, mon PC et sur Amazon via RStudio. Ce changement a été assez facile une fois que j'ai appris à écrire une fonction qui émule "lapply" en utilisant "foreach". (De plus, doRedis est génial!)

Zach
la source
2
BTW Une telle question serait très sur le sujet sur le point d'être encore créé Computational Science SE .
Imo, screen + vim est le combo gagnant, mais cela pourrait ne pas plaire à tout le monde.
Marc Claesen

Réponses:

12

Je peux penser à plusieurs façons. Je l'ai fait un peu et voici les moyens que j'ai trouvés les plus utiles:

  1. Mode démon Emacs . ssh dans l'instance EC2 avec le commutateur -X pour qu'il transfère X windows à votre machine de suppression. L'utilisation du mode démon garantit que vous ne perdez pas l'état si votre connexion expire ou tombe
  2. Au lieu d'utiliser le package multicœur, utilisez un backend parallèle différent avec le package foreach. De cette façon, vous pouvez utiliser RStudio, ce qui est fantastique. Foreach est génial car vous pouvez tester votre code en non parallèle, puis passer en mode parallèle en changeant simplement votre backend (1 ou 2 lignes de code). Je recommande le backend doRedis. Vous êtes dans le cloud, autant lancer plusieurs machines!
JD Long
la source
+1 pour le mode démon Emacs. J'ai fait pas mal de ssh récemment, et cela semble vraiment utile.
richiemorrisroe
Existe-t-il un moyen simple d'émuler lapply en utilisant foreach? J'ai écrit beaucoup de code qui tire parti de l'application, et j'aime le package multicœur car je peux simplement remplacer lapply par mclapply. Existe-t-il un «foreachlapply», ou vais-je devoir réécrire beaucoup de code? Merci!
Zach
1
Eh bien, doRedisje ne peux que refaire des trucs; une entrée énorme n'est pas la seule raison des calculs HPC.
13

Le moyen le plus pratique consiste simplement à installer le serveur VNC et un environnement léger comme XFCE et à vous faire une session virtuelle que vous pouvez utiliser où vous le souhaitez (il persiste les déconnexions), c'est-à-dire quelque chose comme ceci: entrez la description de l'image ici

Les avantages supplémentaires sont que vous pouvez utiliser votre presse-papiers local dans le bureau virtuel et voir les tracés R bien plus rapidement que via le transfert ou la copie de fichiers image X11.

Il faut un certain effort pour tout configurer correctement (X init, tunnel ssh), mais Internet regorge de tutoriels pour y parvenir.


la source
1
Encore mieux est NX, qui a généralement des caractéristiques de performances bien améliorées.
scw
Pourriez-vous aimer un tutoriel que vous aimez, ou devrais-je simplement regarder les meilleurs résultats sur Google?
Zach
3

Je ne sais pas comment Amazon EC2 fonctionne, alors peut-être que mes solutions simples ne fonctionnent pas. Mais j'utilise normalement scp ou sftp (via WinSCP si je suis sous Windows) ou git.

Thomas Levine
la source
3

J'utiliserais rsync pour pousser les scripts et les fichiers de données vers le serveur, puis "nohup Rscript myscript.R> output.out &" pour exécuter les choses et une fois terminé, rsync pour extraire les résultats.

Martin
la source
2
screenou tmuxvalent mieux que nohup- ils détachent également le script pour qu'il ne soit pas tué par la déconnexion, mais permettent de rattacher la session et de recommencer, même à partir d'un autre ordinateur client. tmuxpeut même être utilisé comme une sorte de gestionnaire de fenêtres en mode texte.
0

VIM + tmux + VIM Slime. Vous obtenez le meilleur éditeur de texte et la possibilité d'envoyer du code de l'éditeur à la ligne de commande R (comme dans Rstudio).

bdeonovic
la source
0

J'utilise R Studio sur EC2 tout le temps grâce aux AMI créées par Louis Aslett . Vous n'avez pas besoin de connaître SSH ou quoi que ce soit (autre que R, bien sûr). Vous avez juste besoin d'un compte EC2. Comme mentionné dans l'une des autres réponses, R Studio prend en charge l'informatique parallèle, via le package foreach par exemple. Cela permet vraiment d'exploiter la puissance de l'EC2. En utilisant une instance optimisée pour le calcul (32 cœurs), j'ai été en mesure de réduire considérablement le temps de formation pour mes modèles ML, presque gratuitement (quelques dollars par heure).

Antoine
la source