2016-09-23 3 views

答えて

8

一般的に言えば、グラフ間レプリケーションは(現在のインプリメンテーションの)グラフ内レプリケーションよりもスケーラビリティが高いため、分散トレーニングのイングラフレプリケーションでのグラフ間レプリケーションを優先します。グラフ内の複製の主な問題は、ネットワークの複数のグラフ構造を作成し、単一の場所(つまり、分散マスター)で実現することです。何百ものレプリカがあると、マスターがボトルネックになります。対照的に、グラフ間のレプリケーションでは、各レプリカにはローカルに実行されるグラフのコピーしかありません。

グラフ間レプリケーションの欠点は、1回のトレーニング操作で1つのループではなく、複数のトレーニングループを同期させることができるため、同期トレーニングが難しくなることです。 distributed Inception trainerで使用されているtf.train.SyncReplicasOptimizerは、グラフ間レプリケーションで同期トレーニングを実行する1つの方法を提供します。

ただし、グラフの複製を試行する場合は、CIFAR-10の例でthe line that assigns a device to each of the towersを変更してください。タワーを同じプロセス内の異なるGPUに割り当てる代わりに、異なる作業者タスクの異なるGPUにタワーを割り当てることができます。例:

worker_devices = ["/job:worker/task:0/gpu:0", ..., "/job:worker/task:7/gpu:0"] 

for worker_device in worker_devices: 
    with tf.device(worker_device): 
    # Execute code for building the model replica. 
+0

こんにちは、@正確にレプリカは何ですか?どうも! –

+0

[Distributed Machine Learning用パラメータサーバ](https://www.cs.cmu.edu/~muli/file/ps.pdf)の論文の中で複製と関係がありますか? –

+0

この資料(https://clindatsci.com/blog/2017/5/31/distributed-tensorflow)は、補足資料として役立ちます。 –

関連する問題