2016-09-23 6 views

Antwort

8

Im Allgemeinen bevorzugen wir zwischen Graph-Replikation und In-Graph-Replikation für verteiltes Training, da die Inter-Graph-Replikation skalierbarer ist als die In-Graph-Replikation (die aktuelle Implementierung von). Das Hauptproblem bei der In-Graph-Replikation besteht darin, dass Sie derzeit mehrere Kopien der Diagrammstruktur für Ihr Netzwerk erstellen und diese an einem einzigen Ort (d. H. Dem verteilten Master) materialisieren müssen. Wenn Sie Hunderte von Replikaten haben, wird der Master dadurch zu einem Engpass. Im Gegensatz dazu verfügt jede Kopie in der Replikation zwischen Grafiken nur über eine Kopie des Diagramms, das lokal ausgeführt wird.

Der Nachteil der Zwischen-Graph-Replikation ist, dass es das synchrone Training erschwert, da Sie jetzt mehrere Trainings-Schleifen zur Synchronisation haben, anstatt eine einzelne Schleife mit einer einzigen Trainings-Operation. Die tf.train.SyncReplicasOptimizer, die in distributed Inception trainer verwendet wird, bietet eine Möglichkeit, synchrones Training mit der Replikation zwischen Grafiken auszuführen.

Wenn Sie jedoch die In-Graph-Replikation versuchen möchten, können Sie dies tun, indem Sie the line that assigns a device to each of the towers im CIFAR-10-Beispiel ändern. Anstatt den Tower verschiedenen GPUs im selben Prozess zuzuweisen, können Sie sie verschiedenen GPUs in verschiedenen Worker-Tasks zuweisen. Zum Beispiel:

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

Hallo, @mrry können Sie erklären, was genau Replik ist? Danke! –

+0

Hat das etwas mit der Replikation von [Parameter Server für verteiltes maschinelles Lernen] (https://www.cs.cmu.edu/~muli/file/ps.pdf) zu tun? –

+0

Ich fand diesen Artikel (https://clindatsci.com/blog/2017/5/31/distributed-tensorflow) hilfreich als kostenloses Material. –

Verwandte Themen