翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
メトリクスと環境変数を定義する
調整ジョブでは、メトリックスを使用してパフォーマンスを評価することで、起動するトレーニングジョブのハイパーパラメータを最適化します。このガイドでは、トレーニングにカスタムアルゴリズムを使用するか、Amazon の組み込みアルゴリズムを使用するようにメトリクスを定義する方法について説明します SageMaker。このガイドでは、自動モデル調整 (AMT) ジョブ中に環境変数を指定する方法も示します。
メトリクスを定義する
Amazon SageMaker ハイパーパラメータチューニングは、機械学習アルゴリズムstdout
とstderr
ストリームを解析して、損失や検証精度などのメトリクスを見つけます。メトリクスは、データセットに対するモデルのパフォーマンスを示します。
以下のセクションでは、組み込みアルゴリズムとカスタムアルゴリズムの 2 種類のアルゴリズムをトレーニングに使用する方法について説明します。
組み込みアルゴリズムをトレーニングに使用する
SageMaker 組み込みアルゴリズム のいずれかを使用する場合、メトリクスは既に定義されています。また、組み込みアルゴリズムは、自動的に最適化のハイパーパラメータ調整にメトリクスを送信します。これらのメトリクスは Amazon CloudWatch ログにも書き込まれます。詳細については、「Amazon SageMaker で Amazon イベントをログに記録する CloudWatch」を参照してください。
調整ジョブの目標メトリクスについては、組み込みアルゴリズムから出力されるメトリクスの 1 つを選択する必要があります。使用可能なメトリクスのリストについては、「Amazon SageMaker 組み込みアルゴリズムの使用」またはトレーニング済みモデル「」の「モデル調整」セクションを参照してください。
最大 40 個のメトリクスを選択して、トレーニングジョブで監視できます。目標メトリクスとするメトリクスを 1 つ選択します。ハイパーパラメータ調整ジョブは、目標メトリクスに対して最もパフォーマンスの高いトレーニングジョブを返します。
注記
ハイパーパラメータ調整では、追加のハイパーパラメータ _tuning_objective_metric
が自動的に送信され、トレーニング中に使用する目的メトリクスを調整ジョブに渡します。
トレーニングにカスタムアルゴリズムを使用する
このセクションでは、独自のメトリクスを定義して独自のカスタムアルゴリズムをトレーニングに使用する方法を説明します。その際、アルゴリズムによって少なくとも 1 つのメトリクスが stderr
または stdout
に書き込まれることを確認してください。ハイパーパラメータ調整は、これらのストリームを解析して、データセットに対するモデルのパフォーマンスを示すアルゴリズムメトリクスを見つけます。
カスタムメトリクスを定義するには、調整ジョブが監視する各メトリクスの名前と正規表現を指定します。次に、これらのメトリクス定義を の MetricDefinitions
フィールドCreateHyperParameterTuningJob
APIの TrainingJobDefinition
パラメータの に渡しますAlgorithmSpecification
。
以下は、トレーニングアルゴリズムによって stderr
または stdout
に書き込まれたログからのサンプル出力を示しています。
GAN_loss=0.138318; Scaled_reg=2.654134; disc:[-0.017371,0.102429] real 93.3% gen 0.0% disc-combined=0.000000; disc_train_loss=1.374587; Loss = 16.020744; Iteration 0 took 0.704s; Elapsed=0s
次のコードサンプルは、Python (regex) で正規表現を使用する方法を示しています。これを使用してサンプルログ出力を検索し、4 つの異なるメトリクスの数値をキャプチャします。
[ { "Name": "ganloss", "Regex": "GAN_loss=(.*?);", }, { "Name": "disc-combined", "Regex": "disc-combined=(.*?);", }, { "Name": "discloss", "Regex": "disc_train_loss=(.*?);", }, { "Name": "loss", "Regex": "Loss = (.*?);", }, ]
正規表現では、()
(括弧) を使用して正規表現の各部分をグループ化します。
-
コードサンプルで定義されている
loss
メトリクスでは、式(.*?);
が正確なテキスト"Loss="
と最初のセミコロン (;
) 文字の間のすべての文字をキャプチャします。 -
文字
.
は、正規表現に任意の文字にマッチするように指示します。 -
文字
*
は、0 回以上繰り返された文字にマッチすることを意味します。 -
文字
?
は、;
文字の最初のインスタンスまでの文字のみキャプチャすることを意味します。
コードサンプルで定義されている損失メトリクスでは、サンプル出力から Loss = 16.020744
がキャプチャされます。
調整ジョブの目標メトリクスとして定義したメトリクスの 1 つを選択します。を使用している場合は SageMaker API、 CreateHyperParameterTuningJob
オペレーションに送信する HyperParameterTuningJobConfig
パラメータの HyperParameterTuningJobObjective
フィールドにname
キーの値を指定します。
環境変数を指定する
SageMaker AMT は、チューニングジョブ内のハイパーパラメータを最適化して、モデルのパフォーマンスに最適なパラメータを見つけます。環境変数を使用して、チューニングジョブの動作を変更するように設定できます。トレーニング中に使用した環境変数を調整ジョブ内で使用することもできます。
チューニングジョブの環境変数を使用したり、新しい環境変数を指定したりする場合は、 Environment
SageMaker HyperParameterTrainingJobDefinition API。このトレーニングジョブ定義を に渡しますCreateHyperParameterTuningJobAPI。
たとえば、環境変数 SM_LOG_LEVEL
を次の値に設定して、Python コンテナからの出力を調整できます。
NOTSET=0 DEBUG=10 INFO=20 WARN=30 ERROR=40 CRITICAL=50
例えば、コンテナログをデバッグ10
するためにログレベルを に設定するには、HyperParameterTrainingJobDefinition次のように 内の環境変数を設定します。
{ "HyperParameterTuningJobConfig": { ..., } "TrainingJobDefinition": { ..., "Environment" : [ { "SM_LOG_LEVEL": 10 } ], ..., }, ..., }