Найкращий спосіб взаємодії з R-сеансом, що працює в хмарі


10

У мене працює R на Amazon EC2, використовуючи модифіковану версію біопровідника AMI . В даний час я використовую шпаклівку для ssh на своєму сервері, починаючи з командного рядка, а потім копіюю та вставляю мій сценарій із блокнота ++ у мій сеанс шпаклівки.

Річ у тому, що я ненавиджу різання та обклеювання. Це здається кам'яним віком, і я час від часу отримую дивні проблеми з буферизацією, які накручують код. Я не можу використовувати RStudio , оскільки він не підтримує багатоядерність , від якої я сильно залежу.

Який більш елегантний спосіб це зробити?

/ Редагувати: Дякую за всі чудові пропозиції. Поки що я перейшов до використання foreach з доповненням doRedis, який чудово працює на моєму Mac, моєму ПК та на Amazon через RStudio. Цей перемикач був досить простим, коли я навчився писати функцію, яка імітує "лаппе" за допомогою "foreach". (Крім того, doRedis є приголомшливим!)


2
BTW Таке питання було б дуже актуальним, поки ще не створено обчислювальна наука SE .


Imo, screen + vim - це виграшне комбо, але це може подобатися не всім.
Marc Claesen

Відповіді:


12

Я можу придумати кілька способів. Я зробив це зовсім небагато, і ось способи, які мені здаються найкориснішими:

  1. Режим Emacs Daemon . ssh в екземпляр EC2 за допомогою перемикача -X, щоб він пересилав X windows назад на вашу машину для видалення. Використання демонового режиму гарантує, що ви не втратите стан, якщо час з'єднання припиниться або перестане
  2. Замість того, щоб використовувати багатоядерний пакет, використовуйте інший паралельний сервер із пакетом foreach. Таким чином ви можете використовувати RStudio, що є фантастично. Foreach чудовий тим, що ви можете протестувати свій код у непаралельному, а потім перейти в паралельний режим, просто змінивши свій бекенд (1 або 2 рядки коду). Я рекомендую сервіс doRedis. Ви в хмарі, можливо, також вистрілите кілька машин!

+1 для режиму Emacs Daemon Останнім часом я робив зовсім небагато ssh, і це виглядає дуже корисно.
richiemorrisroe

Чи є простий спосіб наслідувати лаппе, використовуючи foreach? Я написав багато коду, який застосовується за допомогою важелів, і мені подобається багатоядерний пакет, тому що я можу просто замінити lapply на mclapply. Чи є "foreachlapply", або мені доведеться переписати багато коду? Дякую!
Зак

1
Що ж, doRedisможна лише редагувати речі; величезний внесок - не єдина причина для розрахунків 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 Slime. Ви отримуєте найбільший текстовий редактор і можливість надсилати код з редактора в командний рядок R (як і в Rstudio).


0

Я використовую R Studio на EC2 весь час завдяки AMI , створеному Луї Аслеттом . Ви не повинні знати жодного SSH або нічого іншого (крім R, звичайно). Вам просто потрібен рахунок EC2. Як було сказано в одній з інших відповідей, R Studio підтримує паралельні обчислення, наприклад, через пакет foreach . Це дійсно дозволяє використовувати потужність EC2. Використовуючи оптимізований екземпляр (32 ядра), я зміг значно скоротити час навчання для моїх моделей ML майже без витрат (кілька доларів на годину).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.