Beste Möglichkeit, mit einer R-Sitzung in der Cloud zu interagieren

10

Ich habe R auf Amazon EC2 mit einer modifizierten Version des Bioconductor AMI . Derzeit verwende ich putty, um ssh auf meinen Server zu übertragen, R über die Befehlszeile zu starten und dann mein Skript von Notepad ++ in meine Putty-Sitzung zu kopieren und einzufügen.

Die Sache ist, ich hasse Ausschneiden und Einfügen. Es fühlt sich steinzeitlich an und ich bekomme gelegentlich seltsame Pufferprobleme, die meinen Code vermasseln. Ich kann RStudio nicht verwenden , da es Multicore nicht unterstützt , von dem ich stark abhängig bin.

Was ist die elegantere Art, dies zu tun?

/ Edit: Danke für all die tollen Vorschläge. Im Moment habe ich auf foreach mit dem doRedis-Backend umgestellt, das auf meinem Mac, meinem PC und Amazon über RStudio hervorragend funktioniert. Dieser Wechsel war ziemlich einfach, als ich lernte, wie man eine Funktion schreibt , die "lapply" mit "foreach" emuliert . (Auch doRedis ist großartig!)

Zach
quelle
2
Übrigens: Eine solche Frage wäre sehr thematisch in Bezug auf die noch zu erstellende Computational Science SE .
Imo, screen + vim ist die Gewinnkombination, aber das spricht möglicherweise nicht alle an.
Marc Claesen

Antworten:

12

Ich kann mir ein paar Möglichkeiten vorstellen. Ich habe das ziemlich oft gemacht und hier sind die Möglichkeiten, die ich am nützlichsten fand:

  1. Emacs Daemon-Modus . ssh in die EC2-Instanz mit dem Schalter -X, damit X-Fenster zurück an Ihren Entfernungscomputer weitergeleitet werden. Durch die Verwendung des Dämonmodus wird sichergestellt, dass Sie den Status nicht verlieren, wenn Ihre Verbindung abläuft oder unterbrochen wird
  2. Verwenden Sie anstelle des Multicore-Pakets ein anderes paralleles Backend mit dem foreach-Paket. Auf diese Weise können Sie RStudio verwenden, was fantastisch ist. Foreach ist großartig, da Sie Ihren Code nicht parallel testen und dann in den parallelen Modus wechseln können, indem Sie einfach Ihr Backend ändern (1 oder 2 Codezeilen). Ich empfehle das doRedis-Backend. Sie befinden sich in der Cloud und können genauso gut mehrere Maschinen starten!
JD Long
quelle
+1 für den Emacs Daemon-Modus. Ich habe in letzter Zeit ziemlich viel SSH gemacht, und das sieht wirklich nützlich aus.
Richiemorrisroe
Gibt es eine einfache Möglichkeit, lapply mit foreach zu emulieren? Ich habe viel Code geschrieben, für den Hebel gelten, und ich mag das Multicore-Paket, weil ich lapply einfach durch mclapply ersetzen kann. Gibt es ein "foreachlapply" oder muss ich viel Code neu schreiben? Vielen Dank!
Zach
1
Nun, doRediskann nur Redis Sachen machen; Ein großer Aufwand ist nicht der einzige Grund für HPC-Berechnungen.
13

Am bequemsten ist es, nur den VNC-Server und eine leichte Umgebung wie XFCE zu installieren und sich eine virtuelle Sitzung zu erstellen, die Sie von jedem beliebigen Ort aus verwenden können (es bestehen weiterhin Verbindungsabbrüche), z. Geben Sie hier die Bildbeschreibung ein

Weitere Vorteile sind, dass Sie Ihre lokale Zwischenablage auf dem virtuellen Desktop verwenden und R-Diagramme viel schneller anzeigen können als über das Weiterleiten oder Kopieren von Bilddateien durch X11.

Es erfordert einige Mühe, alles richtig einzurichten (X-Init, SSH-Tunnel), aber das Internet ist voll von Tutorials, wie man das macht.


quelle
1
Noch besser ist NX, das im Allgemeinen deutlich verbesserte Leistungseigenschaften aufweist.
Scw
Möchten Sie ein Tutorial, das Ihnen gefällt, oder sollte ich mir nur die besten Ergebnisse bei Google ansehen?
Zach
3

Ich weiß nicht, wie Amazon EC2 funktioniert, daher funktionieren meine einfachen Lösungen möglicherweise nicht. Aber normalerweise verwende ich scp oder sftp (über WinSCP, wenn ich unter Windows bin) oder git.

Thomas Levine
quelle
3

Ich würde rsync verwenden, um die Skripte und Datendateien auf den Server zu übertragen, dann "nohup Rscript myscript.R> output.out &", um Dinge auszuführen, und wenn ich fertig bin, rsync, um die Ergebnisse abzurufen.

Martin
quelle
2
screenoder tmuxsind besser als nohup- sie trennen auch das Skript, damit es nicht durch Abmelden beendet wird, sondern ermöglichen es, die Sitzung erneut anzuschließen und neu zu starten, selbst von einem anderen Client-Computer. tmuxkann sogar als eine Art Fenstermanager im Textmodus verwendet werden.
0

VIM + tmux + VIM Slime. Sie erhalten den besten Texteditor und die Möglichkeit, Code vom Editor an die R-Befehlszeile zu senden (genau wie in Rstudio).

bdeonovic
quelle
0

Ich verwende R Studio auf EC2 alle Zeit dank der AMI s erstellt von Louis Aslett . Sie müssen kein SSH oder etwas anderes kennen (außer R natürlich). Sie benötigen lediglich ein EC2-Konto. Wie in einer der anderen Antworten erwähnt, unterstützt R Studio paralleles Rechnen, beispielsweise über das foreach- Paket. Dies ermöglicht es wirklich, die Leistung von EC2 zu nutzen. Durch die Verwendung einer rechneroptimierten Instanz (32 Kerne) konnte ich die Trainingszeit für meine ML-Modelle fast kostenlos (einige Dollar pro Stunde) erheblich verkürzen.

Antoine
quelle