トレーニングジョブを早期停止する - アマゾン SageMaker

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

トレーニングジョブを早期停止する

目標メトリクスで測定して、ハイパーパラメータ調整ジョブが大幅に改善されていない場合は、ハイパーパラメータ調整ジョブが開始したトレーニングジョブを早期に停止します。トレーニングジョブを早期停止すると、計算時間が短縮され、モデルの過剰な作成を防ぐことができます。トレーニングパラメータを早期に停止するようにハイパーパラメータ調整ジョブを構成するには、次のいずれかを実行します。

  • AWS SDK for Python (Boto 3) を使用している場合は、調整ジョブの設定に使用する HyperParameterTuningJobConfig オブジェクトの TrainingJobEarlyStoppingType フィールドを AUTO に設定します。

  • Amazon SageMaker Python SDK を使用している場合は、HyperParameterTuner オブジェクトの early_stopping_type パラメータを Auto に設定します。

  • SageMaker コンソールの [ハイパーパラメータ調整ジョブの作成] ワークフローの [早期停止] で、[Auto] を選択します。

早期停止の使用方法を示すサンプル ノートブックについては、以下を参照してください。 https://github.com/awslabs/amazon-sagemaker-examples/blob/master/hyperparameter_tuning/image_classification_early_stopping/hpo_image_classification_early_stopping.ipynb または hpo_image_classification_early_stopping.ipynb ノートブックを ハイパーパラメータチューニング 」セクション SageMakerの例 ノートブック・インスタンス内にあります。ノートブックインスタンスでのサンプルノートブックの使用方法については、「サンプルノートブックの使用」を参照してください。

早期停止の仕組み

ハイパーパラメータ調整ジョブの早期停止を有効にすると、SageMaker はハイパーパラメータ調整ジョブが開始した各トレーニングジョブを次のように評価します。

  • トレーニングの各エポックの後で、目標メトリクスの値を取得します。

  • 同じエポックまでの過去のすべてのトレーニングジョブについて目標メトリクスの移動平均を計算してから、すべての移動平均の中央値を計算します。

  • 現在のトレーニングジョブの目標メトリクスの値が、同じエポックまでの過去のトレーニングジョブの目標メトリクスの移動平均の中央値よりも悪い (目標メトリクスが最小化されると高くなり、最大化されると低くなる) 場合、SageMaker は 現在のトレーニングジョブを停止します。

早期停止をサポートするアルゴリズム

早期停止をサポートするために、アルゴリズムは各エポックについて目標メトリクスを発行する必要があります。以下の組み込み SageMaker アルゴリズムは、早期停止をサポートします。

注記

早期停止をサポートするこの組み込みアルゴリズムのリストは、2018 年 12 月 13 日現在のものです。他の組み込みアルゴリズムは、今後、早期停止をサポートする可能性があります。アルゴリズムが、ハイパーパラメータ調整ジョブの目標メトリクスとして使用できるメトリクス (可能であれば検証メトリクス) を発行する場合は、早期停止をサポートします。

独自のアルゴリズムで早期停止を使用するには、各エポックの後に目標メトリクスの値を発行するようにアルゴリズムを記述する必要があります。次のリストは、さまざまなフレームワークでこれを実行する方法を示しています。

TensorFlow

tf.keras.callbacks.ProgbarLogger クラスを使用します。詳細については、https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/ProgbarLogger を参照してください。

MXNet

[ mxnet.callback.LogValidationMetricsCallback. 詳細については、以下を参照してください。 https://mxnet.apache.org/api/python/callback/callback.html.

Chainer

extensions.Evaluator クラスを使用して Chainer を拡張します。詳細については、https://docs.chainer.org/en/v1.24.0/reference/extensions.html#evaluator を参照してください。

PyTorch と Spark

高レベルのサポートはありません。目標メトリクスを計算し、各エポックの後でそれらをログに書き込むように、明示的にトレーニングコードを記述する必要があります。