Tensorflow und Multiprocessing: die Übergabe von Sessions

Ich habe vor kurzem an einem Projekt arbeiten, mit einem neuronalen Netzwerk für die virtuellen Roboter zu Steuern. Ich verwendet tensorflow zu Programmieren und es läuft reibungslos. Bisher verwendete ich die sequentiellen Simulationen zu evaluieren, wie gut das neuronale Netz ist, aber ich wollen, führen Sie mehrere Simulationen parallel zu reduzieren die Menge der Zeit es braucht, um Informationen zu bekommen.

Dazu bin ich importieren python ' s multiprocessing Paket. Anfangs war ich vorbei an der sess-variable (sess=tf.Session()) zu einer Funktion, die ausgeführt würde, die simulation. Jedoch, sobald ich die bekommen eine Anweisung, die verwendet diese sess variable, wird der Prozess beendet, ohne eine Warnung. Nach der Suche rund um für ein bisschen fand ich diese beiden Beiträge:
Tensorflow: Übergabe einer Sitzung zu einem python-Multiprozess -
und Ausführen mehrerer tensorflow-Sitzungen gleichzeitig

Während Sie sind eng miteinander verwandt, ich war nicht in der Lage, herauszufinden, wie es funktioniert. Ich habe versucht das erstellen einer Sitzung für jeden einzelnen Prozess, und die Zuordnung der GEWICHTE des neuronalen Netzes, um seine trainierbare Parameter, ohne Erfolg. Ich habe auch versucht das speichern der session in eine Datei und dann laden Sie es in einem Prozess, aber kein Glück es entweder.

Hat jemand schon passieren können, eine session (oder Klone von sessions) zu mehreren Prozessen?

Dank.

  • Ich vermute, dass Sie nicht passieren können Klone von Sitzungen zwischen Prozessen, weil dort der Staat in C Adressraum, dass Python nicht wissen, wie zu kopieren. Aber brand-neue Sitzungen in jedem neuen Prozess sollte funktionieren. Ich habe nicht verwendet multiprocessing, aber ich habe oft paar Prozesse offen parallel zu halten, dass Ihre eigenen TensorFlow Sitzungen
  • Der zweite link, den ich zur Verfügung gestellt führt mehrere Prozesse parallel aus, aber das Problem ist, dass ich müssen dem neuronalen Netz werden die gleichen für ALLE Prozesse.
  • Sie können in der Lage sein zu arbeiten, um es durch die Verwendung TensorFlow verteilt -- dh, eine lokale Arbeiter-und ps und erstellen Sie mehrere sessions parallel, wie tf.Session("grpc://localhost:2222") github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/...
  • jede chance, die Sie ausarbeiten könnte ein bisschen? Ich bin Implementierung parallel TRPO (Viva RL) aber nun zusammen mit dem minimal-Beispiel [ gist.github.com/dd210/e8bad8eadc19f44cafcdc5313a39a53f ]. Grundsätzlich würde ich gerne starten Sie Sitzung in der Haupt-Prozess, einige Berechnungen durchzuführen, dann transfer-Netzwerk zu einem anderen X parallele Prozesse und machen einige Berechnungen parallel gibt. Wiederholen Sie dann Y-mal. Aber ich blieb stecken mit diesem minimal-Beispiel, weil es scheint, dass ich brauche, um zu arbeiten, in einer Sitzung die ganze Zeit. Offizielle tutorial ist ein <bit> vage. Über jede Hilfe und Beratung.
  • Multiprocessing zu sein scheint semi-broken mit TensorFlow. Hier ist ein Beispiel für die Verwendung von verteilten tensorflow -- gist.github.com/yaroslavvb/ea1b1bae0a75c4aae593df7eca72d9ca
  • BTW, ich habe Menschen gesehen, die TF mit dem MPI vor, es ist gut, wenn Sie starten Prozesse und erstellen-Sitzungen, die in jedem Prozess separat und verwenden MPI zu kommunizieren, im Gegensatz zu importieren tensorflow -> erstellen von session -> Gabel
  • Genau! Ich war einer dieser Personen, aber es ist eindeutig sehr seltsam Abhilfe.. Und nicht perfekte Passform für meine Aufgabe. Danke für das Beispiel, ich werde das prüfen.

InformationsquelleAutor MrRed | 2016-04-13
Schreibe einen Kommentar