2017-04-10 12 views
0

分散GoogleグーグルクラウドMLでコードを実行できましたが、実行するとそのデータがクラスタ内の各マシンに複製されますが、各マシンにデータを分散したい。Googleのクラウド上のワーカー間でデータを配信する

クラスタ内の各マシンにクラウドMLでデータを配信するにはどうすればよいですか? 助けてください!!!!

+0

非同期分散トレーニングを行っていますか?あなたが解決しようとしている課題についてもう少し詳しく知ることが役に立ちます。 – rhaertel80

答えて

0

通常、分散型非同期トレーニングでは、各作業者にデータの重複しないパーティションを割り当てる代わりに、各作業者がすべてのデータを処理する必要があります。

非同期トレーニングでは、パラメータはすべてのワーカーからの更新を受信するのを待たずに、更新を処理します。したがって、ある従業員が他の従業員よりも遅い場合、他の従業員よりも更新が少なくなります。各従業員が独自のデータにのみアクセスできるようにデータを分割すると、パラメータの更新が少なくなるため、低速の従業員に属するサンプルを効果的に減量することになります。それはあなたのモデルの品質と汎用性に悪影響を及ぼします。

synchronous trainingを使用してすべてのワーカーを強制的に更新する場合は、ワーカー間でデータを安全にパーティション分割できますが、各ステップがすべてのワーカーからの更新を待たなければならないため、すべてのワーカーからの更新を強制しない場合、スローワーカーの例は完全に無視される可能性があるため、実際には非同期トレーニングよりも悪化する可能性があります。

より堅牢であるため、非同期トレーニングがより一般的です。

幸いにも、すべての労働者がすべてのデータを調べることは、一般的には分かりやすいことです。データ(herehere)をランダム化している限り、(すべてのワーカーに渡って)任意の時点で調べられている例は、完全なデータセットから置き換えてランダムにサンプリングされたbatch_size * num_workersの例です。

非同期トレーニングでデータを読み取るための標準的なアプローチは、実際には、特に分散型トレーニングではしばしば十分に機能します。しかし、非常に多くのデータがある場合は、いくつかのエポックのエフォochを実行するだけです。モデルには、各サンプルを同じ回数(置換なしでサンプリング)することでメリットが得られます。それはより複雑で堅牢ではありませんが、実行できます。それは別の投稿です。

関連する問題