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

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

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

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

注記

Amazon CloudWatch は高解像度のカスタムメトリクスをサポートしており、最高解像度は 1 秒です。ただし、解像度が高いほど、メトリクスの有効期間は短くなります。 CloudWatch 周波数分解能が 1 秒の場合、 CloudWatch メトリクスは 3 時間使用できます。 CloudWatch メトリクスの解像度と有効期間の詳細については、Amazon CloudWatch API GetMetricStatisticsリファレンスのを参照してください。

ヒント

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

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

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オブジェクトを初期化するときに、 CloudWatch metric_definitionsメトリック名と正規表現のリストを引数として指定して、送信するメトリクスを定義します。たとえば、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 on」を参照してください。 GitHub

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

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

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

CloudWatch MetricDefinitionsAlgorithmSpecificationCreateTrainingJobオペレーションに渡す入力パラメータのフィールドにメトリクス名と正規表現のリストを指定して、送信するメトリクスを定義します。たとえば、train:errorvalidation: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

トレーニングJob メトリックの監視 (CloudWatch コンソール)

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

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

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

  3. を選択します。TrainingJobName

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

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

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

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

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

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

  3. を選択しますTrainingJobName

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

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

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

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

この例では、 SageMaker ノートブックインスタンスの Example Notebooks セクションにある I mage-classification-full-training サンプルを使用できます。 SageMaker ノートブックインスタンスがない場合は、で説明されている手順に従って作成してください。ステップ 1: Amazon SageMaker Notebook インスタンスを作成するお望みであれば、上のノートブックの例にある「エンドツーエンドのマルチクラス画像分類の例」を参考にしてもかまいません。 GitHubトレーニングデータを保存するため、またモデル出力用にも Amazon S3 バケットが必要です。

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

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

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

  4. ノートブックインスタンスのダッシュボードで [SageMakerExamples] を選択します。

  5. Amazon アルゴリズムの紹介」セクションを展開し、「I mage-classification-fulltraining .ipynb」の横にある「使用」を選択します。

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

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

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

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

  10. を選択します。TrainingJobName

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

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