メトリクスを使用したトレーニングジョブの監視と分析 - Amazon SageMaker

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

メトリクスを使用したトレーニングジョブの監視と分析

Amazon SageMaker トレーニングジョブとは、トレーニングデータセットの例を提示することで、モデルに予測することを学習させる反復プロセスです。通常、トレーニングアルゴリズムは、トレーニングエラーや予測精度など、複数のメトリクスを計算します。これらのメトリクスは、モデルがうまく学習しているかどうかと、見えないデータについて予測を行うためにうまく一般化されるかどうかを診断するのに役立ちます。トレーニングアルゴリズムは、SageMaker がリアルタイムに Amazon CloudWatch をモニタリングおよび送信する、これらのメトリクスの値をログに書き出します。トレーニングジョブのパフォーマンスを分析するため、CloudWatch でこれらのメトリクスのグラフを表示できます。トレーニングジョブが完了すると、DescribeTrainingJob オペレーションを呼び出すことで最終的な反復作業で計算されるメトリクス値のリストを取得することもできます。

トレーニングメトリクスのサンプルノートブック

次のサンプルノートブックは、トレーニングメトリクスがどのように表示およびプロットされるかを示します。

SageMaker でサンプルを実行するために使用できる Jupyter ノートブックインスタンスを作成してアクセスする方法については、「」を参照してください。サンプルノートブックの使用。ノートブックインスタンスを作成して開いた後、すべての SageMaker サンプルのリストを表示するには、[SageMaker の例タブ。トレーニングメトリクスの使用方法を示すサンプルノートブック (object2vec_sentence_similarity.ipynb および xgboost_abalone.ipynb) は、[Introduction to Amazon algorithms (Amazon アルゴリズムの概要)] セクションからアクセスできます。ノートブックを開くには、その [使用] タブを選び、次に [コピーを作成] を選択します。

トレーニングメトリクスの定義

SageMaker は、自動的に組み込みのアルゴリズムが放出するメトリクスのログを解析し、そのメトリクスを CloudWatch に送信します。SageMaker でカスタムアルゴリズムのログを解析し、そのアルゴリズムから放出されるメトリクスを CloudWatch に送信するには、トレーニングジョブの設定時に SageMaker から CloudWatch に送信するメトリクスを指定する必要があります。送信するメトリクスの名前と、アルゴリズムがそのメトリクスを探すために放出するログを解析するために SageMaker で使用する正規表現を指定します。

SageMaker コンソールで追跡するメトリクスを指定できます。https://github.com/aws/sagemaker-python-sdk)、または低レベルの SageMaker API があります。

メトリクスの正規表現の定義

メトリクスを探すためにSageMaker では、アルゴリズムから放出されるログが検索され、そのメトリクスに対して指定した正規表現に一致するログが検出されます。独自のアルゴリズムを使用している場合は、次の手順に従います。

  • アルゴリズムによって、取得するメトリクスがログに書き込まれていることを確認します。

  • CloudWatch メトリクスに送信するメトリクスの値をキャプチャするために、ログを正確に検索する正規表現を定義します。

たとえば、次のようなログを stdout または stderr に書き込むことによって、アルゴリズムによってトレーニングエラーと検証エラーのメトリクスが発行されるとします。

Train_error=0.138318; Valid_error = 0.324557;

CloudWatch でこれらの両方のメトリクスをモニタリングする場合、AlgorithmSpecification次のようになります。

"AlgorithmSpecification": { "TrainingImage": ContainerName, "TrainingInputMode": "File", "MetricDefinitions" : [ { "Name": "train:error", "Regex": "Train_error=(.*?);" }, { "Name": "validation:error", "Regex": "Valid_error=(.*?);" } ]}

上記で定義されている train:error メトリクスの正規表現では、正規表現の最初の部分で「Train_error=」に一致するテキストを検索し、(.*?); で、最初のセミコロン文字まで、0 文字以上の任意の文字を取得します。この正規表現では、括弧内のテキストを取得するよう指示します。. は任意の文字、* は 0 文字以上の文字、? は、; 文字の最初のインスタンスまでのみ取得されます。

トレーニングメトリクスの定義 (低レベルの SageMaker API)

メトリクス名と正規表現のリストを指定して、CloudWatch に送信するメトリクスを定義します。MetricDefinitionsフィールドに追加します。 AlgorithmSpecification入力パラメーターに渡します。CreateTrainingJobオペレーション. たとえば、次の処理を行います。train:errorおよびvalidation:errorメトリックスを作成するには、AlgorithmSpecification次のようになります。

"AlgorithmSpecification": { "TrainingImage": ContainerName, "TrainingInputMode": "File", "MetricDefinitions" : [ { "Name": "train:error", "Regex": "Train_error=(.*?);" }, { "Name": "validation:error", "Regex": "Valid_error=(.*?);" } ]}

低レベルの SageMaker API の使用によるトレーニングジョブの定義と実行の詳細については、「」を参照してください。CreateTrainingJob

トレーニングメトリクスの定義 (SageMaker Python SDK)

メトリクス名と正規表現のリストを指定して、CloudWatch に送信するメトリクスを定義します。metric_definitionsを初期化するときにEstimatorオブジェクト。たとえば、次の処理を行います。train:errorおよびvalidation:errorメトリックスを作成するには、Estimator初期化は次のように表示されます。

estimator = Estimator(image_name=ImageName, role='SageMakerRole', train_instance_count=1, train_instance_type='ml.c4.xlarge', train_instance_type='ml.c4.xlarge', k=10, sagemaker_session=sagemaker_session, metric_definitions=[ {'Name': 'train:error', 'Regex': 'Train_error=(.*?);'}, {'Name': 'validation:error', 'Regex': 'Valid_error=(.*?);'} ] )

の使用によるトレーニングの詳細については、Amazon SageMaker Python SDK見積もりについては、https://github.com/aws/sagemaker-python-sdk#sagemaker-python-sdk-overview

トレーニングメトリクスの定義 (コンソール)

トレーニングジョブを作成する際にコンソールでカスタムアルゴリズムのメトリクスを定義するには、[メトリクス] で名前と正規表現 (regex) を指定します。

たとえば、次の処理を行います。train:errorおよびvalidation:errorCloudWatch クスの場合、メトリクスの定義は次のようになります。

[ { "Name": "train:error", "Regex": "Train_error=(.*?);" }, { "Name": "validation:error", "Regex": "Valid_error=(.*?);" } ]

トレーニングジョブメトリクスのモニタリング ( コンソール)

トレーニングジョブでリアルタイムに放出されるメトリクスは、CloudWatch コンソールでモニタリングできます。

トレーニングジョブメトリクスをモニタリングするには (CloudWatch コンソール)

  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

  2. [メトリクス] を選択し、次に [/aws/sagemaker/TrainingJobs] を選択します。

  3. [TrainingJobName] を選択します。

  4. [すべてのメトリクス] タブで、監視するトレーニングメトリクスの名前を選択します。

  5. [グラフ化したメトリクス] タブで、グラフのオプションを設定します。CloudWatch グラフの使用方法の詳細については、「」を参照してください。メトリクスをグラフ化()Amazon CloudWatch ユーザーガイド

トレーニングJob メトリクスのモニタリング (SageMaker コンソール)

SageMaker コンソールを使用して、トレーニングジョブでリアルタイムに放出されるメトリクスをモニタリングできます。

トレーニングジョブメトリクスをモニタリングするには (SageMaker コンソール)

  1. で SageMaker コンソールを開きます。https://console.aws.amazon.com/sagemaker/

  2. [トレーニングジョブ] を選択後、メトリクスを表示するトレーニングジョブを選択します。

  3. [TrainingJobName] を選択します。

  4. [モニタリング] セクションで、インスタンスの使用状況とアルゴリズムのメトリクスをグラフを確認できます。

例: トレーニングおよび検証の曲線の表示

一般的には、モデルをトレーニングするデータをトレーニングデータセットと検証データセットに分割します。パラメータを使用して、モデルのトレーニングに設定されているトレーニングを予測するために使用されるトレーニングデータセットを選択します。次に、検証セットの予測を計算して、モデルでどの程度予測できるかをテストします。トレーニングジョブのパフォーマンスを分析するには通常、検証の曲線に対してトレーニング曲線をプロットします。

継続したトレーニングおよび検証セット両方の精度を示すグラフを表示することによって、モデルのパフォーマンス向上につながります。たとえば、トレーニングの精度が時間の経過とともに継続して高まっているが、ある時点で検証精度が下がり始める場合、モデルを過剰適合している可能性が高くなります。このような状況に対応するには、正規化の向上など、モデルの調整を行います。

この例では、以下の処理を行います。を使用することもできます。画像分類-フルトレーニングのサンプルです。サンプルノートブックの例SageMaker に追加します。SageMaker ノートブックインスタンスがない場合は、「」に記載されている手順に従って作成できます。ステップ 1: Amazon SageMaker ノートブックインスタンスを作成する。必要に応じて、GitHub のサンプルノートブックの「エンドツーエンドの複数クラスイメージ分類のサンプル」もあわせて参照してください。トレーニングデータを保存するため、またモデル出力用にも Amazon S3 バケットが必要です。

トレーニングおよび検証エラー曲線を表示するには

  1. で SageMaker コンソールを開きます。https://console.aws.amazon.com/sagemaker/

  2. [ノートブック] を選択し、次に [ノートブックインスタンス] を選択します。

  3. 使用するノートブックインスタンスを選択し、[Open (開く)] を選択します。

  4. ノートブックインスタンスのダッシュボードで、[SageMaker Examples (SageMaker のサンプル)] を選択します。

  5. を展開します。Amazon アルゴリズムの紹介セクションを展開し、[使用アイテムの横にあります。画像分類-フルトレーニング.ipynb

  6. 選択コピーを作成。SageMaker は、画像分類-フルトレーニング.ipynbノートブックインスタンスに追加します。

  7. ノートブック内のすべてのセルを推論セクションに追加します。エンドポイントをデプロイしたり、この例の推論を取得したりする必要はありません。

  8. トレーニングジョブが開始したら、CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/

  9. [メトリクス] を選択し、次に [/aws/sagemaker/TrainingJobs] を選択します。

  10. [TrainingJobName] を選択します。

  11. [すべてのメトリクス] タブで、ノートブックで作成したトレーニングジョブ用に、train:accuracyvalidation:accuracy のメトリクスを選択します。

  12. グラフで、メトリクスの値によって拡大するエリアを選択します。次のようなものが表示されます。