從批次轉換工作擷取資料 - Amazon SageMaker AI

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

從批次轉換工作擷取資料

無論您使用 AWS SDK for Python (Boto) 或 SageMaker Python SDK,開啟批次轉換任務資料擷取所需的步驟都類似。如果您使用 AWS SDK,請在開啟資料擷取CreateTransformJob的方法中定義 DataCaptureConfig 字典以及必要欄位。如果您使用 SageMaker AI Python SDK,請匯入 BatchDataCaptureConfig類別,並從此類別初始化執行個體。然後,將此物件傳遞給轉換工作執行個體的 batch_data_capture_config 參數。

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

如何啟用資料擷取

在啟動轉換工作時指定資料擷取組態。無論您是使用 AWS SDK for Python (Boto3) 或 SageMaker Python SDK,您都必須提供 DestinationS3Uri引數,這是您要轉換任務記錄擷取資料的目錄。您也可以選擇指定以下參數:

  • KmsKeyId:用來加密擷取資料的 AWS KMS 金鑰。

  • GenerateInferenceId:布林值標記,用於在擷取資料時,指出轉換工作是否要將推論 ID 和時間附加至輸出。這對於需要擷取 Ground Truth 資料的模型品質監控非常有用。推論 ID 和時間有助於將擷取資料與您的 Ground Truth 資料進行比對。

AWS SDK for Python (Boto3)

使用 CreateTransformJob 方法建立轉換工作時,使用 DataCaptureConfig 字典來設定要擷取的資料。

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_monitor 匯入 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, ), ... )

如何檢視擷取的資料

轉換工作完成後,擷取的資料就會記錄在您於資料擷取組態提供的 DestinationS3Uri 下。在 DestinationS3Uri 下有兩個子目錄 /input/output。如果 DestinationS3Uris3://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 產生

設定 DataCaptureConfig 轉換工作時,您可以開啟布林值標記 GenerateInferenceId。當您需要執行模型品質和模型偏差監控工作時,需要使用者擷取的 Ground Truth 資料,這時此功能特別有用。模型監控仰賴推論 ID 來比對擷取的資料和 Ground Truth 資料。如需 Ground Truth 擷取的其他詳細資料,請參閱擷取 Ground Truth 標籤並將其與預測合併。開啟 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"} ...

有兩個保留的附加欄位 SageMakerInferenceIdSageMakerInferenceTime。如果您需要執行模型品質或模型偏差監控,請勿修改這些欄位,因為合併工作時需要這些欄位。