データ インテリジェンスの時代において、コンピューティングは必要不可欠であると同時に課題でもあります。最も重要な機能は、一言で言えば「大きい」です。
「大きな」を次の 3 つの特性に分割します。
##これにはデータとアルゴリズムの複雑さが含まれており、データ、アルゴリズム、コンピューティング能力はインテリジェント時代の 3 つの要素です。最初の 2 つは最終的にはコンピューティング能力によって実現されます。
#これにより、業界のコンピューティング能力に対する需要は、津波のように空間的にも時間的にも急速に拡大しました。
GPU には、津波を空間内の何千もの滴りに細分化し、時間内に水の経路を短縮し、経路の分岐構造を合理化し、大規模なタスクを変換する方法があります。レイヤーごとに小規模なタスクに分割され、膨大なコンピューティング能力の需要を容易に処理し、インテリジェント時代のコンピューティング能力の基盤となります。 上記の 3 つの特性に対応して、GPU は並列処理、融合、単純化の 3 つの方法を使用して、スループット、ビデオ メモリ、その他の指標に基づいてオペレータ レベルで高速化します。GPU アクセラレーションの主な方法論は、大規模モデルの工業化にも適しています。
基盤となるチップ、コンピューティング能力、データ、その他のインフラストラクチャーの改善と進歩により、世界の AI 業界は徐々に計算知能から知覚知能、コグニティブへと移行しつつあります。それに応じて、「チップ、計算能力設備、AI フレームワークとアルゴリズム モデル、アプリケーション シナリオ」の産業分業とコラボレーション システムが形成されています。 2019年以降、AI大型モデルは問題解決を一般化する能力を大幅に向上させ、「大型モデルと小型モデル」が徐々に業界の主流の技術ルートとなり、世界のAI産業の発展の全体的な加速を推進しています。
少し前、DataFun は、NVIDIA、Baidu、ByteDance Volcano Translation、Tencent WeChat などから 6 人の専門家が参加して、「AI ラージ モデル テクノロジー ロードマップと産業化実装の実践」に関する共有イベントを開催しました。モデルトレーニングテクノロジーと推論ソリューション、多言語機械翻訳のアプリケーション、大規模言語モデルの開発と実装などは、AIの大規模モデルテクノロジールートと産業実装実践の刺激的な共有をもたらします。彼らは、業界で大規模なモデルを実装する際に、並列処理、融合、単純化の手法を主に採用し、トレーニングおよび推論レベルからアルゴリズム モデリング レベルまで拡張しました。
並列方式は、空間を時間に交換する方法です。 . 津波を小滴に分解します。具体的には、大量のデータを含む計算の場合、各計算ステップに比較的長い時間がかかります。 GPU は並列コンピューティングを利用します。つまり、計算依存関係のないデータが可能な限り並列化され、大きなバッチが小さなバッチに分割されて、各計算ステップの GPU アイドル待ち時間が短縮され、計算のスループットが向上します。
大規模なモデルのトレーニングを実際に完了するには、単一 GPU、単一ノード、または複数のノード上でトレーニングの計算効率を高める高効率のソフトウェア フレームワークが必要です。大規模クラスター。 したがって、NVIDIA は Megatron トレーニング フレームワークを開発しました。Megatron は、モデル並列処理やシーケンス並列処理などの最適化手法を使用して、Transformer の大規模モデルを効率的にトレーニングし、数兆のパラメーターを使用してモデルをトレーニングできます。
アルゴリズム モデリング レベルでは、Huoshan Translation と Baidu は主に MoE モデルなどのモデリング手法を検討しました。モデル並列処理は、パイプライン並列処理とテンソル並列処理に分類できます。
パイプライン並列処理は層間並列処理 (図の上部) であり、異なる層を異なる GPU に分割して計算します。このモードでの通信はレイヤーの境界でのみ発生し、通信回数や通信データ量は少ないですが、GPU スペースの待ち時間が余分に発生します。
Tensor 並列処理は層内並列処理 (図の下の部分) であり、層の計算を異なる GPU に分割します。このモードは実装が簡単で、大規模な行列に対する効果が高く、GPU 間の負荷分散をより適切に実現できますが、通信の数とデータの量は比較的多くなります。
GPU リソースを最大限に活用するために、Megatron は各トレーニング バッチをより小さなマイクロ バッチに分割します。
異なるマイクロバッチ間にはデータの依存関係がないため、相互に待機時間をカバーできるため、GPU 使用率が向上し、全体的なトレーニング パフォーマンスが向上します。
Tensor は、各演算子の計算を異なる GPU に並列に分割します。マトリックス層には、横断的と垂直的な 2 つのタイプがあります。切断の仕方。
図に示すように、Megatron は、Transformer ブロックのアテンション部分と MLP 部分にこれら 2 つのセグメンテーション方法を導入しています。
Tensor 並列モードでは、各 Transformer 層の順方向ステップと逆方向ステップで、合計 4 つの All-reduce 通信が必要です。 Reduce の量が大きいため、Tensor 並列処理は単一カードの内部使用に適しています。
パイプライン並列処理とテンソル並列処理を組み合わせることで、Megatron は、32 GPU での 1,700 億パラメータ モデルのトレーニングを、3072 GPU での 1 兆パラメータ モデルのトレーニングに拡張できます。 . パラメトリックスケールモデル。
Tensor 並列処理は実際には Layer-norm と Dropout を分割しないため、これら 2 つの演算子は各 GPU 間で複製されます。
# ただし、これらの操作自体は多くの計算を必要としませんが、アクティブなビデオ メモリを大量に占有します。
この目的のために、メガトロンはシーケンス並列最適化手法を提案しました。シーケンス並列処理の利点は、通信量を増やさず、メモリ使用量を大幅に削減できることです。
Layer-norm と Dropout はシーケンス次元に沿って独立しているため、シーケンス次元に応じて分割できます。
シーケンス並列処理を使用した後でも、非常に大規模なモデルの場合、メモリ使用量は依然として非常に多くなります。そこでメガトロンは活性化再計算技術を導入した。
Megatron のアプローチは、ソフトマックスやドロップアウト イン アテンションなどの演算子など、ほとんど計算を必要としないが大量のビデオ メモリを占有する演算子を見つけることです。これらの演算子をアクティブにして再計算することで、ビデオ メモリを大幅に増やすことができます。削減され、計算オーバーヘッドはあまり増加しません。
シーケンスの並列処理と再計算の選択的なアクティブ化を組み合わせることで、グラフィックス メモリの使用量を元の約 1/5 に削減できます。すべてのアクティベーションを直接再計算する元のソリューションと比較して、ビデオ メモリはわずか 2 倍であり、計算オーバーヘッドは大幅に削減され、モデルの規模が大きくなるにつれて、計算オーバーヘッドの割合は徐々に減少します。兆規模モデルに到達するまでに、再計算にかかるコストは全体の約 2% にすぎません。
MoE モデルは、そのシンプルな設計思想と強力な拡張性により、業界でますます人気が高まっています。
MoE モデルは、大きなモデルを複数の小さなモデルに分割するという設計アイデアを提案しています。各サンプルは、計算のためにエキスパート モデルの一部をアクティブにするだけで済むため、コンピューティング リソースが大幅に節約されます。
最も一般的に使用される高密度の大規模モデルは BERT、T5、GPT-3 であり、最も一般的に使用されるスパース モデルはMoE モデルは T5 MoE で、MoE は大規模なモデル構築のトレンドになりつつあります。
#MoE は、アルゴリズム モデリング レベルで並列コンピューティングのアイデアを組み合わせていると言えます。
大規模モデルの多用途性は、注意メカニズムの誘導バイアスが弱いことや、注意メカニズムの誘導バイアスが弱いことなど、すでによく知られている点に加えて、多くの側面に反映されています。モデル容量が大きい、モデルデータが大きいなど、タスクモデリング手法の最適化も可能であり、その代表的なものがMoEである。
火山の変換の場合、MoE の基本的な考え方は、幅を深さに置き換えることです。モデルが深くなるほど、コンピューティング層が増え、推論時間が長くなるからです。
たとえば、4 層のエンコーダーと 4 層のデコーダーを持つ Transformer モデルの場合、各計算は 8 つの FFN すべての計算を実行する必要があります。混合エキスパート モデルの場合、FFN を並列に配置でき、最終的に計算パスが半分になり、推論時間が半分になります。
同じ推論時間の下、つまりモデルの深さが同様の場合、MoE はモデルの幅を増やすことができるため、マシンの最終的な効果は翻訳も改善されます。
アフリカの 24 言語と英語とフランス語の多言語翻訳タスクのために、Huoshan Translation は 128- 24 のエキスパート レイヤを備えた MoE モデルであるレイヤ Transformer は、従来のアーキテクチャよりも優れた翻訳結果を実現します。
しかし、Sparse MoE の「エキスパート モデル」という名前は少し間違っているかもしれません。なぜなら、たとえば、一文で言えば、各トークンが通過するエキスパートは、異なる場合があります。
Huoso Translation は、文を通過する専門家が言語によって決定されるハード ゲート MoE を開発しました。これにより、モデルの構造がより単純になり、実験結果でも翻訳効果が優れていることがわかりました。
Baidu は、アルゴリズム モデリングの並行調査において、知識強化クロスモーダル生成大規模モデル ERNIE-ViLG 2.0 にハイブリッド エキスパート拡散モデル フレームワークも採用しました。
# なぜ普及モデルにエキスパート モデルを使用する必要があるのでしょうか?
実際、これは、モデルのモデリング要件が世代段階によって異なるためです。たとえば、初期段階では、モデルはガウス ノイズからセマンティック画像を生成する学習に焦点を当て、最終段階では、モデルはノイズのある画像から画像の詳細を復元することに焦点を当てます。
実際、ERNIE 3.0 の初期バージョンでは、自動エンコーディングと自動回帰が統合されており、特定の生成タスクと理解タスクの一般的な意味表現で 2 つのモデリング手法を組み合わせることができます。
自動エンコーディングと自己回帰を統合するという基本的な考え方は、実際にはエキスパート モデルのモデリング方法論と似ています。
# 具体的には、ユニバーサル表現に基づいて、理解タスクは自動符号化ネットワーク構造に適しており、生成タスクは自己回帰ネットワーク構造に適しています。型。さらに、この種のモデリングでは、より適切な一般表現を学習することがよくあります。
さらに、ERNIE-UniX2 モデルでは、 Baidu 対照学習や言語モデルなどの事前トレーニング パラダイムを統合することで、多言語およびマルチモーダルの理解および生成タスクが統合されます。
MoE モデルのトレーニング後の推論展開も、効率を非常に重視するリンクです。
超大規模モデル推論用のデプロイメント ソリューションを選択する場合、単一カードを使用するかどうかを最初に決定するのは、モデルのパラメーター スケール、モデル構造、GPU メモリと推論フレームワーク、およびモデルの精度と推論パフォーマンスのトレードオフ 推論は依然として Doka 推論です。ビデオ メモリが不十分な場合は、モデル圧縮またはマルチカード推論ソリューションが検討されます。
マルチカード推論には、Tensor 並列処理、Pipeline 並列処理、Expert 並列処理、およびその他のモードが含まれます。
MoE の非常に大規模なモデルにさまざまなモードを採用すると、さまざまな課題に直面することになります。このうち、MoE モデルの Tensor 並列モデルと密集モデルは類似しています。
エキスパート並列モードを選択すると、各 MoE レイヤーのエキスパートが異なる GPU に分割されるため、ロード バランシングの問題が発生する可能性があり、その結果、多くの GPU がアイドル状態になり、最終的に全体のスループットが低下します。これは、MoE Doka の推論で注目すべき重要な点です。
Tensor 並列処理と Pipeline 並列処理の場合、微調整によってカード間通信を削減することに加えて、より直接的な方法は、カード間の帯域幅を増やすことです。 MoE モデルに Expert 並列処理を使用すると負荷分散の問題が発生する場合、プロファイリングを通じて分析して最適化できます。
#マルチカード推論ソリューションは通信オーバーヘッドを増加させ、モデル推論の遅延に一定の影響を与えます。
## Fusion は、並列コンピューティングで遭遇する自然な矛盾を解決することです。 、並列コンピューティングとシリアル コンピューティングは 2 つの基本的なコンピューティング モードです。並列コンピューティングを適用する場合、最も一般的な問題は、多数のシリアル依存関係と、その結果として生じる中間値のメモリ占有です。通常、GPU メモリは、大規模なモデルのトレーニングと推論のハードウェア パフォーマンスのボトルネックの 1 つになります。
#大規模コンピューティングにおけるシリアル依存性の問題に対して最も重要な方法は、トリクルの経路を短縮すること、つまり中間滞留時間を減らすことです。プロセス。 具体的には、オペレータ フュージョンを使用して、順次依存関係を持つオペレータをマージし、ビデオ メモリの使用量を削減します。
オペレーター フュージョンは、コンピューティング レベルだけでなく、オペレーターの設計レベルでも実装されます。
#パイプライン 順方向と逆方向の処理を並列に分離するとビデオメモリが出現します占有率が多すぎる問題。
そこでメガトロンは、パイプライン並列処理の新しいモデル 1F1B を提案し、各 GPU が各マイクロバッチの順方向処理と逆方向処理を交互に実行することで、占有しているビデオ メモリをできるだけ早く解放し、ビデオ メモリを削減します。使用法。
1F1B ではバブル時間を短縮できません。バブル時間をさらに短縮するために、メガトロンはインターリーブ 1F1B モードを提案しました。つまり、本来各 GPU は連続 4 層の計算を担当していましたが、現在は半分の連続 2 層の計算を担当することになり、バブル時間も半分になりました。オリジナル。
2. カーネル融合GPU 計算を行う場合、各計算プロセスは GPU カーネルにカプセル化され配置され、GPU カーネル上で実行されます。 GPUはシーケンシャルです。汎用性を高めるために、従来の演算子ライブラリは演算子を非常に基本的なものに設計しているため、演算子の数が非常に多くなりますが、大量の中間の隠れた表現を保存する必要があるため、多くのビデオ メモリを占有するという欠点があります。 、これには比較的高い帯域幅が必要です。高い場合、最終的に遅延やパフォーマンスの損失が発生する可能性があります。
Volcano Translation は、Softmax、LayerNorm など、CuBLAS 乗算インターフェイスに基づいた他の非行列乗算演算子を統合します。
一般的な演算子の融合を比較することに加えて、Huoshan Translation は、GPU 並列処理を利用できない Beam Search などの一部の特定の演算子もターゲットにしています。計算の依存関係を最適化して高速化を実現します。
4 つの主流の Transformer モデルで、LightSeq オペレーター フュージョンは PyTorch に基づいて最大 8 倍の高速化を達成しました。
3.# の詳細を示します。具体的には、計算量が高い場合には、性能を確保しつつ演算量を簡略化し、最終的に計算量を削減する。
# 非常に大規模なモデルのシングルカード推論には、通常、モデル圧縮が含まれます。一般的なモデル圧縮スキームは、量子化、蒸留、枝刈りです。量子化は、業界で最も一般的に使用されるモデル圧縮スキームの 1 つです。定量的計算では精度は低くなりますが、モデルのパラメーターの大きさを維持でき、場合によってはモデルの全体的な精度をより確実に確保できる場合があります。
#1. 定量化
##現在 2 つの定量化方法があります。 1 つはトレーニング後の量子化で、もう 1 つは量子化を意識したトレーニングです。通常、後者の方が前者よりもモデルの精度が良く保たれます。
#量子化が完了したら、TensorRT や FasterTransformer などの推論高速化フレームワークを使用して、非常に大規模なモデルの推論をさらに高速化できます。
LightSeq は、トレーニング プロセスの量子化に真の int8 量子化を使用します。つまり、量子化操作は行列の乗算の前に実行され、逆量子化操作は行列の乗算の後に実行されます。過去の擬似量子化とは異なり、量子化と逆量子化の操作は行列の乗算の前に実行され、モデルが量子化によって引き起こされる損失と変動に適応できるようになります。後者は実際の計算を高速化するものではありませんが、遅延が増加したり、メモリ使用量が増加したりする可能性があります。真の int8 量子化は、実際のアプリケーションでも優れた加速効果をもたらします。
#2. 蒸留2 番目のモデル圧縮方法は蒸留です。蒸留では、さまざまな戦略を使用して、さまざまなアプリケーション シナリオに合わせて非常に大規模なモデルを圧縮でき、場合によっては、蒸留によって非常に大規模なモデルに優れた一般化機能を与えることができます。
3. プルーニング最後のモデル圧縮ソリューションはプルーニングです。枝刈りは、完全モデル枝刈りと部分層枝刈りに分けられます。非常に大規模なモデルの場合、モデルの主要な層を理解することが非常に重要です。精度に最も大きな影響を与えるこれらの部分の枝刈りを避ける必要があります。これは、スパース MoE モデルにも適用できます。
4. 大型モデルの産業化大型モデルの研究と実装がトレンドになっており、2022 年には、大規模な言語モデルに関する研究がさらに進むだろうし、Transformers に関する論文は 10,000 以上あり、5 年前に Transformers が最初に提案されたときと比べて 7 倍に増加している。さらに、大規模なモデルには、画像生成、推奨システム、機械翻訳、さらにはライフサイエンス、コード生成など、幅広い用途もあります。
OpenAI は 2020 年に 2 つの論文も発表し、1 つのモデルのパフォーマンスが 3 つのモデルのパフォーマンスと基本的に同じであることを示しました。は、計算能力、データセットのサイズ、モデルパラメータの量という 3 つの主要な要素に関連付けられており、これら 3 つの指標によってモデルの効果を十分に予測できます。
リチャード・サットンはかつて、過去 70 年間の AI 開発において、コンピューティングを効率的に利用できる汎用コンピューターが繰り返しトレンドになっていると述べました。リソースアプローチが常に最終的な勝者となります。
リチャード・サットンの「勝者の法則」によると、過去 10 年間、汎用性の点でディープラーニングが勝利を収めています。 しかし今日では、大規模なモデルのトレーニングにおける課題は自明です。 GPT-3 を例に挙げると、トレーニング中に元の混合精度を使用する場合は、トレーニング中のパラメーターと勾配、および FP 32 の主要パラメーターを保存する必要があります。Adam オプティマイザーを使用する場合は、運動量も保存する必要があります2 つのオプティマイザの情報を考慮すると、最終的には合計 2.8 TB のビデオ メモリが必要ですが、これは 1 枚のカードのビデオ メモリ容量をはるかに超えており、これを搭載するには 35 台以上の A100 が必要です。NVIDIA の 2021 年の論文「Megatron-LM を使用した GPU クラスターでの効率的な大規模言語モデル トレーニング」では、1 回の反復のパラメーター数が 1,750 億であることを示す経験式が導き出されています。 GPT-3 モデルは 4 億 5,000 万 FLOP の計算能力を必要とします。トレーニング サイクル全体が 95,000 回の反復で構成される場合、430 ZettaFLOP が必要になります。言い換えれば、A100 のトレーニングには 16,000 日が必要ですが、これは計算効率とは関係なく結論となります。
つまり、大規模モデル産業化の時代において、これら3つの指標を単純に積み上げるだけでは、膨大な資源の無駄になります。 DeepMind は、2022 年に発表された ChinChilla の論文の中で、実際には GPT-3、OPT、PaLM などの大規模モデルは基本的に適合不足モデルであると述べました。同じコンピューティング リソースに基づいて、モデル パラメーターの数が減り、より多くのステップがトレーニングされる場合、最終的なモデルの効果が向上する可能性があります。これは、WeChat が WeLM 大規模言語モデルで従う設計哲学でもあります。業界の企業は基本的に、規模からの焦点を緩め、代わりに大規模モデルを実装する際の効率の問題に焦点を当て始めています。 たとえば、全体的な実行効率の観点から見ると、Megatron によって最適化されたほぼすべてのモデルのスループットは 30% 向上しており、モデルのサイズが大きくなるにつれて、より高いパフォーマンスを実現できます。利用。 1,750 億パラメータの GPT-3 モデルでは、GPU 使用率は 52.8% に達することがあります。パラメータスケールが 5,300 億を超えるモデルでは、使用率は 57% に達することがあります。 言い換えれば、リチャード・サットンの「勝者の法則」によれば、効率性が大規模モデルの工業化の基調となるでしょう。
以上が大型モデルの工業化の方法論はすべて GPU に隠されていますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。