Capturar dados do trabalho de transformação de lotes - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Capturar dados do trabalho de transformação de lotes

As etapas necessárias para ativar a captura de dados para seu trabalho de transformação em lote são semelhantes, independentemente de você usar o Python AWS SDK for Python (Boto) ou o SageMaker PythonSDK. Se você usar o AWS SDK, defina o DataCaptureConfigdicionário, junto com os campos obrigatórios, dentro do CreateTransformJob método para ativar a captura de dados. Se você usa o SageMaker PythonSDK, importe a BatchDataCaptureConfig classe e inicialize uma instância dessa classe. Em seguida, passe esse objeto para o parâmetro batch_data_capture_config da sua instância do trabalho de transformação.

Para usar os seguintes trechos de código, substitua o italicized placeholder text no código de exemplo com suas próprias informações.

Como habilitar a captura de dados

Especifique uma configuração de captura de dados ao iniciar um trabalho de transformação. Se você usa o AWS SDK for Python (Boto3) ou o SageMaker PythonSDK, você deve fornecer o DestinationS3Uri argumento, que é o diretório em que você deseja que o trabalho de transformação registre os dados capturados. Opcionalmente, você também pode definir os seguintes parâmetros:

  • KmsKeyId: a AWS KMS chave usada para criptografar os dados capturados.

  • GenerateInferenceId: sinalizador booleano que, ao capturar os dados, indica se você deseja que o trabalho de transformação anexe o ID e a hora da inferência à sua saída. Isso é útil para o monitoramento da qualidade do modelo, onde você precisa ingerir os dados do Ground Truth. O ID de inferência e o tempo ajudam a combinar os dados capturados com os dados do Ground Truth.

AWS SDK for Python (Boto3)

Configure os dados que você deseja capturar com o DataCaptureConfigdicionário ao criar um trabalho de transformação usando o CreateTransformJob método.

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

Importe a classe BatchDataCaptureConfig do ssagemaker.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, ), ... )

Como visualizar os dados capturados

Depois que o trabalho de transformação for concluído, os dados capturados serão registrados sob o DestinationS3Uri que você forneceu com a configuração da captura de dados. Há dois subdiretórios em DestinationS3Uri, /input e /output. Se DestinationS3Uri for s3://my-data-capture, o trabalho de transformação criará os seguintes diretórios:

  • s3://my-data-capture/input: os dados de entrada capturados para o trabalho de transformação.

  • s3://my-data-capture/output: os dados de saída capturados para o trabalho de transformação.

Para evitar a duplicação de dados, os dados capturados nos dois diretórios anteriores são manifestos. Cada manifesto é um JSONL arquivo que contém as localizações dos objetos de origem no Amazon S3. Um arquivo manifesto pode parecer com o exemplo a seguir:

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

O trabalho de transformação organiza e rotula esses manifestos com um yyyy/mm/dd/hh Prefixo S3 para indicar quando foram capturados. Isso ajuda o monitor do modelo a determinar a parte apropriada dos dados a serem analisados. Por exemplo, se você iniciar seu trabalho de transformação às 13h de 26/08/2022UTC, os dados capturados serão rotulados com uma string de prefixo. 2022/08/26/13/

InferenceId Geração

Ao configurar uma DataCaptureConfig para um trabalho de transformação, você pode ativar o sinalizador booleano GenerateInferenceId. Essa ação é particularmente útil quando você precisa executar trabalhos de monitoramento da qualidade do modelo e do desvio do modelo, para os quais você precisa de dados do Ground Truth ingeridos pelo usuário. O monitor de modelo depende de um ID de inferência para combinar os dados capturados e os dados do Ground Truth. Para obter detalhes adicionais sobre a ingestão do Ground Truth, consulte Ingira rótulos de Ground Truth e mescle-os com previsões. Quando GenerateInferenceId está ativada, a saída da transformação acrescenta um ID de inferência (aleatórioUUID), bem como a hora de início do trabalho de transformação UTC para cada registro. Você precisa desses dois valores para executar o monitoramento da qualidade do modelo e do desvio de modelo. Ao criar os dados do Ground Truth, você precisa fornecer o mesmo ID de inferência para corresponder aos dados de saída. Atualmente, esse recurso suporta saídas de transformação em JSONL formatos CSVJSON, e.

Se a saída da transformação estiver no CSV formato, o arquivo de saída se parecerá com o exemplo a seguir:

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

As duas últimas colunas são a ID de inferência e o horário de início do trabalho de transformação. Não os modifique. As colunas restantes são as saídas do seu trabalho de transformação.

Se a saída da transformação estiver em JSON ou no JSONL formato, o arquivo de saída se parecerá com o exemplo a seguir:

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

Há dois campos anexados que são reservados, SageMakerInferenceId e SageMakerInferenceTime. Não modifique esses campos se precisar executar o monitoramento da qualidade do modelo ou do desvio de modelo. pois você precisa deles para trabalhos de mesclagem.