私たちは仕事のために言語モデルを常にトレーニングしています。私たちのチームは、さまざまなタスクのために選択された数十の異なるビデオ カードを使用します。どこかに強力な DGX ステーションが必要であり、どこかに RTX 2080Ti などの古いゲーム カードがあれば十分です。モデル トレーニングに最適な GPU を選択すると、プロセスの速度と費用対効果の両方に大きな影響を与える可能性があります。
興味深いのは、インターネット上には機械学習用の GPU 比較に関する記事がかなりたくさんありますが、言語モデルのトレーニング用の速度に焦点を当てた記事はほとんどないことです。ほとんどの場合、推論テストのみが見つかります。新しい H100 チップがリリースされたとき、NVidia のレポートには、トレーニングでは A100 の最大 9 倍高速であると記載されていましたが、私たちのタスクでは、新しいカードは古いカードよりわずか 90% 高速でした。比較すると、当社のクラウド プロバイダーはこれらの GPU 間に 2 倍の価格差があったため、コストを節約するために新しい H100 に切り替える意味はありませんでした。
それに加えて、80GB のグラフィックス カード A100 8 枚で構成され、月額 10,000 ドルの DGX ステーションをテストしました。テストの結果、このステーションの価格/性能比がまったく合わないことが明らかになり、このお金で 66 x RTX 3090 を摂取でき、合計するとはるかに便利になります。
当社の翻訳言語モデルには、最大 5 億のパラメーター(平均 1 億から 3 億)があります。パラメータの数を大幅に増やすと、DGX の価格/性能比が向上する可能性があります。現在、すべてのバリエーションのすべての言語間で一度に翻訳できる大規模な言語モデルをトレーニングしているわけではありませんが、言語ペアごとに個別の言語モデルを使用しています。英語-ドイツ語。このようなモデルのそれぞれには 120 ~ 300 Mb がかかります。
言語が異なれば、インターネット上のデータ量も異なることは注目に値します。たとえば、スペイン語の場合、翻訳付きの文が 5 億件見つかりますが、チベット語などの珍しい言語のモデルをトレーニングする場合は、利用可能なデータに基づいて機械学習タスクの特定の GPU を選択する必要があります。英語からスペイン語への翻訳モデルを作成するには、4 x RTX 4500 および 256GB RAM を搭載したサーバーを使用します。同時に、ニューラルネットワークの複雑さを増し、その結果、少量のデータを持つより強力なサーバーを取ることは意味がないため、チベット語は16GB RAMを備えたRTX 2080 Tiでトレーニングできます。
グラフィックスプロセッサと理論上の図の選択
言語モデルのトレーニングは、OpenNMT-tf フレームワークを使用して社内 Data Studio プラットフォームで行われました。このフェーズには、データの準備、モデルのトレーニング、参照翻訳とのモデルの比較が含まれます。トレーニング中に FP32 ではなく FP16 を使用すると、翻訳品質を低下させることなく言語モデルのトレーニング時間を大幅に短縮できましたが、すべての GPU がそれをサポートしているわけではありません。
グラフィックス プロセッサを選択するときは、処理能力(TFLOPS)、ビデオ メモリ(VRAM)、GPU ベンチマークの結果、ライブラリとフレームワークのサポート、予算、その他の要素(グラフィックス カードのサイズとフォーム ファクタ、電力要件)などの指標を考慮することが標準です。、冷却、システムとの互換性)。テキスト生成モデルをトレーニングするときは、言語が異なれば消費するリソースの量も異なることにも留意する必要があります。たとえば、1 バイトはラテン語の場合は 1 文字、キリル文字の場合は 2 バイト、象形文字を含む言語の場合は 3 バイトをエンコードするために使用されます。グラフィック カードがどのような特性を持つかを理解することは、学習プロセスの速度に大きな影響を与えます。
使用する GPU に関してモデルをトレーニングする場合、ビデオ カードは使用期間に応じて 2 つのグループに分けられました。学習速度の最初の測定に使用される初期のビデオ カードと、現在使用されているカードです。これらのグラフィックス カードの主な特徴は、それぞれ表 1 と表 2 にあります。
表 1 - 以前に使用されていたグラフィックス プロセッサとその技術パラメータ
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 |
備考
1 を取得します。CUDA が 7。0 を超えると、CUDA バージョンとグラフィックス カード自体の特性に応じて、FP16 を使用するとトレーニング速度が向上します。
2 に準拠している。グラフィックス カードの仕様で、FP16 ~ FP32 のパフォーマンス比が 1 ~ 1 より大きいことが示されている場合、混合精度を使用すると、仕様で指定された量だけトレーニング速度が向上することが保証されます。たとえば、Quadro RTX 6000 の場合、FP16 TFLOPS 値 32。62 (2:1) により、ワークアウトが少なくとも 2 倍(実際には 2。4 倍)高速化されます
表 2 - 現在使用されている GPU モデルとその主な特徴
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 |
* - FP16,TFLOPS および FP32,TFLOPS の値は GPU ごとの仕様から取得しています
GPUのトレーニングとテストのプロセス
モデルは 18 個の GPU セットを使用してトレーニングされました。ニューラル ネットワーク トレーニングの過程で、私たちは多数の言語ペア (100 以上の言語)を使用しました。GPU テストは、どのハードウェアが特定のタスクに最も適しているかを特定するのに役立ちました。私たちの言語ペアのトレーニング中に、次のニューラルネットワークパラメータが基礎として採用されました:
- vocab サイズ = 30 000
- numunits = 768
- レイヤー = 6
- heads = 16
- 内寸 = 4 096
まず、表 1 に基づいて、最初のグループに属する GPU の特徴を説明します。インジケーターを比較するための基礎として、およそ 1,000 ステップの速度とバッチ サイズ倍数 100,000 単位でモデルのトレーニングに費やされた分と秒の時間が採用されます。
最初のグループでは、速度測定が を使用して実行されたことを強調します アライメント メカニズムと使用のみ FP32 さん。このメカニズムを使用しないと、一部のサーバーでの学習速度がはるかに速くなる可能性があります。
位置合わせメカニズムにより、ベース内の部分文字列と翻訳されたテキストを一致させることができます。Web ページなどのフォーマットされたテキストを翻訳するには、文内の部分文字列が別のフォントで強調表示され、強調表示とともに翻訳する必要がある場合に必要です。
ニューラルネットワークの上記のパラメータを考慮して、最初のテーブルからの最良の時間は、22 分の学習時間でGPU Nvidia H100 によって示された、 そして、中間タイムは同じブランド GeForce RTX 4060 Ti の GPU によって学習時間 72 分で示され、最後は GPU Tesla V100-SXM 2 によって学習時間 140 分で示されました。
GPU テストには、学習曲線が 20 分 28 秒の Nvidia A10 カードが 8 枚、タイムが 56 分の Nvidia A40 カードが 2 枚、86 分でクロックインした Tesla V100-SXM カードが 2 枚ありました。同じシリーズの GPU の複数のカードを同時に適用すると、モデルのトレーニング プロセスがスピードアップし、より高い容量を持つ GPU でほぼ同時に表示できますが、このような手法は財政的にも手続き的にも十分に合理的ではない可能性があります。学習速度測定の結果を表 3 に示します。
表 3 - 以前に使用したグラフィカル マップでのトレーニング時間の測定値
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 |
次に、現在使用されているグラフィックス ガスペダルの比較分析を実行してみましょう(表 2)。このグループのグラフィックス プロセッサでは、を使用して速度測定が実行されました アライメント メカニズム、FP16とFP32の使用。このメカニズムと混合精度を含む速度測定値を、それぞれ以下の表 4 と表 5 に示します。
したがって、この表から GPU の速度を測定すると、1 位はトレーニング時間 31 分の RTX A4500 シリーズ GPU であると言えますが、このようなトレーニング モデルの速度は、使用済み GPU のユニット数を最大 4 まで増やすことによって得られることを強調しておく必要があります。この事実を無視すると、前述の GPU のトレーニング速度ははるかに速くなり、最終テーブルの最後から 2 番目の位置に配置されます。
学習時間 47 分の Quadro RTX 6000 シリーズ GPU が 2 位です。このようなトレーニング速度は、使用されるプロセッサのユニット数 (4 に等しい)によって逆方向に調整されることに注意してください。このような GPU を 1 つだけ使用すると、速度損失は約 3。2 倍になり、その結果、速度損失は約 153 分となり、最下位になります。
3行目はTITAN RTXシリーズGPUが75分85秒で行いました。この学習速度スコアは 2 つのプロセッサを使用しているため、モデルのトレーニング時間が短縮されました。
1 ユニット数におけるトレーニング速度の点で疑いの余地のないリーダーは、間違いなく 78 分 26 秒の GeForce RTX 3090 シリーズ GPU です。この GPU のユニット数を増やすと、モデルのトレーニング速度が加速され、上記のすべての GPU モデルを明らかに追い越すことになります。モデルのトレーニング時間測定に関するデータを表 4 に示します。
表 4 - 以前に使用された GPU での言語モデルのトレーニング速度の比較分析
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 |
以下のトレーニング速度測定は FP16 を使用して実行されました。FP32 と比較して、半精度により、モデルのトレーニング中に消費されるメモリ量を削減し、GPU での計算を加速できます。表現の精度はFP32を使用した場合よりも低くなります。
前の表の FP32 を使用してモデルのトレーニング時間を測定すると、ニューラル ネットワークのトレーニング時間がほぼ 2 倍短縮されたと言えます。パフォーマンス測定結果に基づいて、表 4 の機械学習 GPU ベンチマークから、GPU の位置がほとんど変わっていないことがわかります。Quadro RTX 6000 シリーズ カードは 5 位から 6 位に上昇し、GeForce RTX 3090 GPU を 96 秒上回りました。最終的な数値を表 5 に示します。
表 5 - 以前に使用された GPU での言語モデルのトレーニング速度の比較分析
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 |