DUICUO

ByteDance は、最大 6.9 倍のパフォーマンス向上を実現する大規模モデルトレーニング フレームワークである veGiantModel をオープンソース化しました。

背景

近年、NLPアプリケーションは飛躍的な進歩を遂げています。BERT、GPT、GPT-3といった大規模モデルが様々なNLPテストを席巻したことで、パラメータ数の多いモデルの方がアルゴリズムの面で優れたパフォーマンスを発揮することが明らかになりました。その結果、大規模モデルへの急速な移行が起こり、モデルサイズは爆発的に増加しました。大規模モデルの学習が既存の学習システムにもたらす主な課題は、メモリ不足、計算量不足、そして通信量不足です。

言語モデルのサイズは指数関数的に増加しています(出典:https://huggingface.co/blog/large-language-models)

veGiantModel は、Volcano Engine 用の大規模モデル トレーニング フレームワークです。

このニーズに対応するため、ByteDanceのAMLチームは、Volcano Engine向けの大規模モデルトレーニングフレームワークであるveGiantModelを社内開発しました。PyTorchフレームワークをベースにしたveGiantModelは、MegatronとDeepSpeedを基盤とした高性能な大規模モデルトレーニングフレームワークです。その機能は以下のとおりです。

  • データ並列処理、演算子パーティショニング、パイプライン並列処理の 3 つの分散並列処理戦略に加え、自動化およびカスタマイズされた並列処理戦略もサポートします。
  • ByteCCL 高性能非同期通信ライブラリをベースとしており、他のオープンソース フレームワークと比較してトレーニング タスクのスループットが 1.2 倍~ 3.5 倍向上します。
  • よりユーザーフレンドリーで柔軟なパイプライン サポートを提供し、モデルの開発と反復に必要な人員を削減します。
  • GPU 上で数十億から数千億のパラメータを持つ大規模モデルを効率的にサポートできます。
  • 帯域幅の要件は低く、プライベート展開では RDMA に大きく依存しません。

中でもByteCCLは、ByteDanceが自社開発したBytePSのアップグレード版です。A100/V100などの様々なマシントポロジー向けに階層的な仕様最適化が施され、allgatherやalltoallといったより包括的な通信プリミティブをサポートしています。

veGiantModelのパフォーマンス

ハードウェア構成

VeGiantModelのパフォーマンスを実証するため、VeGiantModelチームは自社構築のデータセンター内の物理マシンを使用して、A100モデルとV100モデルの両方でテストを実施しました。実験構成は以下のとおりです。

  • V100 テスト: マシンあたり 8 個の Tesla V100 32G GPU、100G ネットワーク帯域幅。
  • A100 テスト: マシンあたり 8 個の Ampere A100 40G GPU、800G ネットワーク帯域幅。

モデルと対照群の選択

veGiantModelは、シーケンス長256、グローバルバッチサイズ1536のGPT-13Bモデルを評価対象として選択しました。GPTは現在、市場で最も人気のあるトランスフォーマーベースの言語モデルです。パフォーマンス制御グループは、最も人気のあるオープンソースモデルであるMegatronとDeepSpeedを選択しました。

テスト結果

  1. V100/TCP: 100Gb/s TCP ネットワーク帯域幅、マシン 4 台、マシンあたり 8 個の Tesla V100 32G GPU
  2. V100/RDMA: 100Gb/s RDMA ネットワーク帯域幅、4 台のマシン、マシンあたり 8 個の Tesla V100 32G GPU。
  3. A100/TCP: 800Gb/s TCP ネットワーク帯域幅、マシン 4 台、マシンあたり 8 基の Tesla A100 40G GPU
  4. A100/RDMA: 800Gb/s RDMA ネットワーク帯域幅、4 台のマシン、マシンあたり 8 個の Tesla A100 40G GPU
  • モデル: GPT-13B
  • Megatron: v2.4、tensor-model-parallel-size を 4 に設定、pipeline-model-parallel-size を 4 に設定
  • DeepSpeed: v0.4.2、DeepSpeedExamples オープンソース コミュニティのデフォルトの zero3 構成を使用します。
  • 動作環境
  • 統計値: スループット (サンプル/秒)

上記のデータは以下を示しています:

  1. veGiantModel は、帯域幅の高低に関係なく、V100 と A100 の両方で Megatron と DeepSpeed を上回り、最大 6.9 倍のパフォーマンス向上を実現します。
  2. veGiantModel はネットワーク帯域幅の要件が低く、帯域幅の変化によるスループットへの影響が最も少ない (<10%) のに対し、DeepSpeed ​​(ZeRO) は帯域幅の要件が最も高く、その差は最大で約 5 倍になります。

原因分析

veGiantModel が Megatron や DeepSpeed よりも高速なのはなぜでしょうか? 理由は次のとおりです。

  • ByteCCL (BytePS) は、高性能な非同期通信ライブラリです。
  • カスタマイズされた並列戦略をサポートし、パフォーマンスの最適化を極限まで高めることができます。
  • veGiantModel は、データ並列処理、演算子分割、パイプライン並列処理という 3 つの分散並列戦略をサポートする際に、マシン間の帯域幅を考慮し、トポロジの配置を自動的に調整します。

ポータル

veGiantModel は現在、GitHub の次のアドレスでオープンソース化されています。

https://github.com/volcengine/veGiantModel

GitHubリポジトリには、veGiantModelの使い方と、それを使ってGPT事前トレーナーを素早く実行する方法についての詳細な手順が掲載されています。Volcano Engine機械学習プラットフォームはveGiantModelをネイティブサポートしており、現在パブリックベータ版です。ぜひお試しください: https://www.volcengine.com/product/ml-platform