Il modo migliore per interagire con una sessione R in esecuzione nel cloud


10

Ho R in esecuzione su Amazon EC2, usando una versione modificata del bioconduttore AMI . Attualmente sto usando putty per ssh nel mio server, avviando R dalla riga di comando, quindi copiando e incollando il mio script da notepad ++ nella mia sessione putty.

Il fatto è che odio tagliare e incollare. Mi sembra l'età della pietra e ogni tanto ho strani problemi di buffering che rovinano il mio codice. Non riesco a usare RStudio , perché non supporta il multicore , da cui dipendo fortemente.

Qual è il modo più elegante per farlo?

/ Modifica: grazie per tutti gli ottimi suggerimenti. Per ora, sono passato all'utilizzo di foreach con il backend doRedis, che funziona alla grande sul mio Mac, sul mio PC e su Amazon tramite RStudio. Questo passaggio è stato abbastanza semplice una volta che ho imparato a scrivere una funzione che emula "lapply" usando "foreach". (Inoltre, doRedis è fantastico!)


2
A proposito di questa domanda sarebbe molto in discussione su ancora da creare Computational Science SE .


Imo, screen + vim è la combinazione vincente, ma potrebbe non piacere a tutti.
Marc Claesen,

Risposte:


12

Posso pensare ad alcuni modi. L'ho fatto un bel po 'e qui sono i modi che ho trovato più utili:

  1. Emacs Daemon mode . ssh nell'istanza EC2 con l'opzione -X in modo da inoltrare X windows alla tua macchina di rimozione. L'uso della modalità demone assicurerà di non perdere stato se la connessione scade o si interrompe
  2. Invece di utilizzare il pacchetto multicore, utilizzare un backend parallelo diverso con il pacchetto foreach. In questo modo puoi usare RStudio, il che è fantastico. Foreach è fantastico perché puoi testare il tuo codice in modo non parallelo, quindi passare alla modalità parallela semplicemente cambiando il tuo backend (1 o 2 righe di codice). Consiglio il backend doRedis. Sei nel cloud, potresti anche accendere più macchine!

+1 per la modalità Demone Emacs. Ultimamente ho fatto un po 'di ssh, e questo sembra davvero utile.
richiemorrisroe,

C'è un modo semplice per emulare lapponi usando foreach? Ho scritto un sacco di codice che utilizza le leve e mi piace il pacchetto multicore perché posso semplicemente sostituire lapply con mclapply. Esiste un "foreachlapply" o dovrò riscrivere molto codice? Grazie!
Zach

1
Bene, doRedisposso solo fare cose redis; un enorme contributo non è l'unico motivo per i calcoli HPC.

13

Il modo più conveniente è semplicemente installare il server VNC e alcuni ambienti leggeri come XFCE e renderti una sessione virtuale che puoi usare da qualsiasi luogo tu voglia (persiste la disconnessione), cioè qualcosa del genere: inserisci qui la descrizione dell'immagine

Ulteriori vantaggi sono che è possibile utilizzare gli Appunti locali nel desktop virtuale e vedere i grafici R molto più velocemente rispetto a tramite l'inoltro X11 o la copia di file di immagini.

Ci vuole un po 'di sforzo per impostare tutto correttamente (X init, ssh tunnel), ma Internet è pieno di tutorial su come farlo.


1
Ancora meglio è NX, che ha generalmente migliorato le caratteristiche prestazionali.
scw,

Ti piacerebbe un tutorial che ti piace o dovrei solo guardare i risultati delle migliori coppie su google?
Zach,

3

Non so come funziona Amazon EC2, quindi forse le mie soluzioni semplici non funzionano. Ma di solito uso scp o sftp (tramite WinSCP se sono su Windows) o git.


3

Userei rsync per inviare gli script e i file di dati al server, quindi "nohup Rscript myscript.R> output.out &" per eseguire le cose e, al termine, rsync per estrarre i risultati.


2
screeno tmuxsono migliori di nohup- staccano anche lo script in modo che non venga ucciso dal logout, ma consentono di ricollegare la sessione e ricominciare, anche da un altro computer client. tmuxpuò anche essere usato come una sorta di gestore di finestre in modalità testo.

0

VIM + tmux + VIM Slime. Ottieni il miglior editor di testo e la possibilità di inviare codice dall'editor alla riga di comando R (proprio come in Rstudio).


0

Uso sempre R Studio su EC2 grazie alle AMI create da Louis Aslett . Non devi conoscere alcun SSH o altro (tranne R, ovviamente). Hai solo bisogno di un account EC2. Come menzionato in una delle altre risposte, R Studio supporta il calcolo parallelo, ad esempio tramite il pacchetto foreach . Ciò consente davvero di sfruttare la potenza di EC2. Utilizzando un'istanza ottimizzata per il calcolo (32 core), sono stato in grado di ridurre in modo significativo i tempi di addestramento per i miei modelli ML senza costi (pochi dollari l'ora).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.