最近、KuaishouとETH Zurichはオープンソースの分散トレーニングフレームワークBaguaを発表しました。PyTorchやTensorFlowなどの既存のディープラーニングオープンソースフレームワークはシステムレベルでのみ最適化しますが、Baguaはこれを打破し、分散シナリオに特化した特定の最適化アルゴリズムを設計しています。アルゴリズムレベルとシステムレベルでの共同最適化を実現し、そのパフォーマンスは同様のものより60%高くなっています。 研究開発の背景 ムーアの法則が破綻したため、単一のコンピューティング ユニットの能力ではデータの指数関数的な増加に対応できなくなっています。たとえば、Kuaishou は毎日 1,000 万本以上の新しい動画をアップロードしています。単純な分類モデル (ResNet など) をトレーニングしたとしても、1 台のマシンと 1 枚のカードの計算能力を使用して、Kuaishou 上のすべての新しい動画をトレーニングするには 100 日以上かかります。そのため、データが爆発的に増加しているインターネット業界では、ビッグデータ時代には複数マシン、複数カードの並列トレーニングが必須となっています。ディープラーニング モデルがますます強力になるにつれて、分散トレーニング タスクに必要な通信コストと計算能力も劇的に増加しています。 しかし、複数台のマシンや複数カードの並列動作によって生じる追加の通信コストにより、速度向上は期待外れになることが多く、大手メーカーは「リソースを積み上げる」一方で、リソースのないメーカーは「ぼんやり眺める」という状況に陥ります。例えば、GoogleのDownpourフレームワーク[1]はImageNetのトレーニングに80個のGPUを使用していますが、高速化率はわずか12/80=15%です。そのため、複数のマシンや複数のカードでのトレーニングの通信効率をどのように向上させるかが、並列トレーニングやデータの爆発的な増加を解決する上での中心的な課題の 1 つになっています。 プロジェクトの GitHub アドレス: https://github.com/BaguaSys/bagua 既存のディープラーニング オープンソース フレームワーク (PyTorch、TensorFlow) は主にシステムレベルの最適化に重点を置いており、既存の単一マシンおよび単一カードの最適化アルゴリズムを複数マシンおよび複数カードのシナリオに拡張しています。システムレベルの最適化により並列効率は継続的に向上していますが、限界的な利点はますます明らかになっています。この問題に対処するため、Kuaishou と ETH Zürich は共同で「Bagua」と呼ばれる分散トレーニング フレームワークを開発しました。これは、単純なシステム レベルの最適化を超えて、分散シナリオに特化した特定の最適化アルゴリズムを設計し、アルゴリズム レベルとシステム レベルでの共同最適化を実現し、分散トレーニングの効率を最大化します。ユーザーは、数行のコードを追加するだけで、単一マシンの単一カード トレーニングを複数マシンのマルチカード トレーニングに拡張し、非常に優れた高速化率を実現できます。 八卦デザインアイデア 単一マシン単一カードトレーニングから複数マシンマルチカードトレーニングへの移行の核心は、各カードが独自の計算結果を蓄積して伝播することです。このプロセスは、誰もが知っている情報を他の人に伝え、次に他の人から情報を取得し、最終的にグローバルな情報同期を完了するようなものです。コンピューティング ユニット間の情報同期を人間同士の情報同期と比較すると、社会実践の経験から、「ゴシップ」が最も効率的なメッセージ伝送モードであることがわかります。 「ゴシップ」メッセージの伝播は、分散化、非同期通信、および情報圧縮を特徴としており、これは Bagua に実装されている通信アルゴリズムと正確に一致しています。 分散トレーニングの効率を向上させるために、Bagua は、分散化/集中化、同期/非同期、通信圧縮などの基本的な通信コンポーネントを含む、独自に開発した最先端のアルゴリズムを実装しました。ソフトウェアとハードウェアの設計を組み合わせることで、これらのコンポーネントの効率が極限まで最適化され、これらのアルゴリズムの組み合わせとより複雑なアルゴリズム設計を柔軟にサポートします。 Bagua は通信プロセスを次のアルゴリズム オプションに抽象化します。 集中型または分散型: 集中型通信モードでは、勾配またはモデルの同期プロセスには、すべての作業ノードの参加が必要です。そのため、ネットワークの遅延が大きくなると、トレーニングの効率が低下することがよくあります。分散型通信モデル[5,6]は、多くの場合この問題を効果的に解決できます。このモデルでは、作業ノードを特定のトポロジ(リングなど)に接続することができ、通信プロセス中、各作業ノードは隣接するノードとのみ通信します。 同期または非同期: 同期モードでは、すべての作業ノードが各反復中に通信する必要があり、次の反復は、現在の反復の通信が完了するまで待機してから開始する必要があります。対照的に、非同期分散アルゴリズム[2]では待機時間は必要ありません。ノードが計算を完了すると、ローカル勾配を直接渡してモデルを更新できます。 完全精度または低精度: 完全精度モードでは、ローカル モデルと同じ 32 ビット浮動小数点数 (float32) が送信に使用されます。一方、通信ボトルネックがある場合、多数の既存研究に基づき、勾配は量子化(量子化[3])またはスパース化(スパース化[4])によって圧縮され、圧縮された勾配がパラメータの更新に使用されます。多くのシナリオでは、通信効率を向上させながら、完全な精度と同じ精度を達成できます。 八卦は通信効率を向上させるために従来の方法ですべての計算ノードの結果を同期させず、毎回同期される情報にも偏差がありますが、最新の理論的進歩のおかげで、これらの通信戦略とその組み合わせの最終的な収束ソリューションの正確性と効率は依然として完全に保証され、計算の複雑さは集中同期と情報ロスレス方式に匹敵しますが、通信効率は高くなります[10]。 実際には、分散トレーニングアルゴリズムは、より極端なネットワーク環境に適応するために、上記の最適化手法の複数を使用することが多いことに注意する価値がある[7,8,9]。分散アルゴリズムに興味のある読者には、最近の完全なレビューレポート[10]をお勧めします。 Bagua は、ユーザーが上記のモードを自由に組み合わせて選択できるように、詳細な通信モード セットを提供します。次の表に、この分散トレーニング システムによる上記のアルゴリズム オプションのサポートをまとめます。 表から、既存のフレームワークの最適化は、より一般的なアルゴリズム (集中同期の完全精度) に対してのみ行われることが容易にわかります。他のアルゴリズムの組み合わせについては、これらのシステムのサポートは非常に限られています。集中同期情報圧縮の場合、これらのシステムは比較的単純な float32->float16 圧縮しかサポートできません。比較すると、Bagua は ByteGrad や QAdam などのより複雑なアルゴリズムをサポートできます。他のアルゴリズムの組み合わせについては、既存のフレームワークでは通常サポートできませんが、Bagua では自由にサポートできます。 ただし、このアルゴリズム オプションをサポートするだけでは、大規模クラスターのパフォーマンスが直接向上するわけではありません。 Bagua の主な利点は、究極のパフォーマンスを追求するためにアルゴリズムと実装を共同で最適化することです。具体的には、上記の通信層の抽象化に基づいて、ユーザーはシステムが提供するさまざまなアルゴリズムの組み合わせを簡単に選択してパフォーマンスの向上を実現し、新しい分散 SGD アルゴリズムを柔軟に実装できます。Bagua は、このアルゴリズムの実装に対してシステムレベルの最適化を自動的に提供します。これらのシステム最適化には以下が含まれます。 計算時間内に通信時間を隠す: 通信オーバーヘッドを削減するために、Bagua は計算時間内に通信時間の一部を隠すことができます。具体的には、逆勾配の計算中に、完了した勾配の一部を、残りの勾配の計算中に同時に通信することができます。このパイプライン処理方法により、通信時間の一部を逆勾配の計算で効果的に「隠す」ことができ、データの並列処理によって発生する通信オーバーヘッドを削減できます。 l パラメータのバケット化とメモリ管理: 断片化されたデータを頻繁に送信すると、通信効率が低下します。そのため、Bagua はモデル パラメータをバケットに分割し、各バケットを管理するために連続したメモリ空間を割り当てます。これにより、通信の単位がバケットになり、通信モデルをより効率的に使用できるようになります。さらに、情報圧縮アルゴリズムがサポートされているため、圧縮および解凍機能の基本操作単位もバケットとなり、これらの操作のオーバーヘッドも削減できます。 l 階層化された通信の実装: 産業レベルの分散トレーニングでは、多くの場合、複数のマシンと複数のカードが必要であり、さまざまな物理的な接続方法によってもたらされる遅延と帯域幅も大きく異なるため、パフォーマンスを向上させるには、通信の効果的な抽象化も重要です。 Bagua は、複数のマシンが関与する通信を「マシン内」と「マシン間」に抽象化し、対応する通信抽象化を最適化します。たとえば、情報圧縮伝送の場合、階層化通信では、このアルゴリズムを「マシン内」完全精度と「マシン間」情報圧縮として解釈し、さまざまな物理リンクに最適な通信アルゴリズムを提供します。 これらのシステム実装レベルの最適化は、さまざまなアルゴリズムの組み合わせに広く適用でき、特定のアルゴリズム設定に限定されないことを強調したいと思います。したがって、すべてのシステム最適化は、さまざまなアルゴリズムの実装で柔軟に再利用できるため、「エンドツーエンド」のパフォーマンス向上が保証されるだけでなく、新しい分散アルゴリズムの開発に適したプラットフォームも提供されます。 実験の結果、八卦の特徴は次のようになりました。 l 並列パフォーマンスが大幅に向上: ImageNet データセットでは、現在のオープンソース分散フレームワーク (PyTorch-DDP、Horovod、BytePS) と比較して、同じコンピューティング能力 (128 GPU) と通信ネットワーク (100Gbps) で構成した場合、Bagua は他のフレームワークの約 80% の時間で同じトレーニング精度を達成します。 l ネットワーク環境に対する堅牢性の向上: さまざまなアルゴリズムの最適化 (情報圧縮、非同期、分散化) を効果的にサポートしているため、Bagua はさまざまなネットワーク環境 (さまざまな遅延や帯域幅を含む) で優れた適応性を実証しています。特に、レイテンシが高く帯域幅が低い場合、Bagua は他のフレームワークよりも優れた高速化率を示します。たとえば、10Gbps のネットワーク帯域幅環境では、同じ ImageNet タスクの場合、Bagua は他のフレームワークの約 50% のトレーニング時間で同じトレーニング精度を達成できます。 l 「ワンクリック」使用: Bagua は非常にユーザーフレンドリーです。PyTorch を使用する既存のモデルはすべて Bagua の入力として使用でき、Bagua はそれに対して豊富な並列ソリューションのセットを自動的に提供します。数行のコードを追加するだけで、分散クラスターでトレーニングを実行できます。 l 分散通信アルゴリズムは拡張が容易: Bagua はアルゴリズムに高いスケーラビリティを提供します。分散最適化アルゴリズムの開発者にとって、Bagua は効果的な通信抽象化を提供します。開発者は、実装する新しいアルゴリズムに Bagua のシステム最適化を直接再利用することもできます。 l 産業シナリオで大規模に使用可能: Bagua は Kubernetes 用のカスタマイズされたオペレーターを実装し、クラウドネイティブの展開をサポートし、マシン リソースと障害の問題を考慮し、PyTorch Elastic と Kubernetes を有機的に組み合わせて、災害復旧と動的なトレーニングの拡張と縮小を実現します。 Bagua を使用すると、少数のマシンがアイドル状態のときにトレーニングを開始でき、より多くのマシン リソースが解放されると、トレーニング タスクは自動的にさらに多くのマシンに拡張されます。同時に、マシン ノードが破損した場合、不良ノードは自動的に削除され、トレーニングが続行されます。産業グレードのトレーニング シナリオや機械学習プラットフォームと組み合わせて使用すると便利です。 l 安全でトラブルシューティングが簡単: Bagua 通信バックエンドは、メモリの安全性、速度、並行性に重点を置いた Rust で実装されています。コンパイル フェーズで、多数のメモリの安全性の問題が排除されます。同時に、トレースに基づいてモジュール化された階層的なログ出力が実装され、実際のシナリオでのトラブルシューティングが容易になります。 さらに、Bagua は Kuaishou 内の産業グレードのタスクでもテストされています。Bagua は Kuaishou 内の複数のコアビジネス シナリオで使用されており、他のオープン ソース フレームワークと比較して大幅なパフォーマンスの向上を実現しています。 l 大規模自然言語処理(GPT2-xlサイズのモデル)により、効率が65%向上 l 大規模画像認識(10億以上の画像/動画)により、効率が20%~30%向上 l 大規模音声認識(TBレベルの音声データ)により、効率が20%~30%向上 l 大規模レコメンデーションシステム(兆レベルのパラメータモデルトレーニング、数億DAUのアプリケーションをサポート)、効率が100%以上向上 Bagua と他のオープンソース ソリューションのパフォーマンス比較 Kuaishou は、Bagua のパフォーマンスをテストするために、画像、テキスト、音声、画像とテキストの混合を含む複数のトレーニング タスクを選択し、PyTorch-DDP、Horovod、BytePS と比較しました。 Bagua システムの高い効率性とアルゴリズムの多様性により、Bagua はさまざまなタスクに最適なアルゴリズムを選択できるため、トレーニング速度が大幅に向上し、トレーニング精度は他のシステムと同等になります。ネットワーク状態が悪い場合、八卦システムの利点がより明らかになることは注目に値します。以下では、比較のために、GPT2-XL、BERT-Large、VGG16 という 3 つの典型的な通信集約型タスクを選択します。詳細な結果は、Bagua の論文と Web サイト (https://github.com/BaguaSys/bagua) で確認できます。 1. エンドツーエンドのトレーニング時間の比較 下の図は、128 個の V100 GPU で BERT-Large (SQuAD データセット) を微調整したときに、トレーニング時間とともに変化するモデルの F1 精度を示しています。 Bagua は加速のために QAdam-1bit アルゴリズムを使用し、マシンは 100Gbps TCP/IP ネットワークで接続されています。高速ネットワークを使用しても、Bagua では他のシステムの 60% の時間で同じトレーニング精度を達成できることがわかります。 2. スケーラビリティの比較 下の図は、VGG16 モデル (ImageNet データセット) における各システムのトレーニング速度と GPU 数の関係を示しています。テストでは、それぞれ 1、8、16、32、64、128 個の V100 GPU が使用されました。このタスクでは、Bagua は 8bitsGrad アルゴリズムを使用して高速化します。八卦の拡張効率は他のシステムと比較して大幅に向上していることがわかります。 下の図は、GPT2-XL モデルにおける各システムのトレーニング速度と GPU 数の関係を示しています。 GPT2-XL モデルは 15 億のパラメータを持ち、大規模モデルの中でも代表的なものです。 Bagua は加速のために 8bitsGrad アルゴリズムを使用します。テストでは、それぞれ 8、16、32、64、80 個の V100 GPU が使用されました。また、八卦の拡張効率は他のシステムに比べて大幅に向上していることもわかります。 3.異なるネットワーク環境の比較 アルゴリズムは八卦の魂です。ネットワーク環境が変化すると、異なるアルゴリズムは異なるパフォーマンス特性を示します。下の図では、BERT-Large の微調整を例に、マシン間のネットワークの帯域幅とレイテンシを調整し、Bagua における各アルゴリズムのエポック時間を比較しています。帯域幅が減少するにつれて、圧縮アルゴリズムの利点がますます明らかになり、圧縮の程度に関係していることがわかります。遅延が徐々に増加すると、分散アルゴリズムの利点が徐々に現れます。また、ネットワーク環境が悪い場合、八卦が他のシステムよりも優れている点がさらに広がります。 八卦の使用例 既存のトレーニング スクリプトで Bagua を使用するのは非常に簡単です。アルゴリズム ユーザーは、既存のモデルを初期化するために次のコード行を追加するだけです。 GradientAllReduce アルゴリズムを例に挙げます。 まず、八卦を輸入する必要がある bagua.torch_api を bagua としてインポートします。 その後、Bagua のプロセス グループを初期化できます。 torch.cuda.set_device(bagua.get_local_rank())bagua.init_process_group() データセットの初期化に関しては、Bagua は PyTorch の実装と完全に互換性があります。 train_dataset = ...test_dataset = ...train_sampler = torch.utils.data.distributed.DistributedSampler(train_dataset、num_replicas=bagua.get_world_size()、rank=bagua.get_rank())train_loader = torch.utils.data.DataLoader(train_dataset、batch_size=batch_size、shuffle=(train_sampler は None)、sampler=train_sampler、)test_loader = torch.utils.data.DataLoader(test_dataset、...) 最後に、ユーザーは、八卦を使用するためにトレーニングするモデルとオプティマイザーを選択するだけです。 # モデルを定義しますmodel = ...model = model.cuda()# 最適化を定義しますroptimizer = ...# 使用する Bagua アルゴリズムを選択しますfrom bagua.torch_api.algorithms import gradient_allreduce# Bagua アルゴリズムをインスタンス化しますalgorithm = gradient_allreduce.GradientAllReduceAlgorithm()# 既存のモデルに対して Bagua アルゴリズムを有効にしますmodel = model.with_bagua([optimizer], algorithm) このようにして、Bagua を使用したマルチマシンおよびマルチカードのトレーニング アルゴリズムが実装されます。完全な例とその他のシナリオについては、Bagua チュートリアル ドキュメント (https://github.com/BaguaSys/bagua) を参照してください。 論文: https://arxiv.org/abs/2107.01499 プロジェクトのGitHubアドレス: https://github.com/BaguaSys/bagua 参考文献 [1] Dean, Jeffrey, Greg S. Corrado, Rajat Monga, Kai Chen, Matthieu Devin, Quoc V. Le, Mark Z. Mao et al. “大規模分散型ディープネットワーク” (2012). [2] Zhengyuan Zhou、Panayotis Mertikopoulos、Nicholas Bambos、Peter Glynn、Yinyu Ye、Li-Jia Li、Li Fei-Fei。2018。無制限の遅延による分散非同期最適化:どこまで遅くできるか?機械学習に関する国際会議。PMLR、5970–5979。 [3] DanAlistarh、DemjanGrubic、JerryLi、RyotaTomioka、MilanVojnovic。2016年。QSGD:勾配量子化とエンコードによる通信効率の高いSGD。arXivプレプリントarXiv:1610.02132(2016)。 [4] Dan Alistarh、Torsten Hoefler、Mikael Johansson、Sarit Khirirat、Nikola Konstantinov、Cédric Renggli。2018。スパース化勾配法の収束。第32回国際神経情報処理システム会議の議事録。5977–5987。 [5] Anastasia Koloskova、Sebastian Stich、Martin Jaggi。2019。「圧縮通信による分散型確率最適化とゴシップアルゴリズム」。国際機械学習会議。PMLR、3478–3487。 [6] Xiangru Lian、Ce Zhang、Huan Zhang、Cho-Jui Hsieh、Wei Zhang、Ji Liu。2017。「分散型アルゴリズムは集中型アルゴリズムよりも優れているか?分散型並列確率的勾配降下法のケーススタディ」第31回国際神経情報処理システム会議の議事録。5336–5346。 [7] Christopher De Sa、Matthew Feldman、Christopher Ré、Kunle Olukotun。2017年。「非同期低精度確率的勾配降下法の理解と最適化」第44回国際コンピュータアーキテクチャシンポジウム論文集。561–574。 [8] Xiangru Lian、Wei Zhang、Ce Zhang、Ji Liu。2018。非同期分散並列確率的勾配降下法。国際機械学習会議。PMLR、3043–3052。 [9] Hanlin Tang、Shaoduo Gan、Ce Zhang、Tong Zhang、Ji Liu。2018。分散トレーニングのための通信圧縮。第32回国際神経情報処理システム会議の議事録。7663–7673。 [10] Ji Liu、Ce Zhang、他2020年。「第一階層法による分散学習システム」データベースの基礎とトレンド9、1(2020)、1-100。 |
>>: AIを活用してデジタル資産管理ワークフローを効率化する方法
Nasdaq の CIO 兼 CTO である Brad Peterson 氏は、10 年以上にわたっ...
ガートナーは、2022年の銀行および投資サービス業界における3つの注目の技術トレンドとして、生成型人...
こんにちは、みんな。最近はAIGCのコンテンツを研究しており、公式アカウントのコンテンツを長い間更新...
[[438694]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...
人工知能はビッグデータを処理するための最も理想的かつ効果的な方法です。私たちの世界はビッグデータに浸...
AI と機械学習をエネルギーと組み合わせることで、再生可能エネルギーの導入を加速することができます。...
不動産業界は、エネルギー需要の 22% を占めていることから、変化する環境の中で持続可能性を確保する...
数日前、ChatGPTの最も強力なライバルであるClaudeが第2世代にアップグレードされ、Goog...
MIT の研究者は、ディープ ニューラル ネットワーク アクセラレータの最適な設計を効率的に特定し、...
[[423755]]人工知能は、詐欺の特定や金融犯罪の撲滅から、顧客への革新的なデジタル体験の提供に...
最近、米国商務省産業安全保障局(BIS)は、サイバーセキュリティ分野に関する最新の輸出管理規制を正式...
近年、人工知能技術は最先端技術の代名詞として、徐々に生活の各分野に浸透しており、教育業界も例外ではあ...
「周囲の車両や歩行者は、次の数秒で何をするだろうか?」これは、安全な自動運転を実現するために答えな...