Лучший способ взаимодействия с сеансом R, работающим в облаке

10

У меня R работает на Amazon EC2, используя модифицированную версию биокондуктора AMI . В настоящее время я использую putty для ssh на своем сервере, запускаю R из командной строки, а затем копирую и вставляю свой скрипт из notepad ++ в мой сеанс putty.

Дело в том, что я ненавижу вырезать и вставлять. Это похоже на каменный век, и я иногда получаю странные проблемы с буферизацией, которые портят мой код. Я не могу использовать RStudio , потому что он не поддерживает многоядерный , от которого я сильно зависит.

Какой самый элегантный способ сделать это?

/ Edit: Спасибо за все отличные предложения. На данный момент я переключился на использование foreach с бэкэндом doRedis, который прекрасно работает на моем Mac, моем ПК и на amazon через RStudio. Это переключение стало довольно простым, когда я узнал, как написать функцию, которая эмулирует «lapply», используя «foreach». (Кроме того, doRedis - это круто!)

Zach
источник
2
Кстати, такой вопрос будет очень актуален для еще не созданной вычислительной науки SE .
Imo, screen + vim - выигрышная комбинация, но это может не понравиться всем.
Марк Класен

Ответы:

12

Я могу придумать несколько способов. Я сделал это немного, и вот способы, которые я нашел наиболее полезными:

  1. Emacs Daemon mode . ssh в экземпляр EC2 с ключом -X, чтобы он перенаправлял X windows обратно на ваш удаленный компьютер. Использование режима демона гарантирует, что вы не потеряете состояние, если ваше соединение истекло или обрывается
  2. Вместо использования многоядерного пакета используйте другой параллельный бэкэнд с пакетом foreach. Таким образом, вы можете использовать RStudio, что является фантастическим. Foreach - это здорово, потому что вы можете протестировать свой код не параллельно, а затем переключиться в параллельный режим, просто изменив свой бэкэнд (1 или 2 строки кода). Я рекомендую бэкэнд DoRedis. Вы в облаке, можете запустить несколько машин!
JD Long
источник
+1 для режима Emacs Daemon. В последнее время я довольно много занимаюсь ssh, и это выглядит действительно полезным.
richiemorrisroe
Есть ли простой способ эмулировать lapply, используя foreach? Я написал много кода, который можно использовать, и мне нравится многоядерный пакет, потому что я могу просто заменить lapply на mclapply. Есть ли «foreachlapply», или мне придется переписать много кода? Спасибо!
Зак
1
Ну, я doRedisмогу делать только вещи с Redis; Огромный вклад не единственная причина для расчетов HPC.
13

Самый удобный способ - просто установить VNC-сервер и некоторую легкую среду, такую ​​как XFCE, и создать себе виртуальный сеанс, который вы можете использовать из любой точки мира (он отключается), то есть что-то вроде этого: введите описание изображения здесь

Дополнительные плюсы в том, что вы можете использовать локальный буфер обмена на виртуальном рабочем столе и видеть R-графики намного быстрее, чем с помощью пересылки или копирования файлов изображений X11.

Требуется некоторое усилие, чтобы все правильно настроить (X init, ssh tunnel), но в интернете полно учебников, как это сделать.


источник
1
Еще лучше NX, который, как правило, значительно улучшил характеристики производительности.
Scw
Не могли бы вы понравиться учебник, или я должен просто посмотреть на лучшие результаты пары в Google?
Зак
3

Я не знаю, как работает Amazon EC2, поэтому, возможно, мои простые решения не работают. Но я обычно использую scp или sftp (через WinSCP, если я на Windows) или git.

Томас Левайн
источник
3

Я бы использовал rsync для отправки скриптов и файлов данных на сервер, затем «nohup Rscript myscript.R> output.out &» для запуска и, когда закончил, rsync для получения результатов.

Мартин
источник
2
screenили tmuxлучше, чем nohup- они также отсоединяют сценарий, чтобы он не был уничтожен при выходе из системы, но позволяют повторно присоединить сеанс и начать заново, даже с другого клиентского компьютера. tmuxможет даже использоваться в качестве своего рода оконного менеджера в текстовом режиме.
0

VIM + Tmux + VIM Слизь. Вы получаете лучший текстовый редактор и возможность отправлять код из редактора в командную строку R (как в Rstudio).

bdeonovic
источник
0

Я использую R Studio на EC2 все время благодаря AMI, созданным Луи Аслеттом . Вам не нужно знать какой-либо SSH или что-либо (кроме R, конечно). Вам просто нужна учетная запись EC2. Как упоминалось в одном из других ответов, R Studio поддерживает параллельные вычисления, например, с помощью пакета foreach . Это действительно позволяет использовать мощь EC2. Используя экземпляр, оптимизированный для вычислений (32 ядра), я смог значительно сократить время обучения для своих моделей ML практически без затрат (несколько долларов в час).

Antoine
источник