배치 변환 작업에서 데이터 캡처 - Amazon SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

배치 변환 작업에서 데이터 캡처

배치 변환 작업에 대한 데이터 캡처를 활성화하는 데 필요한 단계는 AWS SDK for Python (Boto) 또는 SageMaker Python 를 사용하든 비슷합니다SDK. 를 사용하는 경우 데이터 캡처를 활성화하는 CreateTransformJob 메서DataCaptureConfig드 내에서 필수 필드와 함께 사전을 AWS SDK정의합니다. Python 를 SageMaker 사용하는 경우 BatchDataCaptureConfig 클래스를 SDK가져오고 이 클래스에서 인스턴스를 초기화합니다. 그런 다음 이 객체를 변환 작업 인스턴스의 batch_data_capture_config파라미터에 전달합니다.

다음 코드 조각을 사용하려면 italicized placeholder text 를 사용자 정보가 포함된 예제 코드에 입력합니다.

데이터 캡처 활성화 방법

변환 작업을 시작할 때 데이터 캡처 구성을 지정하세요. AWS SDK for Python (Boto3) 또는 SageMaker Python 를 사용하든 변환 작업이 캡처된 데이터를 로깅할 디렉터리인 DestinationS3Uri 인수를 제공해야 SDK합니다. 선택적으로 다음 파라미터를 지정할 수도 있습니다.

  • 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: 변환 작업의 캡처된 출력 데이터입니다.

데이터 중복을 방지하기 위해 이전 두 디렉터리에 있는 캡처된 데이터는 매니페스트입니다. 각 매니페스트는 소스 객체의 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 13PM 에 변환 작업을 시작하면 캡처UTC된 데이터에 2022/08/26/13/ 접두사 문자열 레이블이 지정됩니다.

InferenceId 생성

변환 작업에 대해 DataCaptureConfig을 구성할 때 부울 플래그 GenerateInferenceId를 켤 수 있습니다. 이는 사용자가 수집한 Ground Truth 데이터가 필요한 모델 품질 및 모델 바이어스 모니터링 작업을 실행해야 할 때 특히 유용합니다. 모델 모니터는 추론 ID를 사용하여 캡처된 데이터와 Ground Truth 데이터를 일치시킵니다. Ground Truth 수집에 대한 자세한 내용은 Ground Truth 레이블을 수집하여 예측과 병합섹션을 참조하세요. GenerateInferenceId 이 켜져 있으면 변환 출력에 추론 ID(임의 UUID)와 각 레코드에 UTC 대한 의 변환 작업 시작 시간이 추가됩니다. 모델 품질 및 모델 바이어스 모니터링을 실행하려면 이 두 값이 필요합니다. 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이 있습니다. 모델 품질 또는 모델 바이어스 모니터링을 실행해야 하는 경우에는 이 필드를 수정하지 마세요.이는 병합 작업에 필요합니다.