使用AWS与R进行并行处理

har*_*hal 8 parallel-processing r amazon-web-services

我想通过为每个客户建立一个模型来拍摄Kaggle Dunnhumby的挑战.我想将数据拆分为十个组,并使用Amazon Web服务(AWS)在十个组中并行使用R来构建模型.我遇到的一些相关链接是:

我不明白的是:

  • 如何将数据导入十个节点?
  • 如何在节点上发送和执行R功能?

如果你能分享建议和提示,指出我正确的方向,我将非常感激.

PS我在AWS上使用免费使用帐户,但在Amazon Linux AMI上从源代码安装R非常困难(由于缺少标题,库和其他依赖项而导致许多错误).

小智 8

您可以在AWS上手动构建所有内容.您必须使用多个实例构建自己的亚马逊计算机群集.亚马逊网站上有一个很好的教程视频: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

  • 马库斯,我很高兴你们在云计算的人都在这里.在R中有很多需要易于使用的并行抽象.但是,在发布时可能值得注意你与cloudnumber的关系.https://plus.google.com/100559870123495524422/about (3认同)

JD *_*ong 8

我不确定我能回答关于使用哪种方法的问题,但我可以解释一下我将如何思考这个问题.我是Segue的作者所以请记住这个偏见:)

我开始尝试弄清楚如何运行AWS(或任何其他系统)之前,我会回答几个问题:

  1. 培训数据中有多少客户?
  2. 培训数据有多大(您将发送给AWS的内容)?
  3. 将模型适合一个客户的预期平均运行时间是多少?所有运行?
  4. 当您的模型适合一个客户时,生成了多少数据(您将从AWS返回什么)?

只是浏览一下训练数据,它看起来不那么大(~280 MB).所以这不是一个"大数据"问题.如果您的模型需要很长时间才能创建,那么它可能是一个"大CPU"问题,Segue可能会或可能不会成为帮助您解决问题的好工具.

在回答有关如何将数据传输到AWS的具体问题时,Segue通过序列化您提供给emrlapply()命令的列表对象,将序列化对象上载到S3,然后使用Elastic Map Reduce服务来传输对象来实现此目的.通过Hadoop.但作为Segue的用户,您不需要知道这一点.你只需要调用emrlapply()并传递你的列表数据(可能是一个列表,其中每个元素是单个购物者数据的矩阵或数据框)和一个函数(你编写的一个函数适合你选择的模型)和Segue需要照顾其余的.但请记住,Segue在调用emrlapply()时所做的第一件事就是序列化(有时候是慢速)并将数据上传到S3.因此,根据数据的大小和互联网连接上传速度,这可能会很慢.我对Markus断言你将"肯定会遇到数据通信问题"提出质疑.这显然是FUD.我使用Segue进行随机模拟,发送/接收300MB/1GB并具有一定的规律性.但我倾向于从AWS实例运行这些模拟,因此我从一个AWS机架发送和接收另一个,这使得一切都更快.

如果您想在AWS上进行一些分析,并在云端了解R,我推荐Drew Conway的AMI for Scientific Computing.使用他的AMI将使您不必安装/构建太多.要将数据上传到正在运行的计算机,一旦设置了ssh证书,就可以使用scp将文件上载到实例.

我喜欢在我的Amazon实例上运行RStudio.这将需要设置您的实例的密码访问权限.有很多资源可以帮助解决这个问题.