Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Previsione in batch
La previsione in batch, nota anche come inferenza offline, genera previsioni di modelli su un batch di osservazioni. L’inferenza in batch è una buona opzione per set di dati di grandi dimensioni o se non è necessaria una risposta immediata a una richiesta di previsione del modello.
Al contrario, l'inferenza online (inferenza in tempo reale) genera previsioni in tempo reale.
È possibile SageMaker APIs utilizzarlo per recuperare il miglior candidato di un lavoro AutoML e quindi inviare un batch di dati di input per l'inferenza utilizzando quel candidato.
-
Recupera i dettagli del processo AutoML.
Il seguente esempio di AWS CLI comando utilizza l'API DescribeAutoMLJobV2 per ottenere i dettagli del job AutoML, incluse le informazioni sul miglior modello candidato.
aws sagemaker describe-auto-ml-job-v2 --auto-ml-job-name job-name --region region
-
Estrai la definizione del contenitore da InferenceContainersper il miglior modello candidato.
Una definizione di contenitore è l'ambiente containerizzato utilizzato per ospitare il modello di SageMaker intelligenza artificiale addestrato per fare previsioni.
BEST_CANDIDATE=$(aws sagemaker describe-auto-ml-job-v2 \
--auto-ml-job-name job-name
--region region \
--query 'BestCandidate.InferenceContainers[0]' \
--output json
Questo comando estrae la definizione di container per il miglior modello candidato e la archivia nella variabile BEST_CANDIDATE.
-
Crea un modello di SageMaker intelligenza artificiale utilizzando la migliore definizione di contenitore candidata.
Utilizza le definizioni dei contenitori dei passaggi precedenti per creare un modello di SageMaker intelligenza artificiale utilizzando l'CreateModelAPI.
aws sagemaker create-model \
--model-name 'model-name' \
--primary-container "$BEST_CANDIDATE"
--execution-role-arn 'execution-role-arn>' \
--region 'region>
Il --execution-role-arn parametro specifica il ruolo IAM che l' SageMaker IA assume quando utilizza il modello per l'inferenza. Per i dettagli sulle autorizzazioni richieste per questo ruolo, consulta CreateModel API: Execution Role Permissions.
-
Crea un processo di trasformazione in batch.
L'esempio seguente crea un processo di trasformazione utilizzando l'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'
I dettagli di input, output e risorse sono definiti in file JSON separati:
-
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:
È consigliabile utilizzare istanze m5.12xlarge per carichi di lavoro generici e istanze m5.24xlarge per attività di previsione dei big data.
{
"InstanceType": "instance-type",
"InstanceCount": 1
}
-
Monitora lo stato di avanzamento del processo di trasformazione utilizzando l'DescribeTransformJobAPI.
Vedi il AWS CLI comando seguente come esempio.
aws sagemaker describe-transform-job \
--transform-job-name 'transform-job-name' \
--region region
-
Recupera l’output della trasformazione in batch.
Al termine del processo, il risultato previsto è disponibile in S3OutputPath.
Il nome file di output presenta il formato seguente: input_data_file_name.out. Ad esempio, se il file di input è text_x.csv, il nome di output sarà text_x.csv.out.
aws s3 ls s3://my-output-bucket/path/to/output/
I seguenti esempi di codice illustrano l'uso dell'AWSSDK per Python (boto3) e per la previsione in batch. AWS CLI
- AWSSDK for Python (boto3)
-
L’esempio seguente utilizza AWS SDK per Python (boto3) per fare previsioni in batch.
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,
},
)
Il processo di inferenza batch restituisce una risposta nel formato seguente.
{'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)
-
-
Ottieni le definizioni dei container di miglior candidati
aws sagemaker describe-auto-ml-job-v2 --auto-ml-job-name 'test-automl-job' --region us-west-2
-
Crea il modello.
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'
-
Crea un processo di trasformazione.
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'
-
Controlla lo stato di avanzamento del processo di trasformazione.
aws sagemaker describe-transform-job --transform-job-name 'test-tranform-job' --region us-west-2
Di seguito è riportata la risposta del processo di trasformazione.
{
"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"
}
}
Dopo che TransformJobStatus cambia in Completed, puoi controllare il risultato dell’inferenza in S3OutputPath.