Acquisizione dei dati dal processo di trasformazione di batch - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Acquisizione dei dati dal processo di trasformazione di batch

I passaggi necessari per attivare l'acquisizione dei dati per il processo di trasformazione in batch sono simili sia che si utilizzi Python che SageMaker PythonSDK. AWS SDK for Python (Boto) Se utilizzate il AWS SDK, definite il DataCaptureConfigdizionario, insieme ai campi obbligatori, all'interno del CreateTransformJob metodo per attivare l'acquisizione dei dati. Se usi SageMaker PythonSDK, importa la BatchDataCaptureConfig classe e inizializza un'istanza da questa classe. Quindi, passa questo oggetto al parametro batch_data_capture_config dell'istanza del processo di trasformazione.

Per utilizzare i seguenti frammenti di codice, sostituite il italicized placeholder text nel codice di esempio con le tue informazioni.

Come abilitare l'acquisizione dei dati

Specifica una configurazione di acquisizione dei dati quando avvii un processo di trasformazione. Sia che si utilizzi Python AWS SDK for Python (Boto3) o SageMaker PythonSDK, è necessario fornire l'DestinationS3Uriargomento, che è la directory in cui si desidera che il processo di trasformazione registri i dati acquisiti. Facoltativamente, è inoltre possibile specificare i parametri seguenti:

  • KmsKeyId: La AWS KMS chiave utilizzata per crittografare i dati acquisiti.

  • GenerateInferenceId: un flag booleano che, durante l'acquisizione dei dati, indica se si desidera che il processo di trasformazione aggiunga l'ID e l'ora di inferenza all'output. Ciò è utile per il monitoraggio della qualità del modello, in cui è necessario importare i dati di Ground Truth. L'ID di inferenza e l'ora aiutano a far corrispondere i dati acquisiti con i dati di Ground Truth.

AWS SDK for Python (Boto3)

Configura i dati che desideri acquisire con il DataCaptureConfigdizionario quando crei un processo di trasformazione utilizzando il CreateTransformJob metodo.

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

Importa la classe BatchDataCaptureConfig dal sagemaker.model_monitor.

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, ), ... )

Come visualizzare i dati acquisiti

Una volta completato il processo di trasformazione, i dati acquisiti vengono registrati nella DestinationS3Uri fornita con la configurazione di acquisizione dei dati. Sono presenti due sottodirectory in DestinationS3Uri, /input e /output. Se DestinationS3Uri è s3://my-data-capture, il processo di trasformazione crea le seguenti directory:

  • s3://my-data-capture/input: i dati di input acquisiti per il processo di trasformazione.

  • s3://my-data-capture/output: i dati di output acquisiti per il processo di trasformazione.

Per evitare la duplicazione dei dati, i dati acquisiti nelle due directory precedenti sono manifesti. Ogni manifest è un JSONL file che contiene le posizioni Amazon S3 degli oggetti di origine. Un file manifesto può avere l'aspetto dell’esempio seguente:

# 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", ... ]

Il processo di trasformazione organizza ed etichetta questi manifesti con un yyyy/mm/dd/hh Prefisso S3 per indicare quando sono stati acquisiti. Questo aiuta il monitoraggio del modello a determinare la porzione di dati appropriata da analizzare. Ad esempio, se inizi il processo di trasformazione alle 13:00 del 26/08/2022UTC, i dati acquisiti vengono etichettati con una stringa di prefisso. 2022/08/26/13/

InferenceId Generazione

Quando si configura DataCaptureConfig per un processo di trasformazione, è possibile attivare il flag booleano GenerateInferenceId. Ciò è particolarmente utile quando è necessario eseguire processi di monitoraggio della qualità e della distorsione del modello, per i quali sono necessari dati Ground Truth inseriti dall'utente. Il monitoraggio del modello si basa su un ID di inferenza per abbinare i dati acquisiti e i dati Ground Truth. Per ulteriori dettagli sull'ingestione di Ground Truth, consulta Inserisci le etichette Ground Truth e le unisci alle previsioni. Quando GenerateInferenceId è attivo, l'output di trasformazione aggiunge un ID di inferenza (casualeUUID) e l'ora di inizio del processo di trasformazione UTC per ogni record. Questi due valori sono necessari per eseguire il monitoraggio della qualità e della distorsione del modello. Quando si costruiscono i dati di Ground Truth, è necessario fornire lo stesso ID di inferenza per abbinare i dati di output. Attualmente, questa funzionalità supporta gli output di trasformazione in CSVJSON, e formati. JSONL

Se l'output della trasformazione è in CSV formato, il file di output è simile al seguente esempio:

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

Le ultime due colonne sono l'ID di inferenza e l'ora di inizio del processo di trasformazione. Non modificarli. Le colonne rimanenti sono gli output del processo di trasformazione.

Se l'output della trasformazione è in JSON o JSONL formato, il file di output è simile al seguente esempio:

{"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"} ...

Sono presenti due campi aggiunti che sono riservati, SageMakerInferenceId e SageMakerInferenceTime. Non modificare questi campi se è necessario eseguire il monitoraggio della qualità o delle distorsioni del modello: sono necessari per i lavori di unione.