Deep Learning GPU Benchmarks 2021

In diesem Artikel wird ein Überblick über die Deep-Learning Leistung aktueller High-End-GPUs gegeben. Enthalten sind die neuesten Angebote von NVIDIA - die Ampere GPU-Generation. Auch die Leistung von Multi-GPU-Setups, wie z.B. einer quad RTX 3090-Konfiguration, wird bewertet.

Table of contents
Zur aktualisierten Version der Benchmarks: Deep Learning GPU Benchmarks 2022

Übersicht der getesteten GPUs

Obwohl wir nur eine kleine Auswahl aller verfügbaren GPUs getestet haben, sind wir der Meinung, dass wir alle GPUs abdecken, die sich aufgrund ihrer Rechenleistung, Speicherausbau und ihrer Kompatibilität mit aktuellen Deep-Learning-Frameworks derzeit am besten für Deep-Learning-Training und -Entwicklungen eignen.

GTX 1080TI

NVIDIAs klassische GPU für Deep Learning. Herausgebracht im Jahr 2017 mit 11 GB DDR5-Speicher und 3584 CUDA-Kernen wurde sie für Compute-Anwendungen entwickelt. Da die GTX 1080TI nicht mehr produziert wird, haben wir sie hier nur als Referenz für einen Vergleich hinzugefügt.

RTX 2080TI

Die RTX 2080 TI aus dem vierten Quartal 2018 liefert eine Leistung von 5342 CUDA-Kernen, die als 544 NVIDIA Turing-Tensorkerne mit gemischter Präzision organisiert sind und somit 107 Tensor-TFLOPS AI-Leistung und 11 GB GDDR6-Speicher bieten. Im September 2020 wurde die Produktion dieser GPU eingestellt, wodurch sie nur noch sehr schwer erhältlich ist.

Titan RTX

Basierend auf der preisgekrönten Turing™-Architektur bietet die Titan RTX mit ihren 576 Tensorkernen eine Leistung von 130 Tensor-TFLOPs und 24 GB GDDR6-Speicher.

Quadro RTX 6000

Die Quadro RTX 6000 ist die Server-Variante der beliebten Titan RTX mit verbessertem Luftkühlsystem, zusätzlichen Virtualisierungsfunktionen und ECC-Speicher. Sie basiert auf der gleichen Turing Architektur, wie die Titan RTX mit 576 Tensor-Kernen und bietet 130 Tensor TFLOPS Leistung mit 24 GB ultraschnellem GDDR6 ECC Speicher.

Quadro RTX 8000

Die Quadro RTX 8000 ist die große Variante der RTX 6000. Mit dem gleichen GPU-Prozessor, aber doppeltem Grafikspeicher (48 GB GDDR6 ECC). Tatsächlich ist sie derzeit die GPU mit dem größten verfügbaren GPU-Speicher und damit am besten geeignet für besonders speicherintensive Aufgaben.

RTX 3080

Eine der ersten GPU-Modelle mit der NVIDIA Ampere™-Architektur. Mit verbessertem Raytraycing und Tensorkernen, sowie neuen Streaming-Multiprozessoren. Die RTX 3080 ist mit 10 GB ultraschnellem GDDR6X-Speicher und 8704 CUDA-Kernen ausgestattet.

RTX 3080 Ti

Der große Bruder der RTX 3080 mit 12 GB ultraschnellem GDDR6X-Speicher und 10240 CUDA-Kernen.

RTX 3090

Die GeForce RTX ™ 3090 ist die TITAN-Klasse der NVIDIA Ampere™ GPU-Generation. Sie wird mit 10496 CUDA-Kernen, 328 Tensorkernen der dritten Generation und neuen Streaming-Multiprozessoren betrieben. Wie die Titan RTX verfügt sie über 24 GB GDDR6X-Speicher.

NVIDIA RTX A5000

Die NVIDIA RTX A5000 ist die kleinere Version der RTX A6000. Sie hat die gleiche Menge an GDDR-Speicher wie die RTX 3090 (24 GB) und verfügt auch über den gleichen GPU-Prozessor (GA-102) wie die RTX 3090, jedoch mit reduzierter Anzahl Prozessorkernen. Was zu 8192 CUDA-Kernen und 256 Tensor-Kernen der dritten Generation führt. Der Hauptvorteil der RTX A5000 ist der geringere Leistungsbedarf von 230 Watt

NVIDIA RTX A6000

Die NVIDIA RTX A6000 ist das Ampere-basierte Nachfolgemodell der Quadro RTX 6000. Sie verfügt über denselben GPU-Prozessor (GA-102) wie die RTX 3090, allerding sind alle Kerne des GA-102 Prozessors aktiviert was in 10752 CUDA und 336 Tensor-Kernen resultiert. Zusätzlich ist sie mit der doppelten Menge an GPU-Speicher der RTX 3090 ausgestattet: 48 GB GDDR6 ECC.

Tesla V100

Mit 640 Tensorkernen war die Tesla V100 die erste GPU der Welt, die die 100-TeraFLOPS-Barriere (TFLOPS) durchbrach. Der GPU-Speicher besteht aus 16 GB HBM2-Speicher mit höchstmöglicher Bandbreite. Sie basiert auf dem Volta GPU-Prozessor, der nur für die professionelle GPU-Serie von NVIDIA verfügbar ist.

NVIDIA A100

Die Nvidia A100 ist das Flaggschiff der Nvidia Ampere™-Prozessorgeneration. Mit 6912 CUDA-Kernen, 432 Tensorkernen der dritten Generation und 40 GB HBM2-Speicher mit der höchsten Bandbreite. Ein einzelner A100 schreitet bereits in den Leistungsbereich von Peta TOPS vor.

Die optimale Leistung mit Tensorflow erzielen

Im Folgenden zeigen wir die Maßnahmen auf, mit denen wir Tensorflow für das Benchmarking optimieren:

Batch-Size

Eine der wichtigsten Einstellungen zur Optimierung der Auslastung für jeden GPU-Typ ist die Verwendung der optimalen Batch-Size. Die Batch-Size gibt an, wie viele Propagations des Netzwerks parallel ausgeführt werden. Das Ergebnis jeder Propagation wird dann aus den Werten des Batches gemittelt und anschließend zum Anpassen der Netzwerkgewichte verwendet. Die in Bezug auf die Leistung optimale Batch-Size hängt direkt von der Größe des verfügbaren GPU-Speichers ab.

Eine größere Batch-Size erhöht die Parallelität und verbessert die Auslastung der GPU-Kerne. Die Batch-Size sollte jedoch den verfügbaren GPU-Speicher nicht überschreiten, da ansonsten Paging-Mechanismen einsetzen, welche die Leistung wieder verringern oder die Anwendung stürzt einfach mit einer "Nicht genügend Speicher"-Exception ab.

Eine große Batch-Size hat bis zu einem gewissen Maß keine negativen Auswirkungen auf die Trainingsergebnisse. Im Gegenteil: Eine große Batch-Size kann sogar positive Auswirkungen haben, indem sie das Netzwerk unterstützt, die Trainingsbeispiele besser zu abstrahieren. Ein Beispiel ist BigGAN, bei dem um die besten Ergebnisse zu erzielen, Batch-Größen von 2048 empfohlen werden. Eine weitere interessante Analyse vom Einfluss der Batch-Size auf das Trainigsergebniss wurde von OpenAI durchgeführt.

Tensorflow XLA

Ein Tensorflow-Feature, das vor längerer Zeit als stabil erklärt wurde, allerdings standardmässig abgeschaltet ist, nennt sich XLA (Accelerated Linear Algebra). Mit XLA wird der Netzwerk-Graph optimiert, indem Teile des Netzwerks dynamisch in einzelne Kernel kompiliert werden, die direkt auf das entsprechende Gerät optimiert werden. Dies kann, im Vergleich zu statisch kompilierten Tensorflow-Kerneln, zu Leistungssteigerungen von 10% bis 30% führen.

Diese Funktion kann durch eine einfache Option oder eine Umgebungsvariable aktiviert werden und wirkt sich direkt auf die Ausführungsleistung aus. Informationen zum Aktivieren von XLA in Ihren Projekten finden Sie hier.

Float 16bit / Mixed Precision Learning

Für Inferenz-Aufgaben wird bereits eine niedrigere Gleitkommapräzision und eine noch niedrigere 8- oder 4-Bit-Ganzzahlauflösung zur Leistungsverbesserung verwendet. Studien deuten darauf hin, dass die 16-Bit-Präzision von Float auch für Trainingsaufgaben mit vernachlässigbarem Verlust an Trainingsgenauigkeit angewendet werden kann und damit Trainings-Aufgaben erheblich beschleunigen kann. Die Anwendung der 16-Bit-Genauigkeit von Float ist nicht ganz so einfach. Um sie verwenden zu können muss das zu trainierende Modell angepasst werden. Da nicht alle Berechnungsschritte mit einer niedrigeren Bitgenauigkeit ausgeführt werden sollten, wird das Mischen verschiedener Bitauflösungen bei der Berechnung als "gemischte Genauigkeit" (mixed precision) bezeichnet.

Um das Potenzial der Methode zu verdeutlichen, zeigen wir im Folgenden die Benchmarks mit 32-Bit- und 16-Bit-Float-Genauigkeit.

Das Deep Learning Benchmark

Für unsere Performance-Messung wird das visuelle Erkennungsmodell ResNet50 in Version 1.0 verwendet. Als klassisches Deep-Learning-Netzwerk mit seiner komplexen 50-Schichten-Architektur mit verschiedenen Faltungs- und Residual-Schichten ist es immer noch ein sehr geeignetes Netzwerk für den Vergleich der erreichbaren Deep-Learning-Leistung. Da es in vielen Benchmarks verwendet wird, ist eine nahezu optimale Implementierung verfügbar, welche die maximale Leistung aus der GPU herausholt und dabei aufzeigt, wo die tatsächlichen Leistungsgrenzen der einzelnen GPUs liegen.

Die Testumgebung

Zum Testen verwendeten wir unseren AIME A4000 Server. Hierbei handelt es sich um eine technisch ausgereifte Plattform, um Hochleistungs-GPUs zu betreiben, da sie eine optimale Kühlung bietet und PCIe 4.0 x16-Steckplätze bereitgestellt wird, die die GPUs direkt mit der CPU verbinden. Die PCI-Konnektivität hat einen messbaren Einfluss auf die Deep Learning-Leistung, insbesondere bei Konfigurationen mit mehreren GPUs. Eine ausgeklügelte Kühlung ist notwendig, um maximale Leistung zu erzielen und auf Dauer zu halten.

Die technischen Daten zur Reproduktion unserer Benchmarks:

  • AIME A4000, Epyc 7402 (24 Kerne), 128 GB ECC RAM
  • Ubuntu 20.04
  • NVIDIA Treiber Version 455.45
  • CUDA 11.1.74
  • CUDNN 8.0.5
  • Tensorflow 1.15.4

Die für den Benchmark verwendeten Python-Skripte sind auf Github unter Tensorflow 1.x Benchmark verfügbar.

Single-GPU-Leistung

Das Ergebnis unserer Messungen wird mit der Anzahl der durchschnittlich verarbeiteten Bilder pro Sekunde angegeben, die über eine Dauer von 100 Batches mit der angegeben Batchgröße trainiert werden konnten.

Die NVIDIA Ampere-Generation ist hier eindeutig führend und die A100 deklassiert alle anderen Modelle.

Beim Training mit Float-16-Bit-Präzision erhöhen die A100 und V100 weiter ihren Vorsprung. Aber auch die RTX 3090 kann ihre Leistung im Vergleich zu Float-32-Bit-Berechnungen mehr als verdoppeln. Die GPU Berechnungen steigen hier auf das 167-fache der Geschwindigkeit einer 32-Kern-CPU, wodurch die Verwendung von GPUs für leistungsstarke Deep-Learning-Aufgaben obligatorisch wird.

Multi-GPU Deep-Learning Trainingsleistung

Die nächste Stufe zur Steigerung der Deep-Learning-Leistung besteht darin, die Arbeits- und Trainingslast auf mehrere GPUs zu verteilen. Der AIME A4000 server unterstützt bis zu 4 GPUs eines beliebigen Typs.

Deep Learning lässt sich über mehrere GPUs hinweg gut skalieren. Die Methode der Wahl für die Multi-GPU-Skalierung, die in mindestens 90% der Fälle eingesetzt wird, ist es den Batch auf die GPUs zu verteilen. Daher ist die effektive Batch-Size die Summe der Batchgrößen der verwendeten GPUs.

Dabei berechnet jede GPU die Propagations für die angelegten Eingaben des Batch-Bereichs. Die Ergebnisse jeder GPU werden dann ausgetauscht, gemittelt und die Gewichte des Modells werden entsprechend angepasst. Das Ergebniss muss wieder an alle GPUs zurück übertragen werden.

Nach der Berechnung eines Batches findet die Spitze an Kommunikationslast statt, in der die Ergebnisse der Batches gesammelt und die Gewichte angepasst werden. Dieser Vorgang muss abgeschlossen sein, bevor der nächste Batch gestartet werden kann. Während die GPUs an einem Batch arbeiten, findet kaum oder überhaupt keine Kommunikation zwischen den GPUs statt.

Bei dieser Standardlösung für die Multi-GPU-Skalierung muss sichergestellt sein, dass alle GPUs mit der gleichen Geschwindigkeit arbeiten, ansonsten ist die langsamste GPU der Engpass, auf den alle GPUs warten müssen. Daher ist das Mischen verschiedener GPU-Typen beim Skalieren nicht sinnvoll.

Mit dem AIME A4000 wird ein sehr guter Skalierungsfaktor von 0,88 erreicht, so dass jede zusätzliche GPU etwa 88% ihrer möglichen Leistung zur Gesamtleistung hinzufügt.

Die Trainingsleistung ins rechte Licht gerückt

Um ein besseres Bild davon zu erhalten, wie sich die Messung von Bildern pro Sekunde in Laufzeiten beim Trainieren solcher Netzwerke niederschlägt, sehen wir uns einen realen Anwendungsfall für das Trainieren eines solchen Netzwerks mit einem großen Datensatz an.

Beispielsweise besteht der ImageNet 2017-Datensatz aus 1.431.167 Bildern. Folgende Trainingszeiten sind somit nötig, um jedes Bild des Datensatzes einmal zu tranieren (1-Trainingsepoche):

Konfiguration Float 32 Training Float 16 Training
CPU(32 cores) 27 Stunden 27 Stunden
Single RTX 2080TI 69 Minuten 29 Minuten
Single RTX 3080 53 Minuten 22 Minuten
Single RTX 3080 TI 45 Minuten 21 Minuten
Single RTX 3090 41 Minuten 18 Minuten
Single NVIDIA A100 23 Minuten 8,5 Minuten
4 x RTX 2080TI 19 Minuten 8 Minuten
4 x Tesla V100 15 Minuten 4,5 Minuten
4 x RTX 3090 11,5 Minuten 5 Minuten
4 x NVIDIA A100 6,5 Minuten 3 Minuten

In der Regel sind mindestens 50 Trainingsepochen erforderlich, so dass ein Ergebnis erst zu bewerten ist, nach

Konfiguration Float 32 Training Float 16 Training
CPU(32 cores) 55 Tage 55 Tage
Single RTX 2080TI 57 Stunden 24 Stunden
Single RTX 3080 44 Stunden 18 Stunden
Single RTX 3080 TI 38 Stunden 17 Stunden
Single RTX 3090 34 Stunden 14,5 Stunden
Single A100 19 Stunden 8 Stunden
4 x RTX 2080TI 16 Stunden 6,5 Stunden
4 x Tesla V100 12 Stunden 4 Stunden
4 x RTX 3090 9,5 Stunden 4 Stunden
4 x NVIDIA A100 5,5 Stunden 2,5 Stunden

Dies zeigt, dass sich mit dem richtigen Setup die Wartezeit einer Trainingsaufgabe von Wochen auf den nächsten Arbeitstag oder sogar nur auf einige Stunden verkürzen lässt. Um keinen unnötigen Leerlauf bei der Entwicklung von Modellen zu haben, ist in den meisten Fällen eine Trainingsdauer erwünscht, die gewährleistet, daß das Training über Nacht durchgeführt werden kann und die Ergebnisse am nächsten Morgen vorliegen.

Schlussfolgerungen

Mixed Precision kann das Training um mehr als den Faktor 2 beschleunigen

Es zeigt sich, dass es sich für eine Leistungssteigerung lohnen kann, das Training von Float 32-Präzision auf Mixed Precision-Training umzustellen. Das Anpassen der Software an die jeweiligen Anforderungen könnte ein sehr effizienter Schritt sein, um die Leistung zu verdoppeln.

Multi-GPU-Skalierung ist mehr als machbar

Deep-Learning-Leistungsskalierung im Multi-GPU-Betrieb skaliert zumindest für bis zu 4 GPUs sehr gut. Die Verwendung von 2 GPUs übertrifft meistens die nächste leistungsstärkere GPU in Bezug auf Preis und Leistung.

Dies gilt insbesondere, wenn man zwei RTX 3090 mit einer NVIDIA A100 vergleicht.

Was ist die beste GPU für Deep Learning?

Wie in den meisten Fällen gibt es keine einfache Antwort auf diese Frage. Rechenleistung ist mit Sicherheit der wichtigste Aspekt einer GPU, die für Deep-Learning-Aufgaben verwendet wird, allerdings nicht der einzige Entscheidungsfaktor.

Es hängt also stark von den Anforderungen ab. Im Folgenden listen wir unsere Einschätzungen für die vielversprechendsten Deep-Learning-GPUs auf:

RTX 3080 TI

Diese Karte ist der eindeutige Preis-Leistungs-Sieger. Wer nach einer preisbewussten Lösung sucht, kann mit einem multi GPU-Setup in der High-End-Liga mit niedigeren Anschaffungskosten als einer einzelnen High-End-GPU mitspielen.

Mit den 12 GB GPU-Speicher hat die RTX 3080 TI einen klaren Vorteil gegenüber der RTX 3080 ohne TI und ist ein angemessener Ersatz für eine RTX 2080 TI. Aber mit den steigenden und anspruchsvolleren Deep-Learning-Modellgrößen werden die 12 GB Speicher wohl zukünftig auch bei der RTX 3080 TI zum Flaschenhals.

RTX 3090

Die RTX 3090 ist derzeit der eigentliche Nachfolger der RTX 2080 TI im Deep-Learning-Bereich. Mit seinem 24-GB-Speicher und einer deutlichen Leistungssteigerung zur RTX 2080 TI setzt sie den Maßstab für diese neue Generation von Deep-Learning-GPUs.

Ein dual RTX 3090-Setup kann ein 4x RTX 2080 TI-Setup bei den Deep-Learning-Berechnungszeiten bei niedrigerem Strombedarf und geringerem Preis übertreffen.

NVIDIA A100

Wenn die höchste Leistung oder höchste Leistungsdichte unabhängig vom Preis benötigt wird, ist die NVIDIA A100 die erste Wahl: Sie bietet in allen Kategorien die meiste Rechenleistung.

Die A100 hat im Vergleich zur Tesla V100 einen großen Leistungssprung gemacht, wodurch auch das Preis-Leistungs-Verhältnis wesentlich attraktiver wird.

Auch fällt der geringere Stromverbrauch von 250 Watt einer A100 im Vergleich zu 700 Watt eines dualen RTX 3090-Setups mit vergleichbarer Leistung in einen Bereich, in dem bei anhaltender Volllast der Unterschied bei den Energiekosten zu einem zu berücksichtigenden Faktor werden kann.

Bei Lösungen, für deren Ausführung eine Virtualisierung unter einem Hypervisor erforderlich ist, z. B. für Cloud-Dienste, ist die NVIDIA A100 derzeit die beste Option für High-End-Deep-Learning-Trainingsaufgaben.

Ein Quad-NVIDIA A100-Setup, wie es mit dem AIME A4000 möglich ist, katapultiert einen in den petaFLOPS HPC-Leistungsbereich.

Fragen oder Anmerkungen? Bitte kontaktieren Sie uns unter: hello@aime.info

Spread the word

Weiter lesen...