2

I would like to try testing NLP tools against dumps of the web and other corpora, sometimes larger than 4 TB.

If I run this on a mac it's very slow. What is the best way to speed up this process?

  • deploying to EC2/Heroku and scaling up servers
  • buying hardware and creating a local setup

Just want to know how this is usually done (processing terabytes in a matter of minutes/seconds), if it's cheaper/better to experiment with this in the cloud, or do I need my own hardware setup?

4

2 に答える 2

1

クラウドのブランドに関係なく、クラウド コンピューティングの全体的な考え方は、柔軟な方法でスケールアップおよびスケールダウンできるようにすることです。

企業環境では、常に同じ量のコンピューティング リソースが必要になるシナリオがあるかもしれません。そのため、既にそれらを持っている場合、提供される柔軟性が必要ないだけなので、クラウドを使用するのはかなり難しいケースです。

一方、処理タスクがあまり予測できない場合、最適なソリューションはクラウドです。これは、より多くのコンピューティング パワーを使用するとより多くの料金を支払うことができ、それほど多くのパワーが必要ない場合には料金を低く抑えることができるからです。

ただし、すべてのクラウド ソリューションが同じであるとは限らないことを考慮してください。たとえば、Web ロールは、Web 要求を処理することを主な目的とする高度に Web 専用のノードであり、処理される要求が多いほど料金が高くなります。

一方、仮想の役割では、Linux や Windows OS など、好きなように使用できるコンピューター システムの独占権が与えられているようなものです。システムは、最高の状態で使用していなくても実行され続けます。

全体として、コストは、独自のシナリオと、ニーズにどれだけ適合するかによって異なります。

于 2012-11-13T09:18:24.933 に答える
1

どのような実験をしたいのか、どのような目的で、どのくらいの期間行うのかによって、かなり異なると思います。

ハードウェアを購入して独自のクラスターを実行することを検討している場合は、コンピューティング ノードを管理するために Hadoop や Storm のようなものが必要になるでしょう。ほんの数秒で 4 TB のデータを通過することがどれほど実現可能かはわかりませんが、それは実行したい処理の種類によって異なります。4TB コーパス内の単語の頻度を数えることは (Mac でも) 非常に簡単ですが、SVM を構築したり、大量に LDA のようなことをしたりするのはそうではありません。遭遇する問題の 1 つは、そのすべてを収めるのに十分なメモリがないということです。そのため、ディスクからメソッドを実行できるライブラリが必要になります。

要件が正確にわからない場合は、EC2 を使用してテスト リグをセットアップし、何をしたいのか、時間内にどれだけのうなり声/メモリを実行する必要があるかをよりよく理解します。あなたが必要とします。

私たちは最近、それぞれが 256Gb のメモリと数テラバイトのディスク容量を備えた 128 コアの 2 つのコンピューティング ノードを購入しました。これらは AMD interlagos マシンです。つまり、コンピューティング クラスターには既にインフィニバンド ストレージがあるため、インフラストラクチャ全体ではなく、それに接続して 2 つのコンピューティング ノードを購入するだけで済みました。

ここで行うべきことは、数ギガバイトなどの小さなデータ セットから始めることです。これで Mac で作業を開始できます。データとさまざまな方法を試して、何が機能し、何が機能しないかを把握してから、パイプラインをクラウドに移動し、より多くのデータで実行できます。単一のサンプルで実験を開始したくない場合は、完全なコーパスのさまざまな部分からいつでも複数のサンプルを取得できます。サンプル サイズを、自分のワークステーションで管理できるサイズに抑えてから開始してください。

余談ですが、機械学習には GitHubのscikit-learnプロジェクトを強くお勧めします。Python で書かれていますが、ほとんどの行列演算は Fortran または C ライブラリで行われるため、かなり高速です。開発者コミュニティもこのプロジェクトで非常に活発です。おそらくもう少し親しみやすい (専門知識のレベルに応じて) 別の優れたライブラリはNLTKです。それほど高速ではありませんが、すべてをマトリックスとして考えることに慣れていない場合は、もう少し理にかなっています。

アップデート

言い忘れたことの 1 つは、プロジェクトの実行時間です。別の言い方をすれば、専用ハードウェアをどれくらいの期間使用できるかということです。今後 10 年間 EU 議会で使用される予定のプロジェクトであれば、間違いなくハードウェアを購入する必要があります。NLP に慣れるためのプロジェクトである場合、独自のクラウド コンピューティング レンタル サービスを開始することも計画していない限り、お金を出すのは少し冗長かもしれません :)。

とはいえ、EC2 を使用することの実際のコストがこのようなものであるかどうかはわかりません。私はそれらを使用する必要はありませんでした。

于 2012-11-13T09:17:23.337 に答える