Capture des données à partir d'une tâche de transformation par lots - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Capture des données à partir d'une tâche de transformation par lots

Les étapes requises pour activer la capture de données pour votre tâche de transformation par lots sont similaires, que vous utilisiez le AWS SDK for Python (Boto) ou le SageMaker PythonSDK. Si vous utilisez le plugin AWS SDK, définissez le DataCaptureConfigdictionnaire, ainsi que les champs obligatoires, dans le cadre de la CreateTransformJob méthode permettant d'activer la capture de données. Si vous utilisez le SageMaker PythonSDK, importez la BatchDataCaptureConfig classe et initialisez une instance à partir de cette classe. Transmettez ensuite cet objet au paramètre batch_data_capture_config de votre instance de tâche de transformation.

Pour utiliser les extraits de code suivants, remplacez italicized placeholder text dans l'exemple de code avec vos propres informations.

Comment activer la capture des données

Spécifiez une configuration de capture de données lorsque vous lancez une tâche de transformation. Que vous utilisiez le AWS SDK for Python (Boto3) ou le SageMaker PythonSDK, vous devez fournir l'DestinationS3Uriargument, qui est le répertoire dans lequel vous souhaitez que la tâche de transformation enregistre les données capturées. (Facultatif) Vous pouvez également préciser les paramètres suivants :

  • KmsKeyId: Le AWS KMS clé utilisée pour chiffrer les données capturées.

  • GenerateInferenceId : un indicateur booléen qui, lors de la capture des données, indique si vous souhaitez que la tâche de transformation ajoute l'ID d'inférence et l'heure à votre sortie. Cela est utile pour la surveillance de la qualité des modèles, lorsque vous devez ingérer les données Ground Truth. L'ID d'inférence et l'heure permettent de faire correspondre les données capturées à vos données Ground Truth.

AWS SDK for Python (Boto3)

Configurez les données que vous souhaitez capturer avec le DataCaptureConfigdictionnaire lorsque vous créez une tâche de transformation à l'aide de CreateTransformJob cette méthode.

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

Importez la classe BatchDataCaptureConfig du module 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, ), ... )

Comment afficher les données capturées

Une fois la tâche de transformation terminée, les données capturées sont journalisées sous DestinationS3Uri que vous avez fournie avec la configuration de capture de données. Il existe deux sous-répertoires sous DestinationS3Uri, /input et /output. Si DestinationS3Uri est s3://my-data-capture, la tâche de transformation crée les répertoires suivants :

  • s3://my-data-capture/input : les données d'entrée capturées pour la tâche de transformation.

  • s3://my-data-capture/output : les données de sortie capturées pour la tâche de transformation.

Pour éviter la duplication des données, les données capturées dans les deux répertoires précédents sont des manifestes. Chaque manifeste est un JSONL fichier qui contient les emplacements Amazon S3 des objets sources. Un fichier manifeste peut ressembler à l'exemple suivant :

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

La tâche de transformation organise et étiquette ces manifestes avec un yyyy/mm/dd/hh Préfixe S3 pour indiquer quand ils ont été capturés. Cela permet à Model Monitor de déterminer la partie appropriée des données à analyser. Par exemple, si vous commencez votre travail de transformation le 26 août à 13 heuresUTC, les données capturées sont étiquetées avec une 2022/08/26/13/ chaîne de préfixe.

InferenceId Génération

Lorsque vous configurez DataCaptureConfig pour une tâche de transformation, vous pouvez activer l'indicateur booléen GenerateInferenceId. Cela est particulièrement utile lorsque vous devez exécuter des tâches de surveillance de la qualité et du biais des modèles, pour lesquelles vous avez besoin de données Ground Truth ingérées par les utilisateurs. Model Monitor s'appuie sur un ID d'inférence pour faire correspondre les données capturées et les données de Ground Truth. Pour plus de détails sur l'ingestion de Ground Truth, consultez Ingérez les labels Ground Truth et fusionnez-les avec des prédictions. Lorsque cette GenerateInferenceId option est activée, la sortie de transformation ajoute un identifiant d'inférence (aléatoireUUID) ainsi que l'heure de début de la tâche de transformation UTC pour chaque enregistrement. Vous avez besoin de ces deux valeurs pour contrôler la qualité des modèles et le biais des modèles. Lorsque vous créez les données Ground Truth, vous devez fournir le même identifiant d'inférence pour correspondre aux données de sortie. Actuellement, cette fonctionnalité prend en charge les sorties de transformation dans les JSONL formats CSVJSON, et.

Si votre sortie de transformation est au CSV format, le fichier de sortie ressemble à l'exemple suivant :

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

Les deux dernières colonnes contiennent l'ID d'inférence et l'heure de début de la tâche de transformation. Ne les modifiez pas. Les colonnes restantes sont les sorties de vos tâches de transformation.

Si votre sortie de transformation est au JSONL format JSON OR, le fichier de sortie ressemble à l'exemple suivant :

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

Deux champs ajoutés sont réservés, SageMakerInferenceId et SageMakerInferenceTime. Ne modifiez pas ces champs si vous devez contrôler la qualité des modèles ou le biais des modèles. Vous en avez besoin pour les tâches de fusion.