Stapeltransformationen mit Inferenz-Pipelines
Um Inferenzen für einen gesamten Datensatz zu erhalten, führen Sie eine Batch-Transformation für ein trainiertes Modell aus. Zur Ausführung von Inferenzen für einen vollständigen Datensatz können Sie dasselbe Inferenz-Pipeline-Modell verwenden, das für einen Endpunkt zur Echtzeitverarbeitung in einem Stapelumwandlungsauftrag erstellt und bereitgestellt wurde. Für einen Stapeltransformationsauftrag in einer Pipeline werden die Eingaben von Amazon S3 heruntergeladen und in einer oder mehreren HTTP-Anfragen an ein Inferenz-Pipeline-Modell gesendet. Ein Beispiel, das zeigt, wie Daten für eine Batch-Transformation vorbereitet werden, finden Sie im Abschnitt „Section 2 – Preprocess the raw housing data using Scikit Learn“ im Beispiel-Notebook Amazon SageMaker Multi-Model Endpoints using Linear Learner sample notebook
Anmerkung
Wenn Sie Ihre eigenen benutzerdefinierten Docker-Images in einer Pipeline verwenden, die in Amazon SageMaker AI integrierte Algorithmen enthält, ist eine Amazon Elastic Container Registry (ECR)-Richtlinie erforderlich. Ihr Amazon ECR-Repository muss die SageMaker-AI-Berechtigung zum Abrufen des Abbilds erteilen. Weitere Informationen finden Sie unter Beheben von Problemen mit Amazon ECR-Berechtigungen für Inferenz-Pipelines.
Das folgende Beispiel zeigt, wie ein Transformationsauftrag unter Verwendung des Amazon SageMaker Python SDKmodel_name die Inferenz-Pipeline, die (in früheren Beispielen erstellte) SparkML- und XGBoost-Modelle kombiniert. Die von input_data_path angegebene Amazon-S3-Position enthält die Eingabedaten im CSV-Format zum Herunterladen und Senden an das Spark ML-Modell. Nach Abschluss des Transformationsauftrags enthält die von output_data_path angegebene Amazon-S3-Position die vom XGBoost-Modell zurückgegebenen Ausgabedaten im CSV-Format.
import sagemaker input_data_path = 's3://{}/{}/{}'.format(default_bucket, 'key', 'file_name') output_data_path = 's3://{}/{}'.format(default_bucket, 'key') transform_job = sagemaker.transformer.Transformer( model_name = model_name, instance_count = 1, instance_type = 'ml.m4.xlarge', strategy = 'SingleRecord', assemble_with = 'Line', output_path = output_data_path, base_transform_job_name='inference-pipelines-batch', sagemaker_session=sagemaker.Session(), accept = CONTENT_TYPE_CSV) transform_job.transform(data = input_data_path, content_type = CONTENT_TYPE_CSV, split_type = 'Line')