

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 從批次轉換工作擷取資料
<a name="model-monitor-data-capture-batch"></a>

 無論您使用 適用於 Python (Boto) 的 AWS SDK 或 SageMaker Python SDK，開啟批次轉換任務的資料擷取所需的步驟都很類似。如果您使用 AWS SDK，請在 `CreateTransformJob`方法中定義 [DataCaptureConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataCaptureConfig.html) 字典以及必要欄位，以開啟資料擷取。如果您使用 SageMaker AI Python SDK，請匯入 `BatchDataCaptureConfig` 類別，並從此類別初始化執行個體。然後，將此物件傳遞給轉換工作執行個體的 `batch_data_capture_config` 參數。

 如果要使用下列程式碼片段，請用您的資訊取代範例程式碼中的*斜體預留位置文字*。

## 如何啟用資料擷取
<a name="data-capture-batch-enable"></a>

 在啟動轉換工作時指定資料擷取組態。無論您使用 適用於 Python (Boto3) 的 AWS SDK 或 SageMaker Python SDK，都必須提供 `DestinationS3Uri`引數，這是您希望轉換任務記錄擷取資料的目錄。您也可以選擇指定以下參數：
+  `KmsKeyId`：用來加密擷取資料的 AWS KMS 金鑰。
+  `GenerateInferenceId`：布林值標記，用於在擷取資料時，指出轉換工作是否要將推論 ID 和時間附加至輸出。這對於需要擷取 Ground Truth 資料的模型品質監控非常有用。推論 ID 和時間有助於將擷取資料與您的 Ground Truth 資料進行比對。

------
#### [ 適用於 Python (Boto3) 的 AWS SDK ]

 使用 `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`。如果 `DestinationS3Uri` 是 `s3://my-data-capture`，則轉換工作會建立下列目錄：
+  `s3://my-data-capture/input`：轉換工作擷取的輸入資料。
+  `s3://my-data-capture/output`：轉換工作擷取的輸出資料。

 為了避免資料重複，前兩個目錄下擷取的資料是清單檔案。每個清單檔案都是 JSONL 檔案，其中包含來源物件的 Amazon S3 位置。清單檔案看起來可能與以下範例相似：

```
# 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 前置詞來組織這些清單檔案並加上標籤，以指出擷取的時間。這有助於模型監控確定要分析的資料的適當部分。例如，如果您在世界協調時間 (UTC) 2022 年 8 月 26 日下午 1 點開始轉換工作，則擷取的資料會以 `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)，以及每筆記錄的轉換工作開始時間 (以世界協調時間計算)。您需要這兩個值才能執行模型品質和模型偏差監控。當您建構 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
...
```

 最後兩個欄位是推論 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`。如果您需要執行模型品質或模型偏差監控，請勿修改這些欄位，因為合併工作時需要這些欄位。