Erfassen Sie Daten aus einem Batch-Transformationsauftrag - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erfassen Sie Daten aus einem Batch-Transformationsauftrag

Die Schritte, die erforderlich sind, um die Datenerfassung für Ihren Batch-Transformationsjob zu aktivieren, sind ähnlich, unabhängig davon, ob Sie Python AWS SDK for Python (Boto) oder SageMaker Python verwendenSDK. Wenn Sie das verwenden AWS SDK, definieren Sie das DataCaptureConfigWörterbuch zusammen mit den erforderlichen Feldern innerhalb der CreateTransformJob Methode, um die Datenerfassung zu aktivieren. Wenn Sie SageMaker Python verwendenSDK, importieren Sie die BatchDataCaptureConfig Klasse und initialisieren Sie eine Instanz aus dieser Klasse. Dann übergeben Sie dieses Objekt an den batch_data_capture_config Parameter Ihrer Transform-Auftrag-Instance.

Um die folgenden Codefragmente zu verwenden, ersetzen Sie das italicized placeholder text im Beispielcode durch Ihre eigenen Informationen.

Wie man die Datenerfassung aktiviert

Geben Sie eine Datenerfassungskonfiguration an, wenn Sie einen Transformationsauftrag starten. Unabhängig davon, ob Sie Python AWS SDK for Python (Boto3) oder SageMaker Python verwendenSDK, müssen Sie das DestinationS3Uri Argument angeben. Dies ist das Verzeichnis, in dem der Transformationsjob die erfassten Daten protokollieren soll. Sie können auch optional die folgenden Parameter angeben:

  • KmsKeyId: Der AWS KMS Schlüssel, der zum Verschlüsseln der erfassten Daten verwendet wird.

  • GenerateInferenceId: Ein boolesches Flag, das beim Erfassen der Daten angibt, ob der Transformationsauftrag die Inferenz-ID und die Uhrzeit an Ihre Ausgabe anhängen soll. Dies ist nützlich für die Überwachung der Modellqualität, bei der Sie die Ground-Truth-Daten aufnehmen müssen. Die Inferenz-ID und die Zeit helfen dabei, die erfassten Daten mit Ihren Ground-Truth-Daten abzugleichen.

AWS SDK for Python (Boto3)

Konfigurieren Sie die Daten, die Sie erfassen möchten, mit dem DataCaptureConfigWörterbuch, wenn Sie mit CreateTransformJob dieser Methode einen Transformationsjob erstellen.

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

Importieren Sie die BatchDataCaptureConfig Klasse aus dem 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, ), ... )

Wie kann ich die erfassten Daten einsehen

Sobald der Transformationsauftrag abgeschlossen ist, werden die erfassten Daten unter DestinationS3Uri protokolliert, der von mit der Datenerfassungskonfiguration angegeben wurde. Es gibt zwei Unterverzeichnisse unter DestinationS3Uri, /input und /output. Wenn DestinationS3Uri gleich s3://my-data-capture ist, erstellt der Transformationsauftrag die folgenden Verzeichnisse:

  • s3://my-data-capture/input: Die erfassten Eingabedaten für den Transformationsauftrag.

  • s3://my-data-capture/output: Die erfassten Ausgabedaten für den Transformationsauftrag.

Um Datenduplikationen zu vermeiden, handelt es sich bei den erfassten Daten in den beiden vorherigen Verzeichnissen um Manifeste. Jedes Manifest ist eine JSONL Datei, die die Amazon S3 S3-Speicherorte der Quellobjekte enthält. Eine Manifest-Datei könnte wie im folgenden Beispiel aussehen:

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

Der Transformationsjob organisiert und kennzeichnet diese Manifeste mit einem yyyy/mm/dd/hh Das S3-Präfix gibt an, wann sie erfasst wurden. Dies hilft dem Modellmonitor, den geeigneten Teil der zu analysierenden Daten zu bestimmen. Wenn Sie Ihren Transformationsauftrag beispielsweise am 26.08.2022 um 13 Uhr startenUTC, werden die erfassten Daten mit einer 2022/08/26/13/ Präfixzeichenfolge gekennzeichnet.

InferenceId Generierung

Wenn Sie DataCaptureConfig für einen Transformationsauftrag konfigurieren, können Sie das boolesche Flag GenerateInferenceId aktivieren. Dies ist besonders nützlich, wenn Sie Aufgaben zur Überwachung der Modellqualität und der Modellverzerrung ausführen müssen, für die Sie vom Benutzer aufgenommene Ground-Truth-Daten benötigen. Model Monitor verwendet eine Inferenz-ID, um die erfassten Daten mit den Ground-Truth-Daten abzugleichen. Weitere Informationen zur Einnahme von Ground Truth finden Sie unter Investieren Sie Ground Truth Labels und führen Sie sie mit Vorhersagen zusammen. Wenn GenerateInferenceId diese Option aktiviert ist, hängt die Transformationsausgabe UTC für jeden Datensatz eine Inferenz-ID (zufälligUUID) sowie die Startzeit des Transformationsauftrags an. Sie benötigen diese beiden Werte, um die Überwachung der Modellqualität und der Modellabweichung durchzuführen. Wenn Sie die Ground-Truth-Daten erstellen, müssen Sie dieselbe Inferenz-ID angeben, damit sie mit den Ausgabedaten übereinstimmt. Derzeit unterstützt diese Funktion Transformationsausgaben in den Formaten CSVJSON, undJSONL.

Wenn Ihre Transformationsausgabe im CSV Format vorliegt, sieht die Ausgabedatei wie das folgende Beispiel aus:

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

Die letzten beiden Spalten enthalten die Inferenz-ID und die Startzeit des Transformationsauftrags. Ändern Sie diese nicht. Die verbleibenden Spalten sind die Ergebnisse Ihrer Transformationsaufträge.

Wenn Ihre Transformationsausgabe im JSON JSONL Oder-Format vorliegt, sieht die Ausgabedatei wie das folgende Beispiel aus:

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

Es gibt zwei angefügte Felder, die reserviert sind, SageMakerInferenceId und SageMakerInferenceTime. Ändern Sie diese Felder nicht, wenn Sie die Modellqualität oder die Modellabweichung überwachen müssen – Sie benötigen sie für Zusammenführungsaufträge.