19

我正在寻找构建一个 Web 应用程序,该应用程序需要在 R 中按需运行资源密集型 MCMC(马尔可夫链蒙特卡罗)计算,以便为用户生成一些概率图。

约束:

  1. 显然我不想在与 Web 应用前端相同的服务器上运行资源密集型计算,因此需要将这些任务交给工作实例

  2. 这些计算需要大量的 CPU 才能运行,我希望尽可能降低延迟(希望是几秒钟,而不是几分钟),所以我更愿意在更强大的硬件上运行计算。

  3. 我负担不起以约 66 美分/小时 x 24 小时/天的速度运行强大的 EC2 实例,因此可能需要按需或现场请求实例。

以下是我提出的选项:

  1. 每天 24 小时运行一个廉价且负担得起的工作实例,该实例一次执行一项任务,由 Amazon SWF(或 SQS)管理。

    缺点:

    • 高延迟- 更便宜的硬件,更长的等待时间。



  2. 为每个任务生成一个更强大的工作实例(只要将作业添加到队列中就会启动)并在完成时终止实例。

    缺点:

    • 昂贵/浪费- 我每次都要在服务器上支付一个小时,并且只用几秒钟来计算

    • 启动开销——按需启动一个新的 EC2 实例会引入不可忽略的延迟(抵消使用更强大硬件的全部目的)吗?



  3. 与 #2 类似,但 EC2 现货请求出价低。

    缺点:

    • 启动开销- 见 #2

    • 不一致?- 我以前从未处理过现场请求,所以我不知道这样的解决方案会有多不稳定或动手操作......我是否必须不断调整我的出价以确保我仍然可以在高峰时间完成任务? 另外,我想我必须密切监视我的流程,以确保它们在计算过程中不会被中断。



  4. 某种混合解决方案,我主动监控强大的硬件工作实例及其负载,并每小时智能地启动和终止实例,以保持成本和可用性的最佳平衡

    • 复杂且昂贵的设置——除非有一个很好的托管服务来处理这样的事情,否则我必须自己设置所有的基础设施......

我希望有一些服务可以让我按分钟而不是按小时为高度可用的按需硬件付费。

所以我的问题如下:

  • 你会如何建议解决这个问题?

  • 是否有一个很好的 EC2 实例管理解决方案可以位于 Amazon SWF 之上并帮助我进行负载平衡和终止空闲工作人员?

  • 现场请求投标会解决我的问题,还是更适合不一定需要立即完成的任务?

4

2 回答 2

4

您可能不知道还有另一种选择。实际上我只是偶然发现了它: http: //multyvac.com

我没有使用它的经验(所以我不能保证),但它看起来像是我见过的第一个真正提供真正“实用计算”的解决方案。它从 Python 开始,但现在支持任何语言。

于 2012-06-21T03:17:56.443 回答
4

我希望有一些服务可以让我按分钟而不是按小时为高度可用的按需硬件付费。

该服务是AWS Lambda,当您提出问题时它不可用:

Lambda 在高可用性计算基础架构上运行您的代码并执行计算资源的所有管理,包括服务器和操作系统维护、容量配置和自动扩展

定价

根据对函数的请求数量和代码执行时间向您收费

持续时间从您的代码开始执行到它返回或以其他方式终止的时间计算,四舍五入到最接近的 100ms

Lambda 免费套餐包括每月 100 万个免费请求和每月400,000 GB 秒的计算时间。

您还可以使用HTTP 端点包装 Lambda 函数,可能会从您的应用程序中删除该层:

您可以通过使用 Amazon API Gateway 定义自定义 RESTful API 通过 HTTPS 调用 Lambda 函数。这为您的函数提供了一个端点,可以响应 GET、PUT 和 POST 等 REST 调用。阅读有关将 AWS Lambda 与 Amazon API Gateway 结合使用的更多信息。

警告:Lambda 目前只支持 JavaScript、Java 和 Python,所以我不确定你将如何让 R 工作。您可能需要在这些运行时之一中托管 R。

于 2015-08-03T08:51:44.290 回答