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á.
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 SDK do Python AWS SDK for Python (Boto) ou do SageMaker Python. Se você usa 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 SDK SageMaker AI Python, 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 trechos de código a seguir, substitua o código italicized placeholder
text
no exemplo por 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 SDK AWS SDK for Python (Boto3) ou o SageMaker Python, 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.
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,
}
)
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 arquivo JSONL que contém as localizações dos objetos de fonte no Amazon S3. Um arquivo manifesto pode parecer com o seguinte exemplo:
# 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 prefixo yyyy/mm/dd/hh
S3 para indicar quando eles 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 em 26/08/2022 às 13h UTC, 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 Ingerir rótulos do Ground Truth e mesclá-los com predições. Quando GenerateInferenceId
está ativado, a saída da transformação anexa um ID de inferência (um UUID aleatório), bem como o horário de início do trabalho de transformação em 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 atributo é compatível com saídas de transformação nos formatos CSV, JSON e JSONL.
Se a saída da transformação estiver no formato CSV, o arquivo de saída terá a aparência do seguinte exemplo:
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 no formato JSON ou JSONL, o arquivo de saída terá a aparência do seguinte exemplo:
{"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.