翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
メトリクスを定義します
チューニングジョブは、メトリックを使用してパフォーマンスを評価することにより、起動するトレーニングジョブのハイパーパラメータを最適化します。このガイドでは、トレーニングにカスタムアルゴリズムを使用したり、Amazon の組み込みアルゴリズムを使用したりできるようにメトリクスを定義する方法を示します SageMaker。
Amazon SageMaker ハイパーパラメータチューニングは、stdout
stderr
機械学習アルゴリズムとストリームを解析して、損失や検証精度などの指標を見つけます。指標は、モデルがデータセットでどの程度うまく機能しているかを示します。
以下の各セクションで、組み込みとカスタムの2種類のアルゴリズムをトレーニングに使用する方法を説明します。
組み込みのアルゴリズムを使用してトレーニングする
SageMaker 組み込みアルゴリズムのいずれかを使用する場合、メトリクスはすでに定義されています。さらに、組み込みアルゴリズムは、最適化のためのハイパーパラメータチューニングにメトリックを自動的に送信します。これらのメトリックスは Amazon CloudWatch ログにも書き込まれます。詳細については、「Amazon SageMaker イベントを Amazon に記録する」を参照してください CloudWatch。
チューニングジョブの目的メトリックとして、組み込みアルゴリズムが生成するメトリックのいずれかを選択します。利用可能なメトリクスのリストについては、「Amazon SageMaker 組み込みアルゴリズムまたはトレーニング済みモデルを使う」の「適切なアルゴリズム」の「モデルチューニング」を参照してください。
チューニングジョブで監視するメトリクスを最大40個選択できます。これらの指標のうちの 1 つを目標指標として選択します。ハイパーパラメータ調整ジョブは、目的メトリックに対して最も優れたパフォーマンスを示したトレーニングジョブを返します。
ハイパーパラメータチューニングは、_tuning_objective_metric
トレーニング中に使用できるように目的メトリックをチューニングジョブに渡すための追加のハイパーパラメータを自動的に送信します。
トレーニングにはカスタムアルゴリズムを使用するする
このセクションでは、独自のカスタムアルゴリズムをトレーニングに使用するための独自のメトリクスを定義する方法を示します。その際、アルゴリズムが少なくとも 1stderr
つの指標をまたはに書き込んでいることを確認してくださいstdout
。ハイパーパラメーター調整では、これらのストリームを解析して、データセットに対するモデルのパフォーマンスを示すアルゴリズムメトリクスを見つけます。
チューニングジョブが監視するメトリクスごとに名前と正規表現を指定することで、カスタムメトリクスを定義できます。次に、TrainingJobDefinition
MetricDefinitions
これらのメトリック定義をのフィールドのパラメータで CreateHyperParameterTuningJob
APIAlgorithmSpecification
に渡します。
以下は、トレーニングアルゴリズムに書き込まれた、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="
式は正確なテキストと最初のセミコロン (;
)(.*?);
文字の間の任意の文字をキャプチャします。 -
この文字は、
.
正規表現に任意の文字と一致するように指示します。 -
この文字は、
*
ゼロ文字以上と一致することを意味します。 -
?
キャラクターがキャプチャーされるのは、;
そのキャラクターが最初に登場するまでのことだけです。
コードサンプルで定義されている損失メトリックは、Loss = 16.020744
サンプル出力からキャプチャされます。
調整ジョブの目標メトリクスとして定義したメトリクスの 1 つを選択します。 SageMaker API を使用している場合は、name
HyperParameterTuningJobObjective
HyperParameterTuningJobConfig
CreateHyperParameterTuningJob
オペレーションに送信するパラメータのフィールドにキーの値を指定します。