このページでは、トレーニング ジョブのライフサイクルの中におけるトレーニング クラスタの状態と、Agent Platform がトレーニング エラーを処理する方法について説明します。この情報を使用して、それに応じてトレーニング コードを適応させることができます。
トレーニング ジョブのライフサイクル
このセクションでは、Agent Platform がトレーニング ジョブのライフサイクルの中でワーカー VM を処理する方法について説明します。
新しいジョブをキューに入れる
CustomJob または HyperparameterTuningJob を作成すると、Agent Platform がジョブを実行するまで、そのジョブが
JOB_STATE_QUEUED 状態 のまま残ることがあります。通常、この状態は短い時間で終わりますが、プロジェクトにジョブのカスタム トレーニングの割り当てが残っていない場合、Agent Platform は十分な割り当てになるまでジョブをキューに残します。Google Cloud
ワーカーを並行して起動する
トレーニング ジョブが開始されると、Agent Platform は可能な限り多くのワーカーを短い期間内にスケジュール設定します。その結果、ワーカーは順番に起動するのではなく、並行して起動します。起動のレイテンシを短縮するため、Agent Platform は各ワーカーでコードが利用可能になり次第、コードの実行を開始します。すべてのワーカーが利用可能になると、Agent Platform は、ジョブの状態を JOB_STATE_RUNNING に設定します。
ほとんどの場合、機械学習フレームワークが、並列に起動するワーカーを自動的に処理します。トレーニング コードで分散戦略を使用している場合、並列に起動するワーカーを処理するために手動による調整が必要となることがあります。詳しくは、TensorFlow と PyTorch における分散戦略をご覧ください。
トレーニング ジョブ中にワーカーを再起動する
トレーニング ジョブの実行中に、Agent Platform が同じホスト名を持つワーカープールからワーカーを再起動する場合があります。その理由としては、以下のことが考えられます。
- VM のメンテナンス __: ワーカーを実行している VM が VM メンテナンスの対象になる場合、Agent Platform は別の VM でワーカーを再起動します。 詳細については、ライブ マイグレーション VM メンテナンスのためのをご覧ください。
ゼロ以外での終了: ワーカーがゼロ以外の終了コードで終了すると、 Agent Platform は、そのワーカーを同じ VM 内ですぐに再起動します。
- ワーカーが一般的なエラーで停止すると、それは 恒久的なエラーとして扱われ、Agent Platform によってジョブ全体が シャットダウンされます。Agent Platform がジョブ全体をシャットダウンする前にコンテナが再起動した場合、これらのコンテナは Cloud Logging にログを残すことがあります。
- 非恒久的なエラー( 一般的なエラーに記載がないエラー)でワーカーが停止すると、Agent Platform は、 再起動したワーカーが動作を継続できるようにします。これにより、ワーカーごとに最大 5 回再起動できるようになります。5 回再起動した後、ワーカーが再び停止すると、Agent Platform はジョブ全体を最大 3 回再試行した後、ジョブ全体を異常終了とします。
トレーニング コード内でワーカーの再起動を処理するには、トレーニング中にチェックポイントを定期的に保存し、ワーカーの再起動時にチェックポイントから復元できるようにします。トレーニングに 4 時間以上かかると予想される場合は、少なくとも 4 時間に 1 回、チェックポイントを保存することをおすすめします。TensorFlow と PyTorch でトレーニング チェックポイントを使用する方法を確認してください。
ジョブの正常終了
トレーニング ジョブが正常に完了すると、プライマリ レプリカが終了コード 0 で終了します。その時点で、Agent Platform は実行中の他のワーカーをすべてシャットダウンします。
Agent Platform によるトレーニング ジョブ エラーの処理方法
このセクションでは、Agent Platform が一般的なトレーニング ジョブ エラーと内部エラーを処理する方法について説明します。
ジョブが終了してから約 1 分後に、Agent Platform は終了コードに基づいて、トレーニング ジョブ オブジェクトにエラーコードを設定します。
一般的なエラーを処理する
次のいずれかの問題が発生した場合、Agent Platform はすべてのワーカーをシャットダウンします。
| エラーの種類 | エラー メッセージ / ログ | 注 |
| ユーザーコードの例外 | The replica REPLICA_NAME exited with a non-zero status of EXIT_CODE. Termination reason: REASON. | ジョブで一時的な終了コードが発生した場合、
Agent Platform は、ジョブを 3 回まで再試行します。
Agent Platform にジョブを再試行するよう求める一時的なエラーコードには、次のようなものがあります。
|
| メモリ不足 | The replica REPLICA_NAME ran out of memory and exited with a non-zero status of EXIT_CODE. |
GKE は Agent Platform ノード上でメモリを予約します。最小マシンタイプ(n1-standard-4 など)の場合、Agent Platform システム エージェントは合計メモリの 40% まで使用できます。大規模な VM の場合、オーバーヘッドは比較的小さくなります。n1-standard マシンタイプに割り当て可能なメモリを比較します。 |
| リージョンでの容量不足(Compute Engine の在庫切れ) | Resources are insufficient in region: REGION_NAME. 別のリージョンを試すか、別のアクセラレータを使用してください。 | 在庫切れは、選択した CPU または GPU の容量がリージョンでの Compute Engine の処理能力の上限に達した場合に発生します。これは、プロジェクトの割り当てとは関係ありません。
この場合、Agent Platform は、ジョブを
3 回まで再試行します。
A2 VM と A3 VM で実行されるジョブの場合、Dynamic Workload Scheduler を使用すると、 在庫切れエラーで失敗したときではなく、リクエストされた GPU リソースが利用可能になったタイミングで実行するジョブを スケジュールできます。詳細については、 リソースの可用性に基づいてトレーニング ジョブをスケジュールするをご覧ください。 |
内部エラーを処理する
Agent Platform で内部エラーが発生した場合は、ジョブの再起動を 2 回試みます(合計 3 回試行)。その再起動にも失敗すると、Agent Platform は「Internal error occurred for the current attempt」というメッセージで内部エラーを返します。