Sind mehr als 8 Hochleistungs-Nvidia-GPUs für Deep-Learning-Anwendungen geeignet?

7

Ich wurde zu dieser Frage aufgefordert, als ich versuchte, Server-Racks und Motherboards zu finden, die auf künstliche Intelligenz spezialisiert sind. Natürlich bin ich auf die SuperMicro-Website gegangen. Dort konnte das Chassis + Motherboard, das die maximalen GPUs in der Kategorie "Künstliche Intelligenz" unterstützte, bis zu 8 davon unterstützen. Darüber hinaus verfügt der Nvidia DGX-1 nur über 8 Tesla P100-GPUs. Matlab unterstützt nicht mehr als 8 GPUs, die ich zuletzt überprüft habe.

Sind mehr als 8 GPUs für DL praktisch? Ich würde Caffe, CNTK, Tensorflow und Torch7 als Referenz nehmen.

Rushat Rai
quelle

Antworten:

3

Ich habe kürzlich zu diesem Thema recherchiert. Auf die Parallelisierung kommt es an.
Grundsätzlich gibt es zwei Möglichkeiten: Modellparallelisierung oder Batch-Parallelisierung.

Modellparallelisierung ist, wenn Sie das Modell nach Ebenen auf mehrere GPUs aufteilen. Nach meinem besten Wissen können Sie eine Schicht nicht zwischen GPUs aufteilen, sodass 8 GPUs 8 Schichten bedienen würden, was sehr umfangreich ist. Tensorflow unterstützt diese Methode. Meiner Meinung nach machen mehr als 6 auf diese Weise keinen Sinn.

Bei der Stapelparallelisierung wird das gesamte Modell auf jeder GPU parallel ausgeführt, der Stapel aufgeteilt und parallel verarbeitet. Dies erfolgt über einen Trick, um eine größere Charge zu definieren, die aufgeteilt wird und nach der Aufteilung die gewünschte Chargengröße erreicht. In diesem Fall erfolgt die Stapelaufteilung und Aktualisierung der Gewichte auf der CPU (im Fall von Tensorflow), und nach 3 GPUs hat jede zusätzliche GPU nur eine geringfügige Verbesserung der Trainingsgeschwindigkeiten (gemäß Berichten). Hier macht also sogar 4 keinen Sinn und 8 ist einfach verrückt. Hier ist ein Beispiel für die Stapelparallelisierung.

Wenn Sie sich mit Codierung auskennen, können Sie sich auch dieses Dokument in Abschnitt 3.5 ansehen, in dem erläutert wird, wie 8 GPUs für ein 4-Schicht-LSTM-Netzwerk verwendet wurden. Wahrscheinlich können Sie solche Dinge tun, um DGX-1 zu verwenden, aber meines Wissens unterstützt Tensorflow die Aufteilung einer Schicht auf mehrere GPUs nicht. Mein Fazit ist, dass es bereits sehr schwierig ist, 8 GPUs zu verwenden, und darüber hinaus wird die Busgeschwindigkeit zum Engpass.


Erweiterung:
Ich habe die Busgeschwindigkeit überprüft und mich geirrt, es sollte kein Problem sein. Die meiste Zeit, die für das Training benötigt wird, ist der Rechenaufwand für die Backpropagation.

Tatsächlich wird die PCIe-Geschwindigkeit durch die CPU und den Mobo-Chipsatz begrenzt. Die CPU verfügt über PCIe-Lanes, die vom Mobo zugewiesen werden. Die derzeit stärkste Einzel-CPU ist Broadwell-E mit 40 Lanes (Skylake soll 44 haben). Mobo weist PCIe-Peripheriegeräten diese Bandbreite entweder x16 oder x8 zu. Mit einer 40-Lane-CPU können Sie also 2 Karten mit x16 (2 * 16 = 32 <40) oder 5 Karten mit x8 (5 * 8 = 40) ausführen. Hier muss erwähnt werden, dass M.2 auch PCIe-Lanes verwendet, so dass für die letztere Option vergessen und M.2-Laufwerk. Ein einzelnes CPU-System benötigt keine 8 GPUs, daher benötigen sie in DGX-1 eine doppelte CPU. Die nächste Einschränkung ist der Mobo-Chipsatz. Die derzeit leistungsstärkste ist die X99- und die C6-Serie. X299 wird nächste Woche angekündigt, wenn Speicher verfügbar ist und wahrscheinlich bald ein C6-Ersatz folgt.

Da die PCIe-Geschwindigkeit nicht der Engpass beim maschinellen Lernen ist, lautet die aktualisierte Antwort auf Ihre Frage: Je mehr GPUs, desto besser. Es scheint, dass das Limit bei x8 mit PCIe 3.0 bei 5 liegt, aber mehr als das wird selten benötigt, da Layer nicht zwischen GPUs aufgeteilt werden können. (Und das tiefste NN, das noch Sinn macht, kann als 5-6 Schichten betrachtet werden.)

Manngo
quelle
Das war sehr hilfreich! Könnten Sie bitte den Teil näher erläutern, in dem Sie erwähnt haben, dass die Busgeschwindigkeit später zu einem Engpass wird? Ich weiß, dass die maximale Geschwindigkeit des PCIe 3.0-Busses bei 15,75 GBit / s liegt. Ist das verwandt?
Rushat Rai
Oben beantwortet ...
Manngo