2017-08-22 3 views
-1

Ich arbeite an einem sehr breiten und flachen Berechnungsgraphen mit einer relativ kleinen Anzahl von gemeinsamen Parametern auf einer einzigen Maschine. Ich möchte den Graphen breiter machen, aber ich habe keinen Speicher mehr. Nach meinem Verständnis ist es bei der Verwendung von Distributed Tensorflow möglich, den Graphen unter Verwendung des Kontextmanagers tf.device in Worker aufzuteilen. Es ist jedoch nicht klar, wie mit dem Verlust umzugehen ist, der nur durch Ausführen des gesamten Graphen und des Trainingsvorgangs berechnet werden kann.Verteiltes Training eines breiten und flachen Modells

Was wäre die richtige Strategie, um die Parameter für diese Art von Modell zu trainieren?

Antwort

1

TensorFlow basiert auf dem Konzept eines Datenflussdiagramms. Sie definieren ein Diagramm, das aus Variablen und Ops besteht, und Sie können diese Variablen und Ops auf verschiedenen Servern und/oder Geräten platzieren. Wenn Sie session.Run aufrufen, übergeben Sie Daten an das Diagramm, und jede Operation zwischen den Eingängen (angegeben in feed_dict) und den Ausgaben (angegeben in dem fetches-Argument zu session.Run) wird ausgeführt, unabhängig davon, wo sich diese Ops befinden. Natürlich verursacht die Weitergabe von Daten zwischen Servern einen Kommunikationsaufwand, aber dieser Aufwand wird oft dadurch ausgeglichen, dass mehrere gleichzeitige Mitarbeiter gleichzeitig Berechnungen durchführen können.

Kurz gesagt, auch wenn Sie Ops auf andere Server setzen, können Sie den Verlust über den gesamten Graphen berechnen.

Hier ist ein Tutorial in großem Maßstab lineare Modelle: https://www.tensorflow.org/tutorials/linear

Und hier ist ein Tutorial über verteilte Ausbildung in TensorFlow: https://www.tensorflow.org/deploy/distributed

Verwandte Themen