Подтвердить что ты не робот

Amazon EC2 Работники по требованию для краткосрочных задач

Я ищу для создания веб-приложения, которое должно запускать ресурсоемкие MCMC (цепь Маркова Монте-Карло) расчеты по требованию в R для генерации некоторых вероятностных графов для пользователя.

Ограничения:

  • Очевидно, что я не хочу запускать ресурсоемкие вычисления на том же сервере, что и внешний интерфейс веб-приложения, поэтому эти задачи должны быть переданы рабочему экземпляру.

  • Эти вычисления требуют большого количества CPU для запуска, и я хотел бы поддерживать латентность как можно ниже (надеюсь, секунды, а не минуты), поэтому я предпочел бы выполнять вычисления на более жестком оборудовании.

  • Я не могу позволить себе запустить мощный экземпляр EC2 со скоростью ~ 66 ¢/час x 24 часа в сутки, поэтому возможно по запросу или экземпляры запроса на поиск.

Вот варианты, которые я придумал:

  • Запустите дешевый, доступный рабочий экземпляр 24 часа в день, который принимает одна задача в то время управляется Amazon SWF (или SQS).


    Минусы:

    • высокая латентность - более дешевое оборудование, более длительное время ожидания.



  • Создайте более крупный рабочий экземпляр для каждой задачи (разверните его каждый раз, когда задание добавляется в очередь) и завершает экземпляр после завершения.


    Минусы:

    • дорогой/расточительный - я бы заплатил за час на сервере каждый раз и только используя секунды для моего расчета

    • накладные расходы на запуск - разворачивает новый экземпляр EC2 по требованию вводят незначительную задержку (компенсируя целая цель использования более жесткого оборудования)?



  • Как и # 2, но с точными запросами EC2 с низкой ставкой.


    Минусы:

    • накладные расходы на запуск - см. № 2

    • inconsistancy? - Я никогда раньше не работал с точечными запросами, поэтому я понятия не имею, насколько изменчивым или практическим такое решение было бы... я должен постоянно корректировать свои ставки, чтобы сделать конечно, я все еще могу выполнять задания в часы пик? Кроме того, я полагаю Мне нужно будет внимательно следить за моими процессами, чтобы убедиться, что они не прерванный средний расчет.



  • Какое-то гибридное решение, где я активно контролирую рабочему корпусу и их нагрузкам и разумно разворачивать и заканчивать экземпляры в час для поддержания оптимального баланс стоимости и доступности


    Минусы:

    • сложная и дорогостоящая настройка - если нет хороших управляемых службы там, чтобы обрабатывать такие вещи, я должен был бы установить все всю эту инфраструктуру самостоятельно...

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

Итак, мои вопросы таковы:

  • Как бы вы рекомендовали решить эту проблему?

  • Есть ли хорошее решение для управления экземплярами EC2, которое может сидеть на вершине Amazon SWF и помогать мне балансировать нагрузку и прекращать работу бездействия?

  • Могут ли ставки-запросы ставки решить мою проблему или они больше подходят для задач, которые не обязательно должны быть завершены сразу?

4b9b3361

Ответ 1

Есть еще один вариант, о котором вы можете не знать. Я на самом деле просто наткнулся на это: http://multyvac.com

У меня нет опыта его использования (поэтому я не могу ручаться за него), но похоже, что первое решение, которое я видел, действительно предлагает настоящие "вычисления полезности". Это началось только с Python, но теперь поддерживает любой язык.

Ответ 2

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

Этот сервис AWS Lambda, который не был доступен, когда вы задали вопрос:

Lambda запускает ваш код в высокопроизводительной вычислительной инфраструктуре и выполняет все администрирование вычислительных ресурсов, включая обслуживание серверов и операционной системы, настройку емкости и автоматическое масштабирование

Pricing:

Вы платите в зависимости от количества запросов на ваши функции и того, как выполняется ваш код

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

Вы также можете обернуть функцию Lambda с помощью конечной точки HTTP, возможно, удалив этот слой из вашего приложения:

Вы можете вызвать функцию Lambda через HTTPS, указав настраиваемый API RESTful, используя Amazon API Gateway. Это дает вам конечную точку для вашей функции, которая может реагировать на вызовы REST, такие как GET, PUT и POST. Подробнее об использовании AWS Lambda с шлюзом API Amazon.

Предостережение: Lambda в настоящее время поддерживает только JavaScript, Java и Python, поэтому я не уверен, как вы можете заставить R работать. Возможно, вам потребуется разместить R в одном из этих промежутков времени.