Использование AWS для параллельной обработки с R - PullRequest
8 голосов
/ 30 августа 2011

Я хочу попробовать Kaggle Dunnhumby Challenge , создав модель для каждого клиента. Я хочу разделить данные на десять групп и использовать веб-сервисы Amazon (AWS) для построения моделей, используя R для десяти групп параллельно. Вот некоторые ссылки, с которыми я столкнулся:

Что я не понимаю, так это:

  • Как мне получить данные на десять узлов?
  • Как отправить и выполнить функции R на узлах?

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

PS Я использую бесплатную учетную запись использования в AWS, но было очень трудно установить R из источника на AMI Amazon Linux (множество ошибок из-за отсутствия заголовков, библиотек и других зависимостей).

Ответы [ 2 ]

8 голосов
/ 31 августа 2011

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

На несколько вопросов, на которые я бы ответил ДО Я начал пытаться выяснить, как запустить AWS (или любую другую систему):

  1. Сколько клиентов в данных обучения?
  2. Насколько велики данные обучения (что вы отправите в AWS)?
  3. Каково ожидаемое среднее время выполнения для подгонки модели к одному клиенту ... для всех прогонов?
  4. Когда вы подбираете модель для одного клиента, сколько данных генерируется (что вы получите от AWS)?

Просто взглянув на тренировочные данные, они не выглядят такими уж большими (~ 280 МБ). Так что это не проблема больших данных. Если на создание ваших моделей уходит много времени, это может быть проблемой "большого процессора", которую Segue может или не может быть хорошим инструментом, который поможет вам решить.

В ответ на ваш конкретный вопрос о том, как перенести данные в AWS, Segue делает это путем сериализации объекта списка, который вы предоставляете команде emrlapply (), загрузки сериализованного объекта в S3, а затем с помощью службы Elastic Map Reduce для Поток объекта через Hadoop. Но как пользователь Segue вам не нужно это знать. Вам просто нужно вызвать emrlapply () и передать ему данные списка (вероятно, список, где каждый элемент представляет собой матрицу или фрейм данных одного покупателя) и функцию (которую вы пишете в соответствии с выбранной моделью), и Segue принимает заботиться об остальном. Но имейте в виду, что самое первое, что делает Segue, когда вы вызываете emrlapply (), - это сериализация (иногда медленно) и загрузка ваших данных в S3. Поэтому, в зависимости от размера данных и скорости загрузки вашего интернет-соединения, это может быть медленным. Я согласен с утверждением Маркуса, что у вас «точно будут проблемы с передачей данных». Это явно ФУД. Я использую Segue для стохастических симуляций, которые отправляют / получают 300 МБ / 1 ГБ с некоторой регулярностью. Но я склонен запускать эти симуляции из экземпляра AWS, поэтому я отправляю и получаю данные из одной стойки AWS в другую, что делает все намного быстрее.

Если вы хотите провести анализ AWS и получить удовольствие от R в облаке, я рекомендую AMI Дрю Конвея для научных вычислений . Использование его AMI избавит вас от необходимости много устанавливать / собирать. Чтобы загрузить данные на ваш работающий компьютер, после настройки сертификатов ssh вы можете использовать scp для загрузки файлов в свой экземпляр.

Мне нравится запускать RStudio на моих экземплярах Amazon. Это потребует настройки пароля доступа к вашему экземпляру. Вокруг есть много ресурсов для помощи в этом.

8 голосов
/ 30 августа 2011

Вы можете собрать все вручную в AWS.Вы должны создать свой собственный компьютерный кластер Amazon с несколькими экземплярами.На веб-сайте Amazon есть хорошее учебное видео: http://www.youtube.com/watch?v=YfCgK1bmCjw

Но вам понадобится несколько часов, чтобы запустить все:

  • , начиная с 11 экземпляров EC2 (для каждой группы)один экземпляр + один экземпляр головки)
  • R и MPI на всех машинах (проверьте наличие предустановленных образов)
  • правильная настройка MPI (возможно, добавьте уровень безопасности)
  • в лучшем случаефайловый сервер, который будет подключен ко всем узлам (обмениваться данными)
  • с этой инфраструктурой. Лучшим решением является использование пакета snow или foreach (с Rmpi)

Segueпакет хорош, но у вас наверняка возникнут проблемы с передачей данных!

Самое простое решение - cloudnumbers.com (http://www.cloudnumbers.com). Эта платформа предоставляет вам легкий доступ к компьютерным кластерам в облаке. Вы можете протестировать 5часы бесплатно с небольшим компьютерным кластером в облаке! Проверьте слайды с конференции useR: http://cloudnumbers.com/hpc-news-from-the-user2011-conference

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...