|
この記事は、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分散トレーニングの課題大規模モデルのパラメータが数十億から数兆へと増加すると、学習規模の拡大はクラスターコストの急増につながり、システムの安定性にも影響を与えます。このような大規模システムの運用コストの高さは、大規模モデルの学習時に対処すべき喫緊の課題となっています。
Ant AIトレーニングエンジニアリング実践上の画像は、Ant AIトレーニングのためのエンジニアリング技術スタックを示しています。分散トレーニングエンジンであるDLRoverは、Antの対話、コード、ビデオ、マルチモーダルモデルなど、多様なトレーニングタスクをサポートしています。DLRoverが提供する主な機能は次のとおりです。
機械の故障によりトレーニングコストが大幅に増加するAnt Financialは、トレーニング中のマシン障害がトレーニングコストを大幅に増加させるため、トレーニングの失敗を特に懸念しています。例えば、MetaでOPT-175Bモデルをトレーニングした際、124台のマシンと各マシンに80GBのA100 GPUを992基搭載し、AWS GPUの価格設定に基づくと1日あたり約70万人民元のコストが発生しました。この障害によりトレーニング期間が20日以上延長され、コンピューティングパワーコストが数千万人民元増加しました。 なぜトレーニングの不具合がこれほど大きな影響を及ぼすのでしょうか?
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 |