ハイパーパラメータの範囲を定義する - Amazon SageMaker

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

ハイパーパラメータの範囲を定義する

このガイドでは、 を使用して SageMaker APIsハイパーパラメータ範囲を定義する方法について説明します。また、使用できるハイパーパラメータのスケーリングタイプのリストも提供しています。

ハイパーパラメータと範囲を選択すると、調整ジョブのパフォーマンスに大きく影響します。ハイパーパラメータチューニングでは、調整可能なハイパーパラメータごとに指定した値の範囲を検索して、モデルに最適なハイパーパラメータ値を見つけます。調整ジョブ中に変化しない静的ハイパーパラメータを最大 100 個指定することもできます。ハイパーパラメータは、合計で 100 個まで (静的パラメータ + 調整可能なパラメータ) を使用できます。ハイパーパラメータと範囲の選択に関するガイダンスについては、ハイパーパラメータ調整のベストプラクティスを参照してください。Autotune を使用して最適な調整ジョブ設定を見つけることもできます。詳細については、次の「Autotune」セクションを参照してください。

注記

SageMaker 自動モデルチューニング (AMT) では、合計 100 個のハイパーパラメータの制限に寄与するハイパーパラメータ (複数可) が追加される場合があります。現在、トレーニング中に使用するために目標メトリクスをチューニングジョブに渡すには、 _tuning_objective_metricが自動的に SageMaker 追加されます。

静的ハイパーパラメータ

静的ハイパーパラメータは次の場合に使用します。 例えば、 AMTを使用して、 param1 (調整可能なパラメータ) と param2 (静的パラメータ) を使用してモデルをチューニングできます。その場合、2 つの値の間にある param1 の探索空間を使用して、以下のように param2 を静的ハイパーパラメータとして渡します。

param1: ["range_min","range_max"] param2: "static_value"

静的ハイパーパラメータは次のような構造になっています。

"StaticHyperParameters": { "objective" : "reg:squarederror", "dropout_rate": "0.3" }

Amazon SageMaker API を使用して、 CreateHyperParameterTuningJob オペレーションに渡すHyperParameterTrainingJobDefinitionパラメータの StaticHyperParametersフィールドにキー値のペアを指定できます。

動的ハイパーパラメータ

を使用して SageMaker API、ハイパーパラメータ範囲 を定義できます。CreateHyperParameterTuningJob 操作に渡す HyperParameterTuningJobConfig パラメータの ParameterRanges フィールドに、ハイパーパラメータの名前と値の範囲を指定します。

ParameterRanges フィールドには、カテゴリ、整数、連続の 3 つのサブフィールドがあります。検索対象となる調整可能なハイパーパラメータを合計 30 個まで定義できます (カテゴリ + 整数 + 連続)。

注記

各カテゴリ別ハイパーパラメータには最大 30 個の異なる値を設定できます。

動的ハイパーパラメータは次のような構造になっています。

"ParameterRanges": { "CategoricalParameterRanges": [ { "Name": "tree_method", "Values": ["auto", "exact", "approx", "hist"] } ], "ContinuousParameterRanges": [ { "Name": "eta", "MaxValue" : "0.5", "MinValue": "0", "ScalingType": "Auto" } ], "IntegerParameterRanges": [ { "Name": "max_depth", "MaxValue": "10", "MinValue": "1", "ScalingType": "Auto" } ] }

Grid 戦略を使用して調整ジョブを作成する場合、指定できるのはカテゴリ値だけです。MaxNumberofTrainingJobs を指定する必要はありません。この値は、カテゴリ別パラメータから生成できる設定の合計数から推測されます。MaxNumberOfTrainingJobs を指定した場合、この値は、異なるカテゴリの可能な組み合わせの合計数と等しくなる必要があります。

Autotune

ハイパーパラメータ範囲、リソース、または目標メトリクスを検索する時間とリソースを節約するため、Autotune により一部のハイパーパラメータフィールドの最適値を自動的に推測できます。Autotune を使用して、以下のフィールドの最適な値を検索します。

  • ParameterRanges – チューニングジョブが最適化できるハイパーパラメータの名前と範囲。

  • ResourceLimits – チューニングジョブで使用される最大リソース。これらのリソースには、トレーニングジョブの最大数、調整ジョブの最大実行時間、同時に実行できるトレーニングジョブの最大数が含まれます。

  • TrainingJobEarlyStoppingType – ジョブが目標メトリクスに対して大幅に改善されない場合に、トレーニングジョブを停止するフラグ。デフォルトでは有効になっています。詳細については、「トレーニングジョブを早期停止する」を参照してください。

  • RetryStrategy – トレーニングジョブを再試行する回数。RetryStrategy の値を 0 以外に設定すると、ジョブが正常に完了する可能性が高くなります。

  • Strategy — ハイパーパラメータ調整で、起動するトレーニングジョブに使用するハイパーパラメータ値の組み合わせをどのように選択するかを指定します。

  • ConvergenceDetected – 自動モデル調整 (AMT) がモデル収束を検出したことを示すフラグ。

Autotune を使用するには、次の操作を行います。

  1. AutoParametersフィールドにハイパーパラメータとサンプル値を指定しますParameterRangesAPI。

  2. Autotune を有効にします。

AMT は、ハイパーパラメータとサンプル値が自動チューニングの対象となるかどうかを判断します。Autotune で使用できるハイパーパラメータは、適切なパラメータ範囲タイプに自動的に割り当てられます。次に、 AMT ValueHintを使用して最適な範囲を選択します。を使用してDescribeHyperParameterTrainingJobAPI、これらの範囲を表示できます。

次の例は、Autotune を使用する調整ジョブを設定する方法を示しています。設定例では、ハイパーパラメータ max_depthValueHint にサンプル値 4 が含まれています。

config = { 'Autotune': {'Mode': 'Enabled'}, 'HyperParameterTuningJobName':'my-autotune-job', 'HyperParameterTuningJobConfig': { 'HyperParameterTuningJobObjective': {'Type': 'Minimize', 'MetricName': 'validation:rmse'}, 'ResourceLimits': {'MaxNumberOfTrainingJobs': 5, 'MaxParallelTrainingJobs': 1}, 'ParameterRanges': { 'AutoParameters': [ {'Name': 'max_depth', 'ValueHint': '4'} ] } }, 'TrainingJobDefinition': { .... }

前の例を続けると、前の設定が CreateHyperParameterTuningJob への呼び出しに含まれた後にチューニングジョブが作成されますAPI。次に、autotune は の max_depth ハイパーパラメータ AutoParameters をハイパーパラメータ に変換しますIntegerParameterRanges。からの次のレスポンスDescribeHyperParameterTrainingJobAPIは、 IntegerParameterRanges の最適max_depth2 から の間であることを示しています8

{ 'HyperParameterTuningJobName':'my_job', 'HyperParameterTuningJobConfig': { 'ParameterRanges': { 'IntegerParameterRanges': [ {'Name': 'max_depth', 'MinValue': '2', 'MaxValue': '8'}, ], } }, 'TrainingJobDefinition': { ... }, 'Autotune': {'Mode': 'Enabled'} }

ハイパーパラメータのスケーリングタイプ

整数型および連続型のハイパーパラメータ範囲では、ハイパーパラメータ調整に使用するスケールを選択できます。たとえば、値の範囲を検索するには、ハイパーパラメータ範囲の ScalingType フィールドに値を指定できます。次のハイパーパラメータスケーリングタイプから選択できます。

Auto

SageMaker ハイパーパラメータの調整は、ハイパーパラメータに最適なスケールを選択します。

[Linear] (線形)

ハイパーパラメータの調整では、線形スケールを使用してハイパーパラメータ範囲内の値を検索します。通常、すべての値の最低から最高までの範囲が比較的小さい (1 桁違いである) 場合に、線形スケールを選択します。範囲内の値の均一な検索により、範囲全体を適切に探索できるためです。

対数

ハイパーパラメータの調整では、対数を使用してハイパーパラメータ範囲内の値を検索します。

対数スケールは、範囲内の値が 0 より大きい場合に使用できます。

対数スケールは、数桁違いの値の範囲を検索する場合に使用します。

たとえば、線形学習モデルを調整する モデルの調整で、learning_rate ハイパーパラメータに対して値の範囲として 0.0001~1.0 を指定する場合、対数スケールでの均一な検索では、線形スケールでの検索よりも範囲全体のより適切なサンプルが得られます。線形スケールでの検索は、平均でトレーニング予算の 90% が 0.1~1.0 の値にのみ費やされ、トレーニング予算の 10% のみが 0.0001~0.1 の値に費やされるためです。

ReverseLogarithmic

ハイパーパラメータの調整では、逆対数スケールを使用してハイパーパラメータ範囲内の値を検索します。逆対数スケールは、連続したハイパーパラメータ範囲でのみサポートされています。整数のハイパーパラメータ範囲ではサポートされていません。

小さい変更 (1 に非常に近い変更) に対して極めて敏感である範囲を検索する場合に、逆対数スケールを選択します。

逆対数スケールは、範囲全体が範囲 0<=x<1.0 内に収まる場合にのみ使用できます。

ハイパーパラメータスケーリングを使用するノートブックの例については、「」の「Amazon SageMaker ハイパーパラメータの例 GitHub」を参照してください。