从批量转换作业捕获数据 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

从批量转换作业捕获数据

无论您使用还是 SageMaker Python,为批处理转换作业开启数据捕获所需的步骤都是相似 Amazon SDK for Python (Boto) 的SDK。如果使用 Amazon SDK,请在CreateTransformJob方法中定义DataCaptureConfig字典以及必填字段以开启数据捕获。如果您使用 SageMaker PythonSDK,请导入该BatchDataCaptureConfig类并从该类中初始化一个实例。然后,将此对象传递给转换作业实例的 batch_data_capture_config 参数。

要使用以下代码片段,请替换 italicized placeholder text 在示例代码中包含您自己的信息。

如何启用数据捕获

启动转换作业时指定数据捕获配置。无论您使用还是 SageMaker PythonSDK,都必须提供DestinationS3Uri参数,即您希望转换作业记录捕获数据的目录。 Amazon SDK for Python (Boto3) (可选)您还可以设置以下参数:

  • KmsKeyId:用于加密捕获数据的密 Amazon KMS 钥。

  • GenerateInferenceId:一个布尔标志,用于在捕获数据时指示您是否希望转换作业将推理 ID 和时间附加到输出中。这对于需要摄取 Ground Truth 数据的模型质量监控非常有用。推理 ID 和时间有助于将捕获的数据与您的 Ground Truth 数据进行匹配。

Amazon 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:为转换作业捕获的输出数据。

为避免数据重复,上述两个目录下捕获的数据都是清单。每个清单都是一个包含源对象的 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 前缀,用于指示它们何时被捕获。这有助于 Model Monitor 确定要分析的数据的相应部分。例如,如果您在 2022-8-26 下午 13 点开始转换作业UTC,则会使用前缀字符串标记捕获的数据。2022/08/26/13/

InferenceId 世代

为转换作业配置 DataCaptureConfig 时,可以打开布尔标志 GenerateInferenceId。当您需要运行模型质量和模型偏差监控作业(需要用户摄取的 Ground Truth 数据)时,这特别有用。Model Monitor 依靠推理 ID 来匹配捕获的数据和 Ground Truth 数据。有关 Ground Truth 摄取的更多详细信息,请参阅收录 Ground Truth 标签并将其与预测合并。启用后GenerateInferenceId,转换输出会为每条记录附加推理 ID(随机UUID)以及转换作业UTC的开始时间。运行模型质量和模型偏差监控时需要这两个值。构造 Ground Truth 数据时,需要提供相同的推理 ID 以匹配输出数据。目前,此功能支持以CSVJSON、和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 和转换作业开始时间。请勿修改它们。其余列是您的转换作业输出。

如果您的转换输出JSONL采用JSON或格式,则输出文件类似于以下示例:

{"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。如果需要运行模型质量或模型偏差监控,请勿修改这些字段,因为合并作业需要这些字段。