如何便宜地处理大量数据(本地设置或云)?

时间:2012-11-13 09:00:14

标签: heroku nlp cloud scaling bigdata

我想尝试针对网络和其他语料库的转储测试NLP工具,有时大于4 TB。

如果我在Mac上运行它很慢。加快这一过程的最佳方法是什么?

  • 部署到EC2 / Heroku并扩展服务器
  • 购买硬件并创建本地设置

只是想知道这通常是怎么做的(在几分钟/秒内处理太字节),如果在云中试验这个更便宜/更好,还是我需要自己的硬件设置?

2 个答案:

答案 0 :(得分:1)

我认为这很大程度上取决于你想做什么样的实验,目的和持续时间。

如果您正在考虑购买硬件并运行自己的集群,那么您可能需要Hadoop或Storm之类的东西来管理计算节点。我不知道在几秒钟内通过4TB数据是多么可行,但这又取决于你想要做的处理类型。计算4TB语料库中单词的频率应该非常简单(甚至是你的mac),但是建立SVM或者在批次上做类似LDA的事情不会。您将遇到的一个问题是,您将没有足够的内存来满足所有这些需求,因此您需要一个可以从磁盘上运行这些方法的库。

如果您不确切知道您的要求是什么,那么我会使用EC2来设置测试装备,以便更好地了解您想要做什么以及需要完成多少咕噜/内存。你需要的时间。

我们最近购买了两个计算节点128个核心,每个核心具有256Gb内存和几TB的磁盘空间,我认为它大约是2万英镑左右。这些是AMD interlagos机器。这就是说计算集群已经有了infiniband存储,所以我们只需要连接到那个并且只购买两个计算节点,而不是整个基础架构。

这里显而易见的事情是从一个较小的数据集开始,比如几千兆字节。这将让您开始使用Mac,您可以尝试使用数据和不同方法来了解哪些有效,哪些无效,然后将管道移至云端,并使用更多数据运行它。如果您不想使用单个样本开始实验,您可以始终从整个语料库的不同部分获取多个样本,只需将样本大小保持在您可以在自己的工作站上管理的内容开始。< / p>

顺便说一句,我强烈推荐GitHub上的scikit-learn项目进行机器学习。它是用Python编写的,但是大多数矩阵操作都是在Fortran或C库中完成的,因此速度非常快。开发人员社区也非常积极地参与该项目。另一个可能更平易近人的好图书馆(取决于你的专业水平)是NLTK。它远没有那么快,但如果你不熟悉将所有东西都想象成矩阵,那就更有意义了。

<强>更新

我忘记提到的一件事是项目运行的时间。换句话说,您可以在专业硬件上使用多长时间。如果这是一个应该在未来10年内服务于欧盟议会的项目,那么你一定要购买硬件。如果这是一个让你熟悉NLP的项目,那么分钱可能有点多余,除非你还计划开始自己的云计算租赁服务:)。

那就是说,我不知道使用EC2的现实成本是什么样的。我从来没有使用它们。

答案 1 :(得分:1)

无论您的云计算品牌如何,云计算的整体理念是能够以灵活的方式扩展和缩小规模。

在企业环境中,您可能会遇到一直需要相同数量的计算资源的场景,因此如果您已经拥有它们,那么使用云是一个相当困难的情况,因为您根本不需要提供灵活性。

另一方面,如果您的处理任务不是很可预测,那么您最好的解决方案就是云,因为当您使用更多计算能力时,您将能够支付更多费用,然后在您不需要更多功率时支付更少费用

但是,考虑到并非所有的云解决方案都是相同的,例如,Web角色是一个高度网络专用的节点,其主要目的是提供Web请求,提供的请求越多,您支付的越多。

在虚拟角色中,几乎就像你被赋予了计算机系统的排他性,可以用于任何你想要的东西,无论是Linux还是Windows操作系统,即使你没有在最好的。

总体而言,成本取决于您自己的情况以及它如何适合您的需求。