HUOXIU

AIトレーニングの計算効率向上:Ant FinancialのDLRover障害自己修復技術の革新的な実践

この記事は、Ant Financial の DLRover のオープンソース リーダーである Wang Qinlong (別名 Changfan)が 2024 Global Developers Conference (GDC) で行った「DLRover トレーニングの障害の自己修復: 大規模 AI トレーニングの計算効率を大幅に向上させる」と題するプレゼンテーションに基づいています。

王秦龍氏は、アントグループにおいて長年AIインフラの研究開発に携わり、アントグループの分散トレーニングにおけるエラスティックフォールトトレランスと自動スケーリングプロジェクトの構築を主導してきました。ElasticDLやDLRoverなど、複数のオープンソースプロジェクトに参加し、2023年Open Atom Foundation Active Open Source Contributor、2022年Ant Group T-Star Outstanding Engineerに選出されています。現在は、アントグループのAIインフラオープンソースプロジェクトDLRoverのアーキテクトを務め、安定性、拡張性、効率性に優れた大規模分散トレーニングシステムの構築に注力しています。

現在、大規模な言語モデルの学習には、GPUなどのアクセラレータカードが多数必要です。しかし、GPUは故障率が高く、頻繁な故障は学習の中断、無駄な計算、クラスターのアイドル状態につながり、時間と計算能力の大きな浪費につながります。この問題に対処するため、DLRoverは学習障害の自己修復技術をオープンソース化しました。Chang Fan氏はプレゼンテーションで、迅速なノードステータス検出、柔軟なスケーリング、動的ネットワーキング、フラッシュチェックポイントなどの技術を通じて、DLRoverが障害による計算能力の浪費を大幅に削減する方法を説明しました。

🌟GitHub でスターを付けていただけることを歓迎します:

DLRover:

https://github.com/intelligent-machine-learning/dlrover

GLake:

https://github.com/intelligent-machine-learning/glake

大規模AI分散トレーニングの課題

大規模モデルのパラメータが数十億から数兆へと増加すると、学習規模の拡大はクラスターコストの急増につながり、システムの安定性にも影響を与えます。このような大規模システムの運用コストの高さは、大規模モデルの学習時に対処すべき喫緊の課題となっています。

  • 多数のパラメータ: 大規模モデルのパラメータ数が兆単位に近づく中、膨大なコンピューティング リソースで効率的なモデル トレーニングを実現するにはどうすればよいでしょうか。
  • 高コスト:大規模クラスターではより多くのハードウェアリソースが必要となり、コストが大幅に増加します。AIのトレーニングコストを削減するにはどうすればよいでしょうか?
  • 安定性:クラスターサイズが大きくなると、単一ノードの障害率は変わらないものの、全体の障害確率は増加します。分散トレーニングの安定性を向上させるにはどうすればよいでしょうか?

Ant AIトレーニングエンジニアリング実践

上の画像は、Ant AIトレーニングのためのエンジニアリング技術スタックを示しています。分散トレーニングエンジンであるDLRoverは、Antの対話、コード、ビデオ、マルチモーダルモデルなど、多様なトレーニングタスクをサポートしています。DLRoverが提供する主な機能は次のとおりです。

  • トレーニング失敗の自己修復: キロカロリー分散トレーニングの有効トレーニング時間は 97% 以上を占め、大規模なトレーニング失敗の計算コストを削減します。
  • ATorchトレーニング最適化:モデルとハードウェアに基づいて最適な分散トレーニング戦略を自動的に選択します。キロカロリー(A100)クラスターのコンピューティング能力を60%以上利用します。
  • トレーニングオプティマイザー:AdamWと比較して収束速度が1.5倍向上しました。関連する結果はECML PKDD '21、KDD '23、およびNeurIPS '23で発表されました。
  • GLakeのメモリと転送の最適化:統合メモリと転送の最適化、そしてグローバルメモリの最適化により、トレーニングに必要なメモリが2~10倍削減されます。この結果はASPLOS'24で発表されました。

機械の故障によりトレーニングコストが大幅に増加する

Ant Financialは、トレーニング中のマシン障害がトレーニングコストを大幅に増加させるため、トレーニングの失敗を特に懸念しています。例えば、MetaでOPT-175Bモデルをトレーニングした際、124台のマシンと各マシンに80GBのA100 GPUを992基搭載し、AWS GPUの価格設定に基づくと1日あたり約70万人民元のコストが発生しました。この障害によりトレーニング期間が20日以上延長され、コンピューティングパワーコストが数千万人民元増加しました。

なぜトレーニングの不具合がこれほど大きな影響を及ぼすのでしょうか?

  • まず、分散トレーニングでは複数のノードが連携して動作します。いずれかのノードに障害が発生した場合(ソフトウェア、ハードウェア、ネットワークカード、GPUの問題など)、トレーニングプロセス全体を一時停止する必要があります。
  • 第二に、学習の失敗のトラブルシューティングには時間と労力がかかります。例えば、一般的に用いられる手動検査方法であるバイナリサーチ法では、1回のチェックに少なくとも1~2時間かかります。
  • 最後に、トレーニングはステートフルです。トレーニングを再開するには、前のトレーニング状態から再開する必要があり、トレーニング状態は定期的に保存する必要があります。この保存プロセスには時間がかかり、障害によるロールバックも計算を無駄にします。右上の図は、障害自己修復デプロイメント前のトレーニング時間の分布を示しています。有効なトレーニング時間はわずか約72%であることがわかります。

DLRoverトレーニング障害自己修復プロセス

DLRover は、自動ノード検出、自動スケールアップとスケールダウン、高速チェックポイントなどの包括的な障害自己修復メカニズムを導入します。

自動ノード検出

自動ノード検出とは、トレーニングが中断されたときにシステムが自動的にハードウェアと通信のチェックを実行し、障害のあるノードを識別して分離し、それらを置き換える新しいノードを起動することを指します。

自動拡張と収縮

トレーニング中の潜在的なノード変更に対処するために、DLRover は自動スケーリング テクノロジーを採用し、動的ネットワークと柔軟なスケジューリングを使用して、制御可能な数のノードで継続的なトレーニングを実現し、プロセス全体を通じて手動による介入を必要としません。

右の図を例にすると、システムには最初 6 つの実行ノードがあり、それぞれが Kubernetes 環境の Pod に対応しています。しばらく実行した後、Pod 5 がハードウェア障害によりクラッシュしました。システムはすぐに応答メカニズムを開始し、クラスターから新しい Pod 6 をスケジュールして、障害が発生した Pod 5 を置き換えようとします。ただし、クラスター内の 1 台のマシンにすでに障害が発生しているため、利用可能なコンピューティング リソースが限られており、新しい Pod 6 を正常にスケジュールできません。この時点で、システムはインテリジェントに自動調整を実行し、ジョブのノード数を 4 に減らして、既存の利用可能なリソースでジョブを引き続き実行できるようにします。5 ノードではなく 4 ノードを維持することを選択した理由は、大規模モデル アルゴリズムの実際のニーズを考慮し、リソースの過剰割り当てを避け、トレーニング効率に影響を与えないように、ノード数を適切に制御する必要があるためです。以前に障害が発生した 6 番目のノードが修復され、クラスターに再接続されると、システムは 6 つのノードの状態に戻り、トレーニング プロセス全体が加速されます。

フラッシュチェックポイント

トレーニング障害からの回復において鍵となるのは、モデル状態の保存と復元です。従来のチェックポイント方式では、保存に時間がかかるため、トレーニング効率が低下することがよくありました。この問題を解決するために、DLRoverは革新的なFlash Checkpoint方式を提案しました。この方式は、トレーニング中にモデル状態をGPU​​メモリからメモリへほぼリアルタイムでエクスポートできます。同時に、メモリバックアップ機構も備えているため、ノードに障害が発生した場合でも、バックアップノードのメモリからトレーニング状態を迅速に復元できるため、障害回復時間が大幅に短縮されます。

上の図に示すように、実験により、Flash Checkpoint ソリューションは、単一マシンのマルチカード環境でも、複数マシンのマルチカード環境でも、モデル状態の保存と復元の速度を大幅に向上させることが実証されています。

家庭内カードトレーニングにおける自己治癒トレーニングの実践

DLRover のフォールトヒーリング機能は、GPU のサポートに加えて、国産アクセラレータ カードでの分散トレーニングもサポートしています。たとえば、Huawei Ascend 910 プラットフォームで LLama-7B モデルを実行する場合、大規模なトレーニングに 256 枚のカードを使用しました。当初は KubeFlow の PyTorchJob を使用していましたが、このツールにはフォールト トレランスが不足していたため、約 10 時間後にトレーニング プロセスが自動的に終了しました。このような場合、ユーザーはタスクを手動で再送信する必要がありました。そうしないと、クラスター リソースがアイドル状態のままになります。2 番目のグラフは、トレーニングのフォールトヒーリング機能を有効にした後のトレーニング プロセス全体を示しています。20 時間のトレーニング後、通信タイムアウトが発生しましたが、その時点でシステムは自動的にトレーニング プロセスを再起動し、トレーニングを再開しました。約 40 時間後、マシンのハードウェア障害が発生しましたが、システムはすぐに障害のあるマシンを分離し、ポッドを再起動してトレーニングを続行しました。 Huawei Ascend 910 のサポートに加えて、Alibaba の Hanguang PPU もサポートしており、Muxi Technology と連携して、自社開発の GPU での大規模モデル トレーニングに DLRover を使用しています。

1000カロリートレーニングの実践で自己治癒力を鍛える

上の画像は、1,000枚以上のH800カードを使用したトレーニングにおけるDLRoverのトレーニング障害自己修復の実用的な有効性を示しています。 1日に1回の障害頻度で1,000枚以上のH800カードを使用した大規模モデルをトレーニングした場合、トレーニング障害自己修復機能を導入した後、実効トレーニング時間は97%を超えました。右側の比較表は、Alibaba Cloudの高性能ストレージFSDPを使用しても、1回の保存に約5分かかるのに対し、当社のFlash Checkpoint技術ではわずか0.3秒で完了することを示しています。さらに、最適化により、ノード効率が1分近く向上しました。エクスポート間隔については、以前は2時間ごとにエクスポート操作を行っていましたが、Flash Checkpoint機能を実装した後は、10分ごとに高頻度エクスポートを実現できます。1週間の保存操作に費やされた累積時間はほぼ無視できるほどです。同時に、ロールバック時間も以前に比べて約5分の1に短縮されました。

オープンソースのコラボレーションと共有

技術の進歩はオープンなコラボレーションから始まります。GitHub上のオープンソースプロジェクトへのご参加、ぜひ皆様のフォローをお待ちしております。

DLRover:

https://github.com/intelligent-machine-learning/dlrover

GLake:

https://github.com/intelligent-machine-learning/glake