Jeder hat Erfolg mit effizienter Datenparallelität, bei der Sie die identische Modelldefinition an mehrere GPUs senden, aber unterschiedliche Benutzerdaten an jede GPU senden?
Es sieht so aus, als wäre Dist-Keras vielversprechend. aber ich würde gerne Rückmeldungen über alle Ansätze in dieser Richtung hören.
Wir haben Benutzerverhaltensdaten: 100.000 Benutzer, 200 Felder (One-Hot-Vektoren), 30.000 Datensätze pro Benutzer. Wir haben eine RNN erstellt, die Keras auf Tensorflow verwendet, um die nächste Aktion (von mehr als 20 möglichen Aktionen) für nur einen Benutzer vorherzusagen. Es dauert ungefähr 30 Minuten, um auf 1 GPU zu trainieren. (Meine Box hat 8 GPUs). Jetzt möchten wir Modelle für alle 100k Benutzer erstellen.
Wir konnten die Datenparallelität mithilfe des Multi-GPU-Ansatzes für Einzelbenutzerdaten durchführen.
Da das Modell jedoch 30 Minuten pro Benutzer benötigt und es 100k Benutzer gibt, möchten wir die Daten nach Benutzern partitionieren und dasselbe Modell für alle Benutzerdaten auf verteilte Weise unter Verwendung eines Clusters ausführen und eine Modellausgabe für diesen Benutzer generieren .
Ich verwende derzeit Keras 2.1.x mit TensorFlow 1.4.
Dies ist nicht genau das, was Sie beschreiben, aber etwas, das funktionieren könnte, wäre, Scheiben jeder Charge zu nehmen und sie auf den verschiedenen GPUs separat zu trainieren, indem Sie das Modell nehmen und eine separate Konstruktion erstellen, die dies automatisch macht. p>
Sagen wir also, wir wollen das Modell parallelisieren und dann seine Stapel während des Trainings auf die Hardware aufteilen.
%Vor%Können Sie beim Training mit diesem Modell Geschwindigkeitsergebnisse melden?
Tags und Links python distributed tensorflow keras pyspark