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

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

Amazon CloudWatch メトリクスを使用したトレーニングジョブのモニタリングと分析

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

注記

Amazon CloudWatch は高解像度のカスタムメトリクス をサポートしており、その最高解像度は 1 秒です。 https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.htmlただし、解像度が細かいほど、 CloudWatch メトリクスの有効期間が短くなります。1 秒の頻度解決では、 CloudWatch メトリクスは 3 時間使用できます。 CloudWatch メトリクスの解像度と有効期間の詳細については、Amazon CloudWatch API リファレンスGetMetric「統計」を参照してください。

ヒント

トレーニングジョブをより細かく 100 ミリ秒 (0.1 秒) の精度でプロファイリングし、トレーニングメトリクスを Amazon S3 に無期限に保存してカスタム分析を行う場合は、Amazon SageMaker Debugger の使用を検討してください。 SageMaker Debugger は、一般的なトレーニング問題を自動的に検出するための組み込みルールを提供します。ハードウェアリソース使用率の問題 (CPU、GPU、I/O のボトルネックなど) と非収束モデルの問題 (オーバーフィット、勾配の消失、テンソルの爆発など) を検出します。 SageMaker デバッガーは、Studio Classic とそのプロファイリングレポートを通じて視覚化も提供します。デバッガーの視覚化については、SageMaker 「デバッガーインサイトダッシュボードチュートリアル」、「デバッガープロファイリングレポートチュートリアル」、およびSMDebug Client Library を使用したデータの分析」を参照してください。

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

SageMaker は、トレーニングジョブログを自動的に解析し、トレーニングメトリクスを に送信します CloudWatch。デフォルトでは、 SageMaker はSageMaker ジョブとエンドポイントメトリクス にリストされているシステムリソース使用率メトリクスを送信します。ログ SageMaker を解析し、独自のアルゴリズムのトレーニングジョブから にカスタムメトリクスを送信する場合は CloudWatch、 SageMaker トレーニングジョブリクエストを設定するときにメトリクスの名前と正規表現を渡すことでメトリクス定義を指定する必要があります。

SageMaker コンソール、SageMaker Python SDK、または低レベル SageMaker API を使用して、追跡するメトリクスを指定できます。

独自のアルゴリズムを使用している場合は、次の手順に従います。

  • 取得するメトリクスがアルゴリズムによって必ずログに書き込まれるようにします。

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

例えば、アルゴリズムによって次のようなトレーニングエラーおよび検証エラーのメトリクスが発行されるとします。

Train_error=0.138318; Valid_error=0.324557;

でこれらのメトリクスの両方をモニタリングする場合 CloudWatch、メトリクス定義のディクショナリは次の例のようになります。

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

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

SageMaker Python SDK を使用してメトリクスを定義する

Estimator オブジェクトを初期化するときに、メトリクス名と正規表現のリストをmetric_definitions引数として指定 CloudWatch して、送信先のメトリクスを定義します。例えば、 の メトリクスtrain:errorvalidation:errorメトリクスの両方をモニタリングする場合 CloudWatch、Estimator初期化は次の例のようになります。

import sagemaker from sagemaker.estimator import Estimator estimator = Estimator( image_uri="your-own-image-uri", role=sagemaker.get_execution_role(), sagemaker_session=sagemaker.Session(), instance_count=1, instance_type='ml.c4.xlarge', metric_definitions=[ {'Name': 'train:error', 'Regex': 'Train_error=(.*?);'}, {'Name': 'validation:error', 'Regex': 'Valid_error=(.*?);'} ] )

Amazon SageMaker Python SDK 推定器を使用したトレーニングの詳細については、「 の Sagemaker Python SDK」を参照してください GitHub。

コンソール SageMakerを使用してメトリクスを定義する

トレーニングジョブの作成時に SageMaker コンソールでアルゴリズムソースとして ECR の独自のアルゴリズムコンテナを選択した場合は、メトリクスセクションにメトリクス定義を追加します。次のスクリーンショットは、サンプルメトリクス名とその対応する正規表現を追加した後の状態を示しています。

低レベル SageMaker API を使用してメトリクスを定義する

CreateTrainingJob オペレーションに渡すAlgorithmSpecification入力パラメータの MetricDefinitions フィールドにメトリクス名と正規表現のリスト CloudWatch を指定して、送信先のメトリクスを定義します。例えば、 で train:errorと の両方のvalidation:errorメトリクスをモニタリングする場合 CloudWatch、 は次の例のAlgorithmSpecificationようになります。

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

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

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

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

トレーニングジョブのメトリクスをモニタリングするには (CloudWatch コンソール)
  1. https://console.aws.amazon.com/cloudwatch で CloudWatch コンソールを開きます。

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

  3. TrainingJob名前 を選択します。

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

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

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

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

トレーニングジョブのメトリクスをモニタリングするには (SageMaker コンソール)
  1. https://console.aws.amazon.com/sagemaker で SageMaker コンソールを開きます。

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

  3. TrainingJob名前 を選択します

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

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

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

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

この例では、 SageMaker ノートブックインスタンスのノートブックの例セクションで、イメージ分類フルトレーニングの例を使用できます。 SageMaker ノートブックインスタンスがない場合は、「」の手順に従って作成しますステップ 1: チュートリアル用の Amazon SageMaker Notebook インスタンスを作成する。必要に応じて、「」のサンプルノートブックの「エンドツーエンドの多クラスイメージ分類の例」に続くことができます GitHub。トレーニングデータを保存するため、またモデル出力用にも Amazon S3 バケットが必要です。

トレーニングおよび検証エラー曲線を表示するには
  1. https://console.aws.amazon.com/sagemaker で SageMaker コンソールを開きます。

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

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

  4. ノートブックインスタンスのダッシュボードで、SageMaker「例」を選択します。

  5. [Introduction to Amazon Algorithms] (Amazon アルゴリズムの概要) セクションを展開した後、Image-classification-fulltraining.ipynb の横にある [Use] (使用) を選択します。

  6. Create copy SageMaker を選択します。ノートブックインスタンスに Image-classification-fulltraining.ipynb ノートブックの編集可能なコピーを作成します。

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

  8. トレーニングジョブが開始されたら、https://console.aws.amazon.com/cloudwatch で CloudWatch コンソールを開きます。

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

  10. TrainingJob名前 を選択します。

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

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