

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

# トレーニングメトリクスの定義
<a name="define-train-metrics"></a>

SageMaker AI はトレーニングジョブログを自動的に解析し、トレーニングメトリクスを CloudWatch に送信します。デフォルトでは、SageMaker AI は、「[SageMaker AI Jobs and Endpoint Metrics](https://docs.aws.amazon.com/sagemaker/latest/dg/monitoring-cloudwatch.html#cloudwatch-metrics-jobs)」に示すシステムリソース使用率メトリクスを送信します。SageMaker AI でログを解析し、独自のアルゴリズムのトレーニングジョブから CloudWatch にカスタムメトリクスを送信する場合は、SageMaker AI トレーニングジョブリクエストを設定する際、メトリクス名と正規表現を渡すことでメトリクス定義を明確にする必要があります。

SageMaker AI コンソール、[SageMaker AI Python SDK](https://github.com/aws/sagemaker-python-sdk)、または低レベルの SageMaker AI 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\$1error=」に一致するテキストを検索し、`(.*?);` で、最初のセミコロン文字が現れるまで、すべての文字を取得します。この正規表現では、括弧内のテキストを取得するよう指示します。`.` は任意の文字、`*` は 0 文字以上の文字、`?` は、`;` 文字の最初のインスタンスまでのみ取得されます。

## SageMaker AI Python SDK を使用してメトリクスを定義する
<a name="define-train-metrics-sdk"></a>

`Estimator` オブジェクトを初期化するときに、`metric_definitions` 引数としてメトリクス名と正規表現のリストを指定することで、CloudWatch に送信するメトリクスを定義します。例えば、`train:error` と `validation: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](https://sagemaker.readthedocs.io/en/stable) 推定器を使用したトレーニングの詳細については、GitHub の 「[SageMaker Python SDK](https://github.com/aws/sagemaker-python-sdk#sagemaker-python-sdk-overview)」を参照してください。

## SageMaker AI コンソールを使用してメトリクスを定義する
<a name="define-train-metrics-console"></a>

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

![\[コンソールのアルゴリズムオプションフォームの例。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/training-metrics-using-smconsole.png)


## 低レベルの SageMaker AI API を使用してメトリクスを定義する
<a name="define-train-metrics-api"></a>

[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) オペレーションに渡す [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AlgorithmSpecification.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AlgorithmSpecification.html) 入力パラメータの `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 AI API の使用によるトレーニングジョブの定義と実行の詳細については、「[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)」を参照してください。