このトピックでは、Deep Learning Containers (DLC) の SanityCheck 機能の使用方法について説明します。
概要
AI トレーニングのシナリオでは、以下の問題が発生する可能性があります。
ジョブの中断や GPU リソースの浪費につながるリソース障害:ジョブは、モデルチェックポイントの読み込みなど、初期化に多くの時間を費やしたにもかかわらず、リソースの障害が原因で失敗することがあります。問題の調査とジョブの再送信は、GPU リソースの浪費につながります。
パフォーマンス診断とテストのためのツールが不十分:ジョブの途中でモデルのトレーニングパフォーマンスが低下した場合、低速ノードが原因である可能性がありますが、迅速に特定することは困難です。加えて、ユーザーは多くの場合、リソースグループ内のマシンの GPU 計算および通信パフォーマンスをテストするための、便利で信頼性の高いベンチマークを持ち合わせていません。
これらの問題に対処するため、DLC は分散トレーニングジョブのコンピューティングリソースの健全性とパフォーマンスをチェックする SanityCheck 機能を提供します。この機能は、DLC トレーニングジョブを作成する際に有効にすることができます。SanityCheck はトレーニングリソースに対して包括的なチェックを実行し、障害ノードを自動的に隔離し、自動化されたバックエンドのメンテナンスワークフローをトリガーします。このプロセスにより、トレーニングの初期段階で問題が発生する可能性が減少し、ジョブの成功率が向上します。チェックが完了すると、SanityCheck は GPU の計算および通信パフォーマンスに関するレポートを生成します。このレポートは、トレーニングのパフォーマンスを低下させる可能性のある要因を特定するのに役立ち、全体的な診断効率を向上させます。
制限事項
現在、この機能は Lingjun インテリジェントコンピューティングリソースを使用する PyTorch トレーニングジョブでのみ利用可能です。これらのジョブは、割り当てられた各マシンのすべての GPU を使用する必要があります。Lingjun インテリジェントコンピューティングリソースは、許可リストに登録されたユーザーのみが利用できます。アクセスをリクエストするには、アカウントマネージャーにお問い合わせください。
ヘルスチェックの有効化
コンソールの使用
Platform of Artificial Intelligence (PAI) コンソールでDLC トレーニングジョブを作成する際、以下の主要なパラメーターを設定することでヘルスチェックを有効にできます。ジョブを作成すると、システムはリソースの健全性と可用性をチェックし、結果を提供します。
主要なパラメーターは以下の通りです。
[Resource Information] セクション:
パラメーター
説明
Resource Type
Lingjun Intelligence Resources を選択します。
Source
Resource Quota を選択します。
Resource Quota
Lingjun インテリジェントコンピューティングリソースの既存のリソースクォータを選択します。リソースクォータの作成方法については、「リソースクォータの作成」をご参照ください。
Framework
PyTorch を選択します。
Job Resource
ジョブは各マシンのすべての GPU を使用するように設定する必要があります。
[Fault Tolerance and Diagnosis] セクションで、[Health Check] スイッチをオンにし、以下のパラメーターを設定します。
パラメーター
説明
Check Time
Before Job Runs (デフォルト):システムがジョブにリソースを割り当てた後、コードを実行する前に、コンピューティングノードの事前チェックを実行します。
After Job Restarts:AIMaster の自動フォールトトレランスが例外によりジョブを再起動した後にヘルスチェックを実行します。
説明このオプションを使用するには、[Automatic Fault Tolerance] スイッチをオンにする必要があります。詳細については、「AIMaster:弾力的で自動的なフォールトトレランスエンジン」をご参照ください。
[Before Job Runs + After Job Restarts]:ジョブの実行前とジョブの再起動後の両方でヘルスチェックを実行します。
説明このオプションを使用するには、[Automatic Fault Tolerance] スイッチをオンにする必要があります。詳細については、「AIMaster:弾力的で自動的なフォールトトレランスエンジン」をご参照ください。
Check Items
チェック項目は、計算パフォーマンスチェック、ノード通信チェック、計算と通信のオーバーラップチェック、モデルシミュレーション検証の 4 つのカテゴリに分類されます。チェック項目と推奨シナリオの詳細については、「付録:チェック項目」をご参照ください。
デフォルトでは、GPU GEMM (GPU GEMM パフォーマンスのチェック用) と All-Reduce (ノード通信パフォーマンスのチェックと低速または障害ノードの特定用) が有効になっています。
リストからチェック項目を検索または選択できます。また、クイック設定テンプレートを使用して、定義済みのチェック項目セットを選択することもできます。
Maximum Check Duration
ヘルスチェックに許容される最大時間。デフォルトは 60 分です。チェックがタイムアウトした場合、システムは設定されたチェック例外処理ポリシーをトリガーします。
Exception Handling Policy
ヘルスチェックが失敗した場合、システムは選択されたポリシーに従ってジョブを処理します。
[End job]:障害または疑わしいノードが特定された場合、ジョブは終了し、「Check Failed」とマークされます。
[Add to blocklist and rerun]:障害または疑わしいノードが特定された場合、システムは自動的にノードをブロックリストに追加し、ジョブを再起動し、すべてのチェックがパスするまでチェックを再実行します。
Maximum Restart Count
処理ポリシーが「ブロックリストに追加して再実行」に設定されている場合、最大再起動回数を設定できます。デフォルト値は 10 です。最大再起動回数を超えた場合、ジョブは自動的に失敗します。
Other Configurations
このパラメーターはデフォルトで空です。高度なパラメーターを設定するために使用できます。
チェック結果の表示
ヘルスチェックのステータス
DLC ジョブのヘルスチェックプロセスには、以下のステータスが含まれます。
Checking:ヘルスチェックが進行中です。
Check Failed:障害ノードが検出された場合、またはチェックがタイムアウトした場合、チェックは失敗します。
Check Passed:すべてのヘルスチェックがパスすると、ジョブのステータスは Running に変わります。
ヘルスチェック結果の表示
コンソールの使用
DLC ジョブの詳細ページで、Event タブに移動し、[Health Check] をクリックすると、チェックの進捗と結果が表示されます。
ヘルスチェックには、[Preparing Check Environment]、[GPU GEMM]、[GPU Kernel Launch]、[All-Reduce-Single-Node]、[MatMul/All-Reduce Overlap]、[Mini GPT-Single-Node] などの項目が含まれます。緑色のチェックマークは、項目がパスしたことを示します。
[Restart History] タブをクリックすると、再起動回数、再起動理由、および結果を表示できます。
メッセージ通知の設定
PAI ワークスペースのイベント通知設定で通知ルールを作成できます。Event Type には、DLC Job > Automatic Fault Tolerance を選択します。他のパラメーターの設定方法については、「メッセージ通知」をご参照ください。ヘルスチェックが失敗した場合、システムは通知を送信します。
ワークスペースでのメッセージ通知ルールの作成方法については、「イベント通知設定」をご参照ください。
付録:チェック項目
推定チェック時間は 2 台のマシン構成に基づいたものであり、参考値です。実際の時間とは異なる場合があります。
チェック項目 | 説明 (シナリオ) | 推定所要時間 | |
計算パフォーマンスチェック | GPU GEMM | GPU GEMM のパフォーマンスをテストします。このチェックにより、以下を特定できます。
| 1 分 |
GPU Kernel Launch | GPU カーネル起動のレイテンシーをテストします。このチェックにより、以下を特定できます。
| 1 分 | |
ノード通信チェック | All-Reduce | ノードの通信パフォーマンスをテストし、低速または障害のある通信ノードを特定します。さまざまな集団通信パターンについて、以下を特定します。
| 単一の集団通信チェック 5 分 |
All-to-All | |||
All-Gather | |||
Multi-All-Reduce | |||
Network Connectivity | 先頭または末尾のノードのネットワーク接続性をテストし、接続に問題のあるノードを特定します。 | 2 分 | |
計算と通信のオーバーラップチェック | MatMul/All-Reduce Overlap | 通信と計算カーネルがオーバーラップするときのシングルノードのパフォーマンスをテストします。このチェックにより、以下を特定できます。
| 1 分 |
モデルシミュレーション検証 | Mini GPT | モデルシミュレーションを使用して AI システムの信頼性を検証します。これにより以下を特定します。
| 1 分 |
Megatron GPT | 5 分 | ||
ResNet | 2 分 | ||