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

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

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

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

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

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

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

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

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

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

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

メトリクスを検索するため、Amazon 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 文字以上の文字、? は、; 文字の最初のインスタンスまでのみ取得されます。

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

送信するメトリックを定義する CloudWatch メトリック名と正規表現のリストを MetricDefinitions のフィールド AlgorithmSpecification 入力パラメータ( CreateTrainingJob 操作。たとえば、train:errorvalidation:error の両方のメトリクスを CloudWatch でモニタリングする場合、AlgorithmSpecification は次のようになります。

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

低レベルの Amazon SageMaker API の使用によるトレーニングジョブの定義と実行の詳細については、「トレーニングジョブを作成して実行する (AWS SDK for Python (Boto3))」を参照してください。

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

Estimator オブジェクトを初期化するときに、metric_definitions 引数としてメトリクス名と正規表現のリストを指定することで、CloudWatch に送信するメトリクスを定義します。たとえば、train:errorvalidation:error の両方のメトリクスを CloudWatch でモニタリングする場合、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=(.*?);'} ] )

SageMaker Python SDK 推定器の使用によるトレーニングの詳細については、https://github.com/aws/sagemaker-python-sdk#sagemaker-python-sdk-overview を参照してください。

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

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

たとえば、train:errorvalidation:error の両方のメトリクスを CloudWatch でモニタリングする場合、メトリクスの定義は次のようになります。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  4. ノートブック インスタンスのダッシュボードで、 SageMaker 例.

  5. 展開 Amazon アルゴリズムの概要 セクションを選択し、次に 使用 の隣 画像-分類-フル-トレーニング.ipynb.

  6. [Create copy (コピーを作成)] を選択します。Amazon SageMaker は、ノートブックインスタンスに [Image-classification-full-training.ipynb] ノートブックの編集可能なコピーを作成します。

  7. ノートブックの最初のコードセルでは、 置換 <<bucket-name>> S3 バケットの名前が表示されます。

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

  9. トレーニングジョブの開始後、https://console.aws.amazon.com/cloudwatch/ で CloudWatch コンソールを開きます。

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

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

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

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