[小ネタ]Amazon SageMakerの学習ジョブのステータスの遷移

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、小澤です。

Amazon SageMakerの学習ジョブには内部で今何をしているのかを示すステータスがあります。 TrainingJobStatusとSecondaryStatusという二つの項目で管理されるこれらにどのような項目があり、 どのように遷移していくのか見ていきましょう。

TrainingJobStatusとSecondaryStatus

SageMakerではこの2つの項目によって現状を把握できます。

TrainingJobStatusは処理の現状を表すものになっており、 以下のような項目で今何をしているのかが確認できます。

  • InProgress : 処理を実行中
  • Completed : 処理が完了済み
  • Failed : 処理が失敗
  • Stopping : 処理を停止中
  • Stopped : 処理が停止済み

正常に処理が終了した際の変遷としては、 学習処理が実行された際にInProgressとなり完了するとCompletedとなります。

データや処理内容に問題があり、失敗した場合はFailedとなります。

ユーザが明示的に処理を途中で停止させたり、最大実行時間を超えた場合にはStoppedへと処理が変遷します。 その際、すぐに処理が停止するわけではなくStopping → Stoppedと変遷していきます。

上記のような大まかな状態のほか、いくつかの項目ではSecondaryStatusとしてより詳細な状況を確認できます。 SecondaryStatusはTrainingJobStatusによって取りうる内容が変わります。

TrainingJobStatusがInprogressの場合、以下のような項目のいずれかがSecondaryStatusとなります。

  • Starting : 実行開始中
  • Downloading : インスタンスに学習データをダウンロード中(Fileモードの時のみ)
  • Training : 学習処理の実行中
  • Interrupted : マネージドスポットインスタンスを利用時に途中で中断された
  • Uploading : 学習済みモデルをアップロード中

TrainingJobStatusがStoppedの場合は、以下のように停止の理由がSecondaryStatusとなります。

  • MaxRuntimeExceeded : 学習の最大時間を超えた
  • MaxWaitTimeExceeded : マネージドスポットインスタンスを利用時に最大待ち時間を超えた
  • Stopped : 上記以外での停止(明示的に停止させた場合など)

Completed, Failed, Stoppingについては、それぞれ単一のSecondaryStatusとなります。

ジョブの詳細を取得した際に取得可能なものついて、TrainingJobStatusは現在のステータスのみとなっていますが、 SecondaryStatusについては、遷移の履歴と開始・終了日時が取得可能になっています。

StatusMessageについて

SecondaryStatusについては、ステータスの項目の他にメッセージが含まれています。

例えばSecondaryStatusがStartingの時にはインスタンスを起動中、 インスタンスに問題が発生して別インスタンスを起動中、 スポットインスタンスの確保に失敗してリトライ中などといったメッセージが確認できます。

ただし、これらは変更される可能性があるもののため、 プログラム中からは利用しないことが推奨されているのでここでは詳細は割愛します。

おわりに

今回はSageMakerの学習ジョブにおけるステータスについて紹介しました。

独自のパイプラインを作成するなど、システム上からステータスを確認する必要がある際のご参考にしてください。 ただし、これらはインフラ基盤としてのSageMaker内部動作を示すもののため、 学習中の詳細な情報などは別途利用者側でログ出力を行って情報を確認できるようにしておく必要があります。