Использование AWS для параллельной обработки с R
Я хочу взять на себя вызов Kaggle Dunnhumby, создав модель для каждого клиента. Я хочу разделить данные на десять групп и использовать веб-сервисы Amazon (AWS) для построения моделей, используя R для десяти групп параллельно. Некоторые релевантные ссылки, с которыми я столкнулся:
- Пакет segue;
- Презентация о параллельных веб-сервисах с использованием Amazon.
Что я не понимаю, так это:
- Как я могу получить данные в десять узлов?
- Как отправить и выполнить функции R на узлах?
Я был бы очень признателен, если бы вы могли поделиться предложениями и советами, чтобы указать мне правильное направление.
PS Я использую бесплатную учетную запись на AWS, но было очень трудно установить R из исходного кода на AMI Amazon Linux (множество ошибок из-за отсутствия заголовков, библиотек и других зависимостей).
2 ответа
Вы можете создать все вручную в AWS. Вы должны построить свой собственный компьютерный кластер Amazon с несколькими экземплярами. На веб-сайте Amazon есть хорошее учебное видео: http://www.youtube.com/watch?v=YfCgK1bmCjw
Но вам понадобится несколько часов, чтобы все заработало:
- запуск 11 экземпляров EC2 (для каждой группы один экземпляр + один экземпляр головы)
- R и MPI на всех машинах (проверьте наличие предустановленных образов)
- правильная настройка MPI (возможно, добавьте уровень безопасности)
- в лучшем случае файловый сервер, который будет подключен ко всем узлам (обмениваться данными)
- с этой инфраструктурой лучшее решение - использование пакета "снег" или "foreach" (с Rmpi)
Пакет segue хорош, но у вас точно будут проблемы с передачей данных!
Самым простым решением является cloudnumbers.com ( http://www.cloudnumbers.com/). Эта платформа предоставляет вам легкий доступ к компьютерным кластерам в облаке. Вы можете бесплатно протестировать 5 часов с небольшим компьютерным кластером в облаке! Проверьте слайды с конференции useR: http://cloudnumbers.com/hpc-news-from-the-user2011-conference
Я не уверен, что могу ответить на вопрос о том, какой метод использовать, но я могу объяснить, как бы я подумал над этим вопросом. Я автор Segue, так что имейте это в виду:)
Несколько вопросов, на которые я бы ответил, ДО того, как я начал пытаться выяснить, как запустить AWS (или любую другую систему):
- Сколько клиентов в данных обучения?
- Насколько велики данные обучения (что вы отправите в AWS)?
- Каково ожидаемое среднее время выполнения, чтобы модель соответствовала одному клиенту... все пробеги?
- Когда вы подбираете модель для одного клиента, сколько данных генерируется (что вы вернете из 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. Это потребует настройки пароля доступа к вашему экземпляру. Есть много ресурсов, чтобы помочь с этим.