

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

# バッチ変換ジョブからデータをキャプチャする
<a name="model-monitor-data-capture-batch"></a>

 バッチ変換ジョブのデータキャプチャを有効にするために必要な手順は、 AWS SDK for Python (Boto) と SageMaker Python SDK のどちらを使用する場合でも似ています。 AWS SDK を使用する場合は、[DataCaptureConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataCaptureConfig.html) ディクショナリと必須フィールドを `CreateTransformJob`メソッド内で定義して、データキャプチャを有効にします。SageMaker AI Python SDK を使用する場合は、`BatchDataCaptureConfig` クラスをインポートし、このクラスからインスタンスを初期化します。次に、このオブジェクトを変換ジョブインスタンスの `batch_data_capture_config` パラメータに渡します。

 次のコードスニペットを使用するには、コード例の*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。

## データキャプチャを有効にする方法
<a name="data-capture-batch-enable"></a>

 変換ジョブを起動するときに、データキャプチャ設定を指定します。を使用するか SageMaker AWS SDK for Python (Boto3) Python SDK を使用するかにかかわらず、 `DestinationS3Uri`引数を指定する必要があります。これは、変換ジョブでキャプチャされたデータをログに記録するディレクトリです。オプションで次のパラメータを指定することもできます。
+  `KmsKeyId`: キャプチャされたデータの暗号化に使用される AWS KMS キー。
+  `GenerateInferenceId`: データをキャプチャするときに、変換ジョブで推論 ID と時間を出力に追加するかどうかを示すブール型フラグ。これは、Ground Truth データを取り込む必要があるモデル品質モニタリングに役立ちます。推論 ID と時間は、キャプチャしたデータを Ground Truth データと一致させるのに役立ちます。

------
#### [ AWS SDK for Python (Boto3) ]

 `CreateTransformJob` メソッドを使用して変換ジョブを作成するときに、[DataCaptureConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataCaptureConfig.html) ディクショナリでキャプチャするデータを設定します。

```
input_data_s3_uri = "s3://input_S3_uri"
output_data_s3_uri = "s3://output_S3_uri"
data_capture_destination = "s3://captured_data_S3_uri"

model_name = "model_name"

sm_client.create_transform_job(
    TransformJobName="transform_job_name",
    MaxConcurrentTransforms=2,
    ModelName=model_name,
    TransformInput={
        "DataSource": {
            "S3DataSource": {
                "S3DataType": "S3Prefix",
                "S3Uri": input_data_s3_uri,
            }
        },
        "ContentType": "text/csv",
        "CompressionType": "None",
        "SplitType": "Line",
    },
    TransformOutput={
        "S3OutputPath": output_data_s3_uri,
        "Accept": "text/csv",
        "AssembleWith": "Line",
    },
    TransformResources={
        "InstanceType": "ml.m4.xlarge",
        "InstanceCount": 1,
    },
    DataCaptureConfig={
       "DestinationS3Uri": data_capture_destination,
       "KmsKeyId": "kms_key",
       "GenerateInferenceId": True,
    }
    )
```

------
#### [ SageMaker Python SDK ]

 [sagemaker.model\$1monitor](https://sagemaker.readthedocs.io/en/stable/api/inference/model_monitor.html) モジュールから `BatchDataCaptureConfig` クラスをインポートします。

```
from sagemaker.transformer import Transformer
from sagemaker.inputs import BatchDataCaptureConfig

# Optional - The S3 URI of where to store captured data in S3
data_capture_destination = "s3://captured_data_S3_uri"

model_name = "model_name"

transformer = Transformer(model_name=model_name, ...)
transform_arg = transformer.transform(
    batch_data_capture_config=BatchDataCaptureConfig(
        destination_s3_uri=data_capture_destination,
        kms_key_id="kms_key",
        generate_inference_id=True,
    ),
    ...
)
```

------

## キャプチャされたデータを表示する方法
<a name="data-capture-batch-view"></a>

 変換ジョブが完了すると、キャプチャされたデータは、データ キャプチャ設定で指定した `DestinationS3Uri` の下に記録されます。`DestinationS3Uri` の下には `/input` と `/output` という 2 つのサブディレクトリがあります。`DestinationS3Uri` が `s3://my-data-capture` の場合、変換ジョブは次のディレクトリを作成します。
+  `s3://my-data-capture/input`: 変換ジョブのキャプチャされた入力データ。
+  `s3://my-data-capture/output`: 変換ジョブのキャプチャされた出力データ。

 データの重複を避けるため、前の 2 つのディレクトリにあるキャプチャされたデータはマニフェストです。各マニフェストは、ソースオブジェクトの Amazon S3 ロケーションを含む JSONL ファイルです。マニフェストファイルの例として、以下のようなものがあります。

```
# under "/input" directory
[
    {"prefix":"s3://input_S3_uri/"},
    "dummy_0.csv",
    "dummy_1.csv",
    "dummy_2.csv",
    ...
]

# under "/output" directory
[
    {"prefix":"s3://output_S3_uri/"},
    "dummy_0.csv.out",
    "dummy_1.csv.out",
    "dummy_2.csv.out",
    ...
]
```

 変換ジョブは、これらのマニフェストを整理し、キャプチャされた日時を示す *yyyy/mm/dd/hh* S3 プレフィックスを使ってラベル付けします。これにより、モデルモニターは分析するデータの適切な部分を判断しやすくなります。例えば、2022 年 8 月 26 日 13 時 (UTC) に変換ジョブを開始すると、キャプチャされたデータにはプレフィックス文字列 `2022/08/26/13/` のラベルが付けられます。

## 推論 ID の生成
<a name="data-capture-batch-inferenceid"></a>

 変換ジョブの `DataCaptureConfig` を設定するときに、ブール型フラグ `GenerateInferenceId` をオンにできます。これは、ユーザーが取り込んだ Ground Truth データが必要となる、モデル品質やモデルバイアスのモニタリングジョブを実行しなければならない場合に特に便利です。モデルモニターは、推論 ID を使用してキャプチャされたデータと Ground Truth データを照合します。Ground Truth 取り込みに関する詳細については、「[Ground Truth ラベルを取り込んで予測とマージする](model-monitor-model-quality-merge.md)」を参照してください。`GenerateInferenceId` をオンにすると、変換出力には、推論 ID (ランダムな UUID) と変換ジョブの開始時刻 (UTC) がレコードごとに追加されます。モデル品質とモデルバイアスのモニタリングを実行するには、これら 2 つの値が必要です。Ground Truth データを作成するときは、出力データと一致するように同じ推論 ID を指定する必要があります。現在、この機能は CSV、JSON、JSONL 形式の変換出力をサポートしています。

 変換出力が CSV 形式の場合、出力ファイルは次の例のようになります。

```
0, 1f1d57b1-2e6f-488c-8c30-db4e6d757861,2022-08-30T00:49:15Z
1, 22445434-0c67-45e9-bb4d-bd1bf26561e6,2022-08-30T00:49:15Z
...
```

 最後の 2 つの列は推論 ID と変換ジョブの開始時刻です。これらは変更しないでください。残りの列は変換ジョブの出力です。

 変換出力が JSON または JSONL 形式の場合、出力ファイルは次の例のようになります。

```
{"output": 0, "SageMakerInferenceId": "1f1d57b1-2e6f-488c-8c30-db4e6d757861", "SageMakerInferenceTime": "2022-08-30T00:49:15Z"}
{"output": 1, "SageMakerInferenceId": "22445434-0c67-45e9-bb4d-bd1bf26561e6", "SageMakerInferenceTime": "2022-08-30T00:49:15Z"}
...
```

 `SageMakerInferenceId` と `SageMakerInferenceTime` の 2 つのフィールドが追加されています。これらのフィールドは、マージジョブに必要であるため、モデル品質モニタリングやモデルバイアスモニタリングを実行する必要がある場合は変更しないでください。