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.
Batch-Prognosen
Stapelprognosen, auch Offline-Inferences genannt, erzeugen Modellvorhersagen zu einer Reihe von Beobachtungen. Batch-Inferenz ist eine gute Option für große Datensätze oder wenn Sie keine sofortige Antwort auf eine Modellvorhersageanforderung benötigen.
Im Gegensatz dazu werden bei der Online-Inferenz (Echtzeit-Inferencing) Vorhersagen in Echtzeit erstellt.
Sie können SageMaker APIs damit den besten Kandidaten für einen AutoML-Job abrufen und dann mithilfe dieses Kandidaten einen Stapel von Eingabedaten zur Inferenz einreichen.
-
Rufen Sie die Details des AutoML-Jobs ab.
Das folgende AWS CLI Befehlsbeispiel verwendet den DescribeAutoMLJobV2API, um Details zum AutoML-Job abzurufen, einschließlich der Informationen über den besten Modellkandidaten.
aws sagemaker describe-auto-ml-job-v2 --auto-ml-job-name job-name
--region region
-
Extrahieren Sie die Containerdefinition InferenceContainersfür den besten Modellkandidaten.
Eine Container-Definition ist die containerisierte Umgebung, in der das trainierte SageMaker Modell für Vorhersagen gehostet wird.
BEST_CANDIDATE=$(aws sagemaker describe-auto-ml-job-v2 \
--auto-ml-job-name job-name
--region region
\
--query 'BestCandidate.InferenceContainers[0]' \
--output json
Mit diesem Befehl wird die Containerdefinition für den besten Modellkandidaten extrahiert und in der BEST_CANDIDATE
Variablen gespeichert.
-
Erstellen Sie ein SageMaker Modell mit der besten Kandidaten-Containerdefinition.
Verwenden Sie die Containerdefinitionen aus den vorherigen Schritten, um ein SageMaker Modell mithilfe von zu erstellen CreateModelAPI.
aws sagemaker create-model \
--model-name 'model-name
' \
--primary-container "$BEST_CANDIDATE"
--execution-role-arn 'execution-role-arn>
' \
--region 'region>
Der --execution-role-arn
Parameter gibt die IAM Rolle an, die SageMaker bei der Verwendung des Modells für Inferenz übernommen wird. Einzelheiten zu den für diese Rolle erforderlichen Berechtigungen finden Sie unter CreateModel API: Berechtigungen für Ausführungsrollen.
-
Erstellen Sie einen Batch-Transformationsjob.
Im folgenden Beispiel wird ein Transformationsauftrag mit dem erstellt CreateTransformJobAPI.
aws sagemaker create-transform-job \
--transform-job-name 'transform-job-name
' \
--model-name 'model-name
'\
--transform-input file://transform-input.json \
--transform-output file://transform-output.json \
--transform-resources file://transform-resources.json \
--region 'region
'
Die Eingabe-, Ausgabe- und Ressourcendetails sind in separaten JSON Dateien definiert:
-
transform-input.json
:
{
"DataSource": {
"S3DataSource": {
"S3DataType": "S3Prefix",
"S3Uri": "s3://my-input-data-bucket/path/to/input/data"
}
},
"ContentType": "text/csv",
"SplitType": "None"
}
-
transform-output.json
:
{
"S3OutputPath": "s3://my-output-bucket/path/to/output",
"AssembleWith": "Line"
}
-
transform-resources.json
:
Wir empfehlen die Verwendung von m5.12xlarge-Instances für allgemeine Workloads und m5.24xlarge
Instances für Big-Data-Prognoseaufgaben.
{
"InstanceType": "instance-type",
"InstanceCount": 1
}
-
Überwachen Sie den Fortschritt Ihres Transformationsauftrags mithilfe der. DescribeTransformJobAPI
Sehen Sie sich den folgenden AWS CLI Befehl als Beispiel an.
aws sagemaker describe-transform-job \
--transform-job-name 'transform-job-name
' \
--region region
-
Rufen Sie die Batch-Transformationsausgabe ab.
Nach Abschluss des Jobs ist das vorhergesagte Ergebnis in der verfügbarS3OutputPath
.
Der Name der Ausgabedatei hat das folgende Format: input_data_file_name.out
. Wenn Ihre Eingabedatei z. B. text_x.csv
ist, lautet der Name der Ausgabedatei text_x.csv.out
.
aws s3 ls s3://my-output-bucket/path/to/output/
Die folgenden Codebeispiele veranschaulichen die Verwendung von AWS SDK for Python (boto3) und von AWS CLI for Batch Forecasting.
- AWS SDK for Python (boto3)
-
Im folgenden Beispiel wird AWS SDKfür Python (boto3) verwendet, um Vorhersagen stapelweise zu treffen.
import sagemaker
import boto3
session = sagemaker.session.Session()
sm_client = boto3.client('sagemaker', region_name='us-west-2
')
role = 'arn:aws:iam::1234567890:role/sagemaker-execution-role
'
output_path = 's3://test-auto-ml-job/output
'
input_data = 's3://test-auto-ml-job/test_X.csv
'
best_candidate = sm_client.describe_auto_ml_job_v2(AutoMLJobName=job_name)['BestCandidate']
best_candidate_containers = best_candidate['InferenceContainers']
best_candidate_name = best_candidate['CandidateName']
# create model
reponse = sm_client.create_model(
ModelName = best_candidate_name,
ExecutionRoleArn = role,
Containers = best_candidate_containers
)
# Lauch Transform Job
response = sm_client.create_transform_job(
TransformJobName=f'{best_candidate_name}-transform-job',
ModelName=model_name,
TransformInput={
'DataSource': {
'S3DataSource': {
'S3DataType': 'S3Prefix',
'S3Uri': input_data
}
},
'ContentType': "text/csv
",
'SplitType': 'None'
},
TransformOutput={
'S3OutputPath': output_path,
'AssembleWith': 'Line',
},
TransformResources={
'InstanceType': 'ml.m5.2xlarge
',
'InstanceCount': 1
,
},
)
Der Batch-Inferenzauftrag gibt eine Antwort in folgendem Format zurück.
{'TransformJobArn': 'arn:aws:sagemaker:us-west-2:1234567890:transform-job/test-transform-job
',
'ResponseMetadata': {'RequestId': '659f97fc-28c4-440b-b957-a49733f7c2f2',
'HTTPStatusCode': 200,
'HTTPHeaders': {'x-amzn-requestid': '659f97fc-28c4-440b-b957-a49733f7c2f2',
'content-type': 'application/x-amz-json-1.1',
'content-length': '96',
'date': 'Thu, 11 Aug 2022 22:23:49 GMT'},
'RetryAttempts': 0}}
- AWS Command Line Interface (AWS CLI)
-
-
Besorgen Sie sich die besten Kandidatendefinitionen für Container.
aws sagemaker describe-auto-ml-job-v2 --auto-ml-job-name 'test-automl-job
' --region us-west-2
-
Erstellen Sie das Modell.
aws sagemaker create-model --model-name 'test-sagemaker-model
'
--containers '[{
"Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3",
"ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/data-processor-models/test-job1-dpp0-1-e569ff7ad77f4e55a7e549a/output/model.tar.gz
",
"Environment": {
"AUTOML_SPARSE_ENCODE_RECORDIO_PROTOBUF": "1",
"AUTOML_TRANSFORM_MODE": "feature-transform",
"SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "application/x-recordio-protobuf",
"SAGEMAKER_PROGRAM": "sagemaker_serve",
"SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code"
}
}, {
"Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-xgboost:1.3-1-cpu-py3",
"ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/tuning/flicdf10v2-dpp0-xgb/test-job1E9-244-7490a1c0/output/model.tar.gz
",
"Environment": {
"MAX_CONTENT_LENGTH": "20971520",
"SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv",
"SAGEMAKER_INFERENCE_OUTPUT": "predicted_label",
"SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,probabilities"
}
}, {
"Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3",
"ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/data-processor-models/test-job1-dpp0-1-e569ff7ad77f4e55a7e549a/output/model.tar.gz
",
"Environment": {
"AUTOML_TRANSFORM_MODE": "inverse-label-transform",
"SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv",
"SAGEMAKER_INFERENCE_INPUT": "predicted_label",
"SAGEMAKER_INFERENCE_OUTPUT": "predicted_label",
"SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,labels,probabilities",
"SAGEMAKER_PROGRAM": "sagemaker_serve",
"SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code"
}
}]' \
--execution-role-arn 'arn:aws:iam::1234567890:role/sagemaker-execution-role
' \
--region 'us-west-2
'
-
Erstellen Sie einen Transformationsjob.
aws sagemaker create-transform-job --transform-job-name 'test-tranform-job
'\
--model-name 'test-sagemaker-model
'\
--transform-input '{
"DataSource": {
"S3DataSource": {
"S3DataType": "S3Prefix",
"S3Uri": "s3://amzn-s3-demo-bucket/data.csv
"
}
},
"ContentType": "text/csv
",
"SplitType": "None"
}'\
--transform-output '{
"S3OutputPath": "s3://amzn-s3-demo-bucket/output/
",
"AssembleWith": "Line"
}'\
--transform-resources '{
"InstanceType": "ml.m5.2xlarge
",
"InstanceCount": 1
}'\
--region 'us-west-2
'
-
Überprüfen Sie den Fortschritt des Transformationsjobs.
aws sagemaker describe-transform-job --transform-job-name 'test-tranform-job
' --region us-west-2
Es folgt die Antwort des Transformationsauftrags.
{
"TransformJobName": "test-tranform-job
",
"TransformJobArn": "arn:aws:sagemaker:us-west-2:1234567890:transform-job/test-tranform-job
",
"TransformJobStatus": "InProgress",
"ModelName": "test-model
",
"TransformInput": {
"DataSource": {
"S3DataSource": {
"S3DataType": "S3Prefix",
"S3Uri": "s3://amzn-s3-demo-bucket/data.csv
"
}
},
"ContentType": "text/csv
",
"CompressionType": "None",
"SplitType": "None"
},
"TransformOutput": {
"S3OutputPath": "s3://amzn-s3-demo-bucket/output/
",
"AssembleWith": "Line",
"KmsKeyId": ""
},
"TransformResources": {
"InstanceType": "ml.m5.2xlarge
",
"InstanceCount": 1
},
"CreationTime": 1662495635.679,
"TransformStartTime": 1662495847.496,
"DataProcessing": {
"InputFilter": "$",
"OutputFilter": "$",
"JoinSource": "None"
}
}
Nach den TransformJobStatus
Änderungen an Completed
können Sie das Inferenzergebnis in der S3OutputPath
überprüfen.