Wir trainieren ständig Sprachmodelle für unsere Arbeit. Unser Team verwendet Dutzende verschiedener Grafikkarten, die für unterschiedliche Aufgaben ausgewählt werden: In manchen Fällen benötigen wir eine leistungsstarke DGX-Station, in anderen Fällen reicht eine alte Gaming-Karte wie die RTX 2080Ti. Durch die Wahl der optimalen GPU-Konfiguration sparen Sie nicht nur Zeit, sondern auch Geld.
Interessant ist, dass es im Internet nur wenige Artikel mit GPU-Tests speziell für die Geschwindigkeit des Sprachmodelltrainings gibt. Meistens werden nur Inferenztests gefunden. Als der neue H100-Chip auf den Markt kam, hieß es im Bericht von NVidia, er sei beim Training bis zu neunmal schneller als der A100, aber für unsere Aufgaben war die neue Karte nur 90 % schneller als die alte. Im Vergleich dazu hatten unsere Cloud-Anbieter einen zweifachen Preisunterschied zwischen diesen GPUs, so dass es keinen Sinn hatte, auf die neue H100 zu wechseln, um Geld zu sparen.
Außerdem haben wir eine DGX-Station getestet, die aus 8 A100 80GB Grafikkarten besteht und 10 Tausend Dollar pro Monat kostet. Nach dem Test wurde klar, dass das Preis-/Leistungsverhältnis dieser Station überhaupt nicht zu uns passt und wir für dieses Geld 66 x RTX 3090 nehmen können, die insgesamt viel nützlicher sind.
Unsere Übersetzungssprachmodelle haben bis zu 500 Millionen Parameter (im Durchschnitt 100 bis 300 Millionen). Es ist möglich, dass das Preis-/Leistungsverhältnis von DGX besser wird, wenn wir die Anzahl der Parameter deutlich erhöhen. Derzeit trainieren wir keine großen Sprachmodelle, die zwischen allen Sprachen in allen Variationen auf einmal übersetzen können, sondern verwenden separate Sprachmodelle für jedes Sprachpaar, z. B. Englisch-Deutsch. Jedes dieser Modelle benötigt zwischen 120 und 300 MB.
Es ist erwähnenswert, dass für verschiedene Sprachen unterschiedliche Datenmengen im Internet zur Verfügung stehen. Während man zum Beispiel für Spanisch 500 Millionen Sätze mit Übersetzungen finden kann, sind es für Tibetisch nicht mehr als eine Million. Aus diesem Grund werden Modelle für verschiedene Sprachen mit einer unterschiedlichen Anzahl von Parametern trainiert, und das Ergebnis hat eine unterschiedliche Übersetzungsqualität. Für die Erstellung eines Übersetzungsmodells von Englisch nach Spanisch verwenden wir einen Server mit 4 x RTX 4500 und 256 GB RAM. Gleichzeitig kann die tibetische Sprache auf einer RTX 2080 Ti mit 16 GB RAM trainiert werden, da es keinen Sinn macht, die Komplexität des neuronalen Netzwerks zu erhöhen und folglich einen leistungsstärkeren Server mit einer geringen Datenmenge zu verwenden.

Auswahl von Grafikprozessoren und theoretische Zahlen
Das Training des Sprachmodells fand auf unserer internen Data Studio Plattform unter Verwendung des OpenNMT-tf Frameworks statt. Diese Phase umfasste die Datenvorbereitung, das Modelltraining und den Modellvergleich mit einer Referenzübersetzung. Die Verwendung von FP16 anstelle von FP32 während des Trainings ermöglichte es uns, die Trainingszeit der Sprachmodelle erheblich zu reduzieren, ohne die Übersetzungsqualität zu beeinträchtigen.
Bei der Auswahl eines Grafikprozessors sind standardmäßig Kriterien wie Verarbeitungsleistung (TFLOPS), Videospeicher (VRAM), Bibliotheks- und Framework-Unterstützung, Budget und andere Faktoren (Größe und Formfaktor der Grafikkarte, Stromverbrauch, Kühlung und Kompatibilität mit Ihrem System) zu berücksichtigen. Beim Training von Textgenerierungsmodellen sollten Sie auch bedenken, dass verschiedene Sprachen unterschiedlich viele Ressourcen verbrauchen. So wird beispielsweise 1 Byte für die Kodierung eines Zeichens in lateinischen Sprachen verwendet, 2 Byte in kyrillischen Sprachen und 3 Byte in Sprachen mit Hieroglyphen. Die Eigenschaften Ihrer Grafikkarte haben einen erheblichen Einfluss auf die Geschwindigkeit des Lernprozesses.
Beim Training der Modelle in Bezug auf die verwendeten Grafikprozessoren wurden die Grafikkarten je nach Verwendungszeitraum in zwei Gruppen eingeteilt: frühe Grafikkarten, die für die ersten Messungen der Lerngeschwindigkeit verwendet wurden, und derzeit verwendete Karten. Die wichtigsten Merkmale dieser Grafikkarten sind in Tabelle 1 bzw. Tabelle 2 zu finden.
Table 1 - Bisher verwendete Grafikprozessoren und ihre technischen Parameter
Number of GPUs | GPU | VRAM, G | CUDA | FP16, TFLOPS | FP32, TFLOPS |
---|---|---|---|---|---|
1 | Tesla V100-SXM2 | HBM2, 16 | 7.0 | 31.33 | 16.31 |
2 | Tesla V100-SXM2 | HBM2, 32 | 7.0 | 31.33 | 15.67 |
1 | RTX 4060 Ti | GDDR6, 8 | 8.9 | 22.06 | 22.06 |
1 | Nvidia A40 | GDDR6, 48 | 8.6 | 37.42 | 37.42 |
2 | Nvidia A40 | GDDR6, 96 | 8.6 | 37.42 | 37.42 |
1 | Nvidia A100 | HBM2, 40 | 8.0 | 77.97 | 19.49 |
1 | Nvidia A100 | HBM2, 80 | 8.0 | 77.97 | 19.49 |
1 | Nvidia RTX A6000 | GDDR6, 48 | 8.6 | 38.71 | 38.71 |
1 | Nvidia A10 | GDDR6, 24 | 8.6 | 31.24 | 31.24 |
8 | Nvidia A10 | GDDR6, 192 | 8.6 | 31.24 | 31.24 |
1 | Nvidia H100 | HBM3, 80 | 9.0 | 204.9 | 51.22 |
Anmerkungen
1. Bei CUDA-Versionen über 7.0 führt die Verwendung von FP16 je nach CUDA-Version und den Eigenschaften der Grafikkarte zu einem Geschwindigkeitszuwachs beim Training.
2. Wenn die Spezifikation der Grafikkarte angibt, dass das Verhältnis von FP16 zu FP32 größer als 1 zu 1 ist, wird die Verwendung von gemischter Präzision die Trainingsgeschwindigkeit garantiert um den in der Spezifikation angegebenen Betrag erhöhen. Bei der Quadro RTX 6000 beispielsweise beschleunigt der FP16 TFLOPS-Wert von 32,62 (2:1) das Training um mindestens das Zweifache (in der Praxis das 2,4-Fache).
Table 2 - Derzeit verwendete GPU-Modelle und ihre wichtigsten Merkmale
Number of GPUs in use | GPU | VRAM, G | CUDA | FP16, TFLOPS | FP32, TFLOPS |
---|---|---|---|---|---|
1 | Quadro RTX 6000 | GDDR6, 24 | 7.5 | 32.62 | 16.31 |
2 | Quadro RTX 6000 | GDDR6, 48 | 7.5 | 32.62 | 16.31 |
4 | Quadro RTX 6000 | GDDR6, 96 | 7.5 | 32.62 | 16.31 |
2 | Nvidia TITAN RTX | GDDR6, 48 | 7.5 | 32.62 | 16.31 |
4 | Nvidia RTX A4500 | GDDR6, 96 | 8.6 | 23.65 | 23.65 |
1 | Nvidia GeForce RTX 3090 | GDDR6X, 24 | 8.6 | 35.58 | 35.58 |
1 | Nvidia GeForce RTX 3070 | GDDR6, 8 | 8.6 | 20.31 | 20.31 |
* - die Werte für FP16,TFLOPS und FP32,TFLOPS sind den Spezifikationen der einzelnen GPUs entnommen
GPU-Schulung und -Testverfahren
Die Modelle wurden mit einem Satz von 18 GPUs trainiert. Beim Training des neuronalen Netzes haben wir zahlreiche Sprachpaare (mehr als hundert Sprachen) verwendet. Beim Training unserer Sprachpaare wurden die folgenden Parameter des neuronalen Netzes zugrunde gelegt:
- Vokabelumfang = 30 000
- NumUnits = 768
- Schichten = 6
- Köpfe = 16
- innere Abmessung = 4 096
Zunächst wollen wir die GPUs der ersten Gruppe anhand von Tabelle 1 charakterisieren. Die Zeit in Minuten und Sekunden, die für das Training des Modells bei einer ungefähren Geschwindigkeit von 1.000 Schritten und einem Vielfachen der Stapelgröße von 100.000 Einheiten aufgewendet wurde, wird als Grundlage für den Vergleich der Indikatoren herangezogen.
Wir betonen, dass die Geschwindigkeitsmessungen für die erste Gruppe unter Verwendung des Ausrichtungsmechanismus und nur mit FP32 durchgeführt wurden. Ohne diesen Mechanismus kann die Lerngeschwindigkeit auf einigen Servern viel schneller sein.
Der Alignment-Mechanismus ermöglicht den Abgleich von Teilstrings im Basistext und im übersetzten Text. Er wird benötigt, um formatierten Text, wie z. B. Webseiten, zu übersetzen, wenn eine Teilzeichenkette in einem Satz in einer anderen Schriftart hervorgehoben sein kann und mit der Hervorhebung übersetzt werden soll.
Unter Berücksichtigung der oben genannten Parameter des neuronalen Netzes, die beste Zeit aus der ersten Tabelle wurde von der GPU Nvidia H100 mit einer Lernzeit von 22 Minuten gezeigt, und die mittlere Zeit wurde von der GPU der gleichen Marke GeForce RTX 4060 Ti mit einer Lernzeit von 72 Minuten gezeigt und der letzte Platz wurde von der GPU Tesla V100-SXM 2 mit einer Lernzeit von 140 Minuten genommen.
Es gab auch acht Nvidia A10-Karten im GPU-Test mit einer Lernkurve von 20 Minuten und 28 Sekunden, zwei Nvidia A40-Karten mit einer Zeit von 56 Minuten und zwei Tesla V100-SXM-Karten, die eine Zeit von 86 Minuten erreichten. Der gleichzeitige Einsatz mehrerer Karten derselben GPU-Serie kann den Lernprozess der Modelle beschleunigen und mit GPUs mit höherer Kapazität fast die gleiche Zeit erreichen, aber eine solche Technik ist möglicherweise finanziell und verfahrenstechnisch nicht sinnvoll genug. Die Ergebnisse der Messungen der Lerngeschwindigkeit können in Tabelle 3 eingesehen werden.
Table 3 - Trainingszeitmessungen für die zuvor verwendeten grafischen Karten
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 32 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
8 | Nvidia A10 | 20,28 | 6 250 |
1 | Nvidia H100 | 22 | 25 000 |
1 | A100 (80 Gb) | 40 | 25 000 |
1 | A100 (40 Gb) | 56 | 15 000 |
2 | Nvidia A40 | 56 | 12 500 |
1 | RTX A6000 | 68,25 | 12 500 |
1 | GeForce RTX 4060 Ti | 72 | 4 167 |
1 | Nvidia A40 | 82,08 | 12 500 |
2 | Tesla V100-SXM | 86 | 4 167 |
1 | Nvidia A10 | 104,50 | 5 000 |
1 | Tesla V100-SXM2 | 140 | 4 167 |
Als Nächstes wollen wir eine vergleichende Analyse der derzeit verwendeten Grafikprozessoren durchführen (Tabelle 2). Für diese Gruppe von Grafikprozessoren wurden Geschwindigkeitsmessungen mit dem Ausrichtungsmechanismus sowie mit FP16 und FP32 durchgeführt. Die Geschwindigkeitsmessungen mit diesem Mechanismus und mit gemischter Präzision werden in den Tabellen 4 bzw. 5 dargestellt.
Nachdem wir also die Geschwindigkeit der GPUs in dieser Tabelle gemessen haben, können wir sagen, dass der erste Platz von der RTX A4500 GPU mit einer Trainingszeit von 31 Minuten belegt wurde, aber es sollte betont werden, dass eine solche Geschwindigkeit der Trainingsmodelle durch die Erhöhung der Anzahl der Einheiten der verwendeten GPU bis zu 4 erreicht wurde. Ungeachtet dieser Tatsache wird die Trainingsgeschwindigkeit der oben genannten GPU viel höher sein, was sie in der Abschlusstabelle auf den vorletzten Platz bringen wird.
Die Quadro RTX 6000 Serie GPU liegt mit einer Lernzeit von 47 Minuten an zweiter Stelle. Es ist anzumerken, dass eine solche Lerngeschwindigkeit umgekehrt von der Anzahl der Einheiten des verwendeten Prozessors abhängt, die gleich vier ist. Die Verwendung nur eines solchen Grafikprozessors würde zu einem Geschwindigkeitsverlust von etwa 3,2 Mal führen und folglich etwa 153 Minuten betragen, was den letzten Platz bedeuten würde.
Den dritten Platz belegte der Grafikprozessor der TITAN RTX-Serie mit einer Zeit von 75 Minuten und 85 Sekunden. Dieser Wert für die Lerngeschwindigkeit ist auf die Verwendung von 2 Prozessoren zurückzuführen, die die Trainingszeit des Modells reduzierten.
Der unbestrittene Spitzenreiter in Bezug auf die Trainingsgeschwindigkeit bei der Anzahl der Einheiten ist definitiv der Grafikprozessor der GeForce RTX 3090-Serie mit einer Zeit von 78 Minuten und 26 Sekunden. Eine Erhöhung der Anzahl der Einheiten dieser GPU wird die Trainingsgeschwindigkeit des Modells beschleunigen, wodurch alle oben genannten GPU-Modelle deutlich überholt werden. Die Daten zur Messung der Modelltrainingszeit sind in Tabelle 4 zu sehen.
Table 4 - Vergleichende Analyse der Trainingsgeschwindigkeit von Sprachmodellen auf zuvor verwendeten GPUs
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 32 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
4 | Nvidia RTX A4500 | 31 | 5 000 |
4 | Quadro RTX 6000 | 47 | 6 250 |
2 | Nvidia TITAN RTX | 75,85 | 6 250 |
1 | GeForce RTX 3090 | 78,26 | 6 250 |
2 | Quadro RTX 6000 | 88 | 6 250 |
1 | GeForce RTX 3070 | 104,17 | 2 000 |
1 | Quadro RTX 6000 | 153 | 6 250 |
Die folgenden Messungen der Trainingsgeschwindigkeit wurden mit FP16 durchgeführt. Im Vergleich zu FP32 ermöglicht die Halbpräzision eine Verringerung des während des Modelltrainings verbrauchten Speichers und eine Beschleunigung der Berechnungen auf der GPU. Die Genauigkeit der Darstellung ist jedoch geringer als bei der Verwendung von FP32.
Wenn wir die Trainingszeit der Modelle mit FP32 aus der vorherigen Tabelle messen, können wir sagen, dass die Trainingszeit des neuronalen Netzes um fast das Doppelte reduziert wurde. Anhand der Ergebnisse der Leistungsmessung können wir feststellen, dass sich die Positionen der GPUs in Tabelle 4 nicht wesentlich verändert haben. Die Karte der Quadro RTX 6000 Serie rückte vom fünften auf den sechsten Platz vor und schlug die GeForce RTX 3090 GPU um 96 Sekunden. Die endgültigen Zahlen sind in Tabelle 5 aufgeführt.
Table 5 - Vergleichende Analyse der Trainingsgeschwindigkeit von Sprachmodellen auf zuvor verwendeten GPUs
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 16 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
4 | Nvidia RTX A4500 | 15,81 | 10 000 |
4 | Quadro RTX 6000 | 20,34 | 12 500 |
2 | Nvidia TITAN RTX | 32,68 | 6 250 |
2 | Quadro RTX 6000 | 37,93 | 10 000 |
1 | GeForce RTX 3090 | 38,89 | 10 000 |
1 | GeForce RTX 3070 | 48,51 | 2 500 |
1 | Quadro RTX 6000 | 52,56 | 10 000 |