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.
Les étapes requises pour activer la capture de données pour votre tâche de transformation par lots sont similaires, que vous utilisiez le SDK Python AWS SDK for Python (Boto) ou le SDK SageMaker Python. Si vous utilisez le AWS SDK, définissez le DataCaptureConfigdictionnaire, ainsi que les champs obligatoires, dans la CreateTransformJob
méthode pour activer la capture de données. Si vous utilisez le SDK SageMaker AI Python, 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 ceux de l'exemple italicized placeholder
text
de code par 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 SDK AWS SDK for Python (Boto3) ou le SDK SageMaker Python, vous devez fournir l'DestinationS3Uri
argument, 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
: 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.
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,
}
)
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 fichier JSONL 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 préfixe yyyy/mm/dd/hh
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 tâche de transformation le 26 août 2022 à 13 h UTC, les données capturées sont étiquetées avec une chaîne de préfixe 2022/08/26/13/
.
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 GenerateInferenceId
est activé, la sortie de transformation ajoute un ID d'inférence (un UUID aléatoire) ainsi que l'heure de début de la tâche de transformation en 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 fonction prend en charge les sorties de transformation aux formats CSV, JSON et JSONL.
Si la sortie de votre transformation est au format CSV, 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 la sortie de votre transformation est au format JSON ou JSONL, 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.