Ich versuche, die meiste strategische Weise herauszufinden, die Speicherlast eines seq2seq-Netzwerks zwischen zwei GPUs gleichmäßig zu teilen.Geteilter RNN-Speicherverbrauch gleichmäßig zwischen GPUs in TensorFlow
Mit Faltungsnetzwerken ist die Aufgabe viel einfacher. Ich versuche jedoch herauszufinden, wie man den Speicherverbrauch von 2 Titan X maximieren kann. Das Ziel ist es, das größte Netzwerk zu erstellen, das die kombinierten 24 GB Speicher ermöglichen.
Eine Idee war es, jede RNN-Schicht in einer separaten GPU zu platzieren.
GPU1 --> RNN Layer 1 & Backward Pass
GPU2 --> RNN Layer 2,3,4
Die Backprop-Berechnungen erfordern jedoch eine erhebliche Menge an Speicher. Eine andere Idee besteht daher darin, den gesamten Vorwärtsdurchlauf auf einer GPU und den Rückwärtsdurchlauf auf der separaten GPU durchzuführen.
GPU1 --> Forward Pass
GPU2 --> Backward Pass
(jedoch GPU2 nimmt nach wie vor den größten Teil der Speicherauslastung)
Gibt es eine Möglichkeit, wie viel von der GPU-Speicher zu messen verwendet wird? Dies würde es uns ermöglichen, herauszufinden, wie man jede GPU maximieren kann, bevor sie "voll ist".
Sobald 2 GPUs verwendet werden, möchte ich schließlich vier verwenden. Ich denke jedoch, dass die Maximierung von 2 GPUs der erste Schritt ist.