2011-07-13 6 views
6

私は重い機械学習計算をする必要があります。私は、LAN上で少数のマシンがアイドル状態になっています。 hadoop/mapreduce/mahoutを使用して計算を分散するために必要なマシンは、これらの分散フレームワークがない単一のマシンで実行するよりもはるかに高速です。これは計算オーバーヘッドとゲインの実用的な問題です。私はちょうど2台のマシンの間で分配すると仮定しています。つまり、分配しないで、単純に1台のマシンで稼働するよりも悪くなります。実際には、Hadoop/MapReduce/Mahoutが非常に並列化可能な計算を高速化するために何台のマシンが必要ですか?

テクニカルノート:重い計算の中には、非常に並列化が可能なものもあります。それらのすべては、各マシンがそれ自身の生データのコピーを持っている限りです。

+0

文字列の長さはどのくらいですか? –

+0

@Shaggy Frog、ジェフフォスター申し訳ありませんが、私は最初は明確ではありませんでした。問題は「どれくらい早く進むことができる」ということではなく、「遅くなるのではなく、ずっと速くするために必要な機械の台数」でした。つまり、それは、ハープ・マップ、マップ・リダクション、マハウトを実行することの計算コストになります。私のせいではないのは間違いだ。 –

答えて

8

"プレーンな" JavaプログラムとHadoopベースのMapReduceベースの実装は、非常に異なるビーストであり、比較するのは難しいです。 Hadoopがあなたのプログラムを少しでも並列化するようなものではありません。それは上から下へ全く異なる形で書かれています。

Hadoopにはオーバーヘッドがあります。ジョブを開始し、マッパーやレデューサーのような作業を開始するだけのオーバーヘッドです。データのシリアライズ/デシリアライズ、ローカルでの書き込み、HDFSへの転送に多くの時間を費やしています。

Hadoopベースの実装は、常により多くのリソースを消費します。あなたがそれを避けることができない限り、避けるべきことです。あるマシンで非分散計算を実行できるのであれば、最も簡単な実践的なアドバイスは配布しないことです。あなた自身の問題を解決してください。

Mahoutの推薦者の場合、Hadoopの仕事は同じデータの非分散実装より2〜4倍多く計算されます。明らかに、それはアルゴリズムとチューニングの選択肢に大きく依存します。しかし、あなたに数字を教えてください:私は4台以下のマシンのHadoopクラスターでは気にしません。

明らかに、あなたの計算があなたのマシンの1つに収まらない場合は、あなたは配布するしかありません。次に、あなたが許可できる壁時計の時間と、どれだけのコンピューティングパワーを捧げることができるかというトレードオフがあります。 Amdahlの法律への言及は正しいが、Hadoopの重大なオーバーヘッドは考慮されていない。たとえば、N個の方法を並列化するには、少なくともN個のマッパー/レデューサーが必要で、マッパー/レデューサーのオーバーヘッドのN倍が必要です。固定スタートアップ/シャットダウン時間もあります。

6

Amdahl's Law

アムダールの法則は、並列化する場合、問題の大きさは同じままという仮定の下でのシリアルアルゴリズムとアルゴリズムの相対的な並列化実装の予想される高速化との関係、のためのモデルです。を参照してください。たとえば、ある問題のサイズに対して、並列化されたアルゴリズムの実装がアルゴリズムの操作の12%を任意の速さで実行できる場合(操作の残りの88%は並列化できません)、Amdahlの法則では、並列化されたバージョンの最大スピードアップ並列化されていない実装の1 /(1 - 0.12)= 1.136倍です。詳細なし

Picture of Equation それは、より詳細な答えを与えることは困難です。

1

これはすでに回答済みですが、私は帽子をリングに投げます。私はあなたに一般的な経験則を与えることはできません。パフォーマンスの向上は実際には多くの要因によって決まります。

  1. すべてのコンポーネント/アルゴリズムがどの程度並行/排他的であるか。
  2. データセット
  3. データセット[分割/マッピングを含め、還元/ concatinating]
  4. ネットワークトラフィックの事前および事後処理のサイズ

あなたは非常に接続されているアルゴリズムなどを持っている場合ベイズネット、ニューラルネット、マルコフ、PCA、EMの場合、ハントーププログラムの多くの時間は、インスタンスの処理、分割、再結合が行われます。 [1インスタンスあたり多数のノードがあると仮定します(1台以上のマシンで処理できます)。このような状況がある場合は、ネットワークトラフィックが問題になります。

経路探索やシミュレートされたアニーリングなどのアゴリズムがある場合、インスタンスをマップ/リダクションジョブに分けやすくなります。これらのタイプのアルゴリズムは非常に高速になります。

0

もう一つの側面は、あなたがmapreduceを使用するようになるボトルネックです。あなたが単一のマシンで合理的なデータサイズを持っていて、単にスピードブーストを検証すれば、GPU実装を使うことを好むことができます。有望な結果を得た単一のマシンでもセットアップと使用が簡単です。

関連する問題