2

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

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

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

只是想知道这通常是如何完成的(在几分钟/几秒内处理 TB),如果在云中进行试验是否更便宜/更好,还是我需要自己的硬件设置?

4

2 回答 2

1

不管你的云是什么品牌,云计算的整体理念是能够以灵活的方式扩大和缩小规模。

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

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

但请注意,并非所有云解决方案都是相同的,例如,Web 角色是一个高度专注于 Web 的节点,其主要目的是为 Web 请求提供服务,服务的请求越多,您支付的费用就越多。

而在虚拟角色中,几乎就像您获得了计算机系统的排他性,您可以将其用于任何您想要的东西,无论是 linux 还是 windows 操作系统,即使您没有以最佳状态使用它,系统也会继续运行。

总体而言,成本取决于您自己的方案以及它与您的需求的匹配程度。

于 2012-11-13T09:18:24.933 回答
1

我想这在很大程度上取决于你想做什么样的实验,目的是什么,持续多长时间。

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

如果您不确切知道您的要求是什么,那么我将使用 EC2 设置一个测试台,以更好地了解您想要做什么以及需要在一段时间内完成多少 grunt/memory你需要。

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

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

顺便说一句,我强烈推荐 GitHub 上的scikit-learn项目用于机器学习。它是用 Python 编写的,但大多数矩阵运算都是在 Fortran 或 C 库中完成的,因此速度非常快。开发者社区对该项目也非常活跃。另一个可能更平易近人(取决于您的专业水平)的好库是NLTK。如果您不熟悉将所有内容都视为矩阵,那么它远没有那么快,但更有意义。

更新

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

也就是说,我不知道使用 EC2 的实际成本是多少。我从来没有使用过它们。

于 2012-11-13T09:17:23.337 回答