調整ジョブの追跡および完了基準の設定 - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

調整ジョブの追跡および完了基準の設定

完了基準を使用して、特定の条件が満たされた場合に調整ジョブを停止するように自動モデル調整 (AMT) に指示できます。これらの条件では、目標メトリクスに対して評価した際に改善されていないモデルパフォーマンスの最小値またはトレーニングジョブの最大数を設定できます。また、調整ジョブの進行状況を追跡して、継続させるか、手動で停止するかを決定することもできます。このガイドでは、調整ジョブの完了基準を設定する方法、進行状況を確認する方法、および調整ジョブを手動で停止する方法を説明します。

調整ジョブの完了基準を設定する

ハイパーパラメータ最適化中、調整ジョブによりループ内で複数のトレーニングジョブが起動されます。調整ジョブでは、以下のことが行われます。

  • トレーニングジョブの完了状況を確認し、それに応じて統計情報を更新する。

  • 次に評価するハイパーパラメータの組み合わせを決定する。

AMT では、調整ジョブから開始されたトレーニングジョブを継続的にチェックして、統計情報を更新します。これらの統計情報には、調整ジョブの実行時間とベストトレーニングジョブが含まれます。次に、AMT では完了基準に従ってジョブを停止すべきかどうかを判断します。これらの統計情報を確認して、ジョブを手動で停止することもできます。ジョブを手動で停止する方法の詳細については、「調整ジョブを手動で停止する」セクションを参照してください。

たとえば、調整ジョブが目的を満たしていれば、リソースを節約したり、モデルの品質を確保したりするために、調整を早期に中止できます。AMT はジョブのパフォーマンスを完了基準に対してチェックし、調整ジョブが満たされている場合は調整を停止します。

次の種類の完了基準を指定できます。

  • MaxNumberOfTrainingJobs — 調整が停止される前に実行するトレーニングジョブの最大数。

  • MaxNumberOfTrainingJobsNotImproving — 現在のベストトレーニングジョブの目標メトリクスに対してパフォーマンスが向上しないトレーニングジョブの最大数。たとえば、最適なトレーニングジョブによって、精度が 90% で、MaxNumberOfTrainingJobsNotImproving10 に設定された目標メトリクスが返された場合です。この例では、10 トレーニングジョブが 90 % より高い精度を返さなかった場合、調整が停止します。

  • MaxRuntimeInSeconds — 調整ジョブを実行できる時間のウォールクロック時間の上限 (秒単位)。

  • TargetObjectiveMetricValue — 調整ジョブの評価基準となる目標メトリクスの値。この値に達すると、AMT は調整ジョブを停止します。

  • CompleteOnConvergence — 内部アルゴリズムにより、調整ジョブが最適なトレーニングジョブの目標メトリクスより 1% 以上改善する可能性は低いと判断されたら、調整を停止するフラグ。

完了基準の選択

完了基準を 1 つまたは複数選択して、条件が満たされた後にハイパーパラメータの調整を停止できます。以下の手順では、完了基準を選択する方法と、どの基準がユースケースに最も適しているかを判断する方法を示しています。

  • ResourceLimits API MaxNumberOfTrainingJobsで を使用して、調整ジョブが停止する前に実行できるトレーニングジョブの数の上限を設定します。大きい数から始めて、調整ジョブの目標と照らし合わせながら、モデルのパフォーマンスに基づいて調整します。ほとんどのユーザーは、最適なハイパーパラメータ設定を見つけるために、50 個以上のトレーニングジョブの値を入力します。より高いレベルのモデルパフォーマンスを求めるユーザーは、200 個以上のトレーニングジョブを使用します。

  • BestObjectiveNotImproving API フィールドMaxNumberOfTrainingJobsNotImprovingで を使用して、指定した数のジョブの後にモデルのパフォーマンスが改善しない場合にトレーニングを停止します。モデルのパフォーマンスは、目的関数に対して評価されます。MaxNumberOfTrainingJobsNotImproving が満たされると、AMT は調整ジョブを停止します。調整ジョブは、ジョブの開始時に最も進捗が進む傾向があります。目的関数に対するモデルのパフォーマンスを改善するには、調整の終わりに近づくにつれ、より多くのトレーニングジョブが必要になります。類似のトレーニングジョブのパフォーマンスを目標メトリクスと照合して、MaxNumberOfTrainingJobsNotImproving の値を選択します。

  • ResourceLimits API MaxRuntimeInSecondsで を使用して、調整ジョブにかかる可能性のあるウォールクロック時間の上限を設定します。このフィールドを使用して、調整ジョブの完了期限を守ったり、コンピュートリソースを制限したりします。

    調整ジョブの推定合計計算時間を秒単位で求めるには、次の式を使用します。

    推定最大計算時間 (秒)= MaxRuntimeInSeconds * MaxParallelTrainingJobs * MaxInstancesPerTrainingJob

    注記

    調整ジョブの実際の時間は、このフィールドで指定された値と若干異なる場合があります。

  • TuningJobCompletionCriteria API TargetObjectiveMetricValueで を使用して調整ジョブを停止します。調整ジョブによって開始されたトレーニングジョブがこの目標メトリクスに達したら、調整ジョブを停止します。最適なモデルを見つけるために、ユースケースがコンピューティングリソースを費やすことではなく、特定のパフォーマンスレベルに達することに依存する場合は、このフィールドを使用してください。

  • TuningJobCompletionCriteria API CompleteOnConvergenceで を使用して、AMT が調整ジョブが収束したことを検出した後、さらに大きな進展が見られる可能性は低いと、調整ジョブを停止します。このフィールドは、他の完了基準のどの値を使用すべきかが明確でない場合に使用します。AMT は、幅広い範囲のベンチマークで開発およびテストされたアルゴリズムに基づいて収束を判断します。調整ジョブは、どのトレーニングジョブでも大幅な改善 (1% 以下) がもたらされない場合に収束したと定義されます。改善は、これまでに最もパフォーマンスの高いジョブによって返された目標メトリクスに対して測定されます。

さまざまな完了基準を組み合わせる

同じ調整ジョブで、さまざまな完了基準を組み合わせることもできます。完了基準のいずれかが満たされると、AMT は調整ジョブを停止します。たとえば、目標メトリクスを満たすまではモデルを調整したいが、ジョブが収束したら調整を続けたくない場合は、次のガイダンスを使用します。

  • TuningJobCompletionCriteria API TargetObjectiveMetricValueで を指定して、到達するターゲット目標メトリクス値を設定します。

  • AMT がモデルのパフォーマンスが向上する可能性が低いと判断した場合、調整ジョブを停止するには、 CompleteOnConvergenceEnabledに設定します。

調整ジョブの進行状況を追跡する

DescribeHyperParameterTuningJob API を使用すると、調整ジョブの実行中はいつでもその進行状況を追跡できます。調整ジョブの追跡情報を取得するために完了基準を指定する必要はありません。以下のフィールドを使用して、調整ジョブに関する統計情報を取得します。

  • BestTrainingJob – これまでに取得した最適なトレーニングジョブを記述し、目標メトリクスに対して評価されるオブジェクト。このフィールドを使用して、現在のモデルパフォーマンスと、このベストトレーニングジョブの目標メトリクスの値を確認します。

  • ObjectiveStatusCounters – 調整ジョブで完了したトレーニングジョブの合計数を指定するオブジェクト。調整ジョブの平均時間を推定するには、ObjectiveStatusCounters と調整ジョブの合計ランタイムを推定します。平均時間を使用すると、調整ジョブの実行時間を推定できます。

  • ConsumedResources — 調整ジョブで消費される RunTimeInSeconds などのリソースの総消費量です。API ConsumedResourcesにある と、同じ DescribeHyperParameterTuningJob API BestTrainingJob にある を比較します。また、ListTrainingJobsForHyperParameterTuningJobAPI からのレスポンスConsumedResourcesと比較し、消費されているリソースを考慮して、調整ジョブが満足のいく進行をしているかどうかを評価することもできます。

  • TuningJobCompletionDetails – 以下を含むジョブ完了情報の調整:

    • ジョブが収束した場合、収束が検出された時点を示すタイムスタンプ。

    • モデルのパフォーマンスが改善していないトレーニングジョブの数。モデルのパフォーマンスは、最適なトレーニングジョブの目標メトリクスに対して評価されます。

    調整ジョブの完了基準を使用して、調整ジョブによってモデルのパフォーマンスがどの程度向上するかを評価します。モデルのパフォーマンスは、完了まで実行された場合、最善の目標メトリクスに対して評価されます。

調整ジョブを手動で停止する

完了まで調整ジョブを実行するか、調整ジョブを手動で停止するかを決定できます。これを決定するには、前の「調整ジョブの進行状況を追跡する」セクションで説明したように、DescribeHyperParameterTuningJob API でパラメータによって返される情報を使用します。例として、複数のトレーニングジョブが完了してもモデルのパフォーマンスが改善されない場合は、調整ジョブを停止できます。モデルのパフォーマンスは、最善の目標メトリクスに対して評価されます。

調整ジョブを手動で停止するには、 StopHyperParameterTuningJob API を使用して、停止する調整ジョブの名前を指定します。