0

Nach dem Spielen mit der aktuellen verteilte Trainingsimplementierung für eine Weile, ich denke, es sieht jede GPU als separate Arbeiter.Es ist jedoch üblich, jetzt 2 ~ 4 GPUs in einer Box zu haben . Ist es nicht besser, die Single-Box-Multi-GPU-Methodologie zu verwenden, um durchschnittliche Gradienten zuerst in einer einzelnen Box zu berechnen und dann über mehrere Knoten hinweg zu synchronisieren? Auf diese Weise wird der E/A-Verkehr erheblich erleichtert, was immer den Flaschenhals in der Datenparallelität darstellt.Tensorflow verteilte Ausbildung Hybrid mit Multi-GPU-Methodik

Mir wurde gesagt, dass es mit der aktuellen Implementierung möglich ist, alle GPUs in einer Box als Arbeiter zu haben, aber ich bin nicht in der Lage herauszufinden, wie die durchschnittlichen Gradienten mit SyncReplicasOptimizer verknüpft werden, da SyncReplicasOptimizer den Optimierer direkt als Eingabe verwendet.

Irgendwelche Ideen von irgendjemandem?

Antwort

2

Distributed TensorFlow unterstützt mehrere GPUs in derselben Worker-Task. Eine gängige Methode für verteiltes Training für Image-Modelle besteht darin, synchrones Training über mehrere GPUs in demselben Worker und asynchrones Training über Worker hinweg durchzuführen (obwohl andere Konfigurationen möglich sind). Auf diese Weise ziehen Sie die Modellparameter nur einmal an den Worker, und sie werden unter den lokalen GPUs verteilt, wodurch die Netzwerkbandbreitennutzung erleichtert wird.

Um diese Art von Training durchzuführen, führen viele Benutzer eine "In-Graph-Replikation" über die GPUs in einem einzelnen Worker durch. Dies kann eine explizite Schleife über die lokalen GPU-Geräte wie in the CIFAR-10 example model; oder höhere Bibliotheksunterstützung, wie im model_deploy() Dienstprogramm von TF-Slim.

Verwandte Themen