2016-07-04 5 views
3

Ich folgte dem ImageNet verteilte TF-Train Beispiel.Distributed Tensorflow-Parameter-Server und Arbeiter

Ich kann nicht verstehen, wie die Verteilung von Daten stattfindet, wenn dieses Beispiel auf 2 verschiedenen Arbeitern ausgeführt wird? Theoretisch sollten verschiedene Arbeiter den unterschiedlichen Teil der Daten sehen. Welcher Teil des Codes teilt auch die Parameter mit, die den Parameterserver weitergeben sollen? Wie im Multi-GPU-Beispiel gibt es einen expliziten Abschnitt für die 'cpu: 0'.

Antwort

4

Die verschiedenen Arbeiter sehen verschiedene Teile der Daten, indem sie aus einer einzelnen Warteschlange vorverarbeiteter Bilder einen Minibatch löschen. Im verteilten Setup zum Trainieren des Imaganet-Modells werden die Eingabebilder durch mehrere Threads vorverarbeitet, und die vorverarbeiteten Bilder werden in einer einzelnen Datei gespeichert. Sie können nachin this Datei suchen, um zu sehen, wie dies gemacht wird. Die mehreren Arbeiter sind als "Inception-Türme" organisiert und jeder Turm entnimmt einen Mini-Stapel von Bildern aus derselben Warteschlange und erhält somit verschiedene Teile der Eingabe. Das Bild here beantwortet den zweiten Teil Ihrer Frage. Suchen Sie nach slim.variables.VariableDeviceChooser in this Datei. Die Logik dort stellt sicher, dass Variable Objekte gleichmäßig Arbeitern zugewiesen sind, die als Parameter-Server fungieren. Alle anderen Arbeiter, die das eigentliche Training machen, holen die Variablen zu Beginn eines Schrittes und aktualisieren sie am Ende des Schrittes.