Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
La previsión por lotes, también conocida como inferencia fuera de línea, genera predicciones de modelos a partir de un lote de observaciones. La inferencia por lotes es una buena opción para conjuntos de datos grandes o si no necesita una respuesta inmediata a una solicitud de predicción del modelo.
Por el contrario, la inferencia en línea (inferencia en tiempo real) genera predicciones en tiempo real.
Se puede utilizar SageMaker APIs para recuperar al mejor candidato de un trabajo de AutoML y, a continuación, enviar un lote de datos de entrada para su inferencia con ese candidato.
-
Recuperación de los detalles del trabajo de AutoML.
El siguiente ejemplo de AWS CLI comando utiliza la API DescribeAutoMLJobV2 para obtener detalles del trabajo de AutoML, incluida la información sobre el mejor modelo candidato.
aws sagemaker describe-auto-ml-job-v2 --auto-ml-job-name
job-name
--regionregion
-
Extraiga la definición del InferenceContainerscontenedor del mejor modelo candidato.
Una definición de contenedor es el entorno contenerizado que se utiliza para alojar el modelo de SageMaker IA entrenado para realizar predicciones.
BEST_CANDIDATE=$(aws sagemaker describe-auto-ml-job-v2 \ --auto-ml-job-name
job-name
--regionregion
\ --query 'BestCandidate.InferenceContainers[0]' \ --output jsonEste comando extrae la definición del contenedor para el mejor modelo candidato y la almacena en la variable
BEST_CANDIDATE
. -
Cree un modelo de SageMaker IA utilizando la mejor definición de contenedor candidata.
Usa las definiciones de contenedor de los pasos anteriores para crear un modelo de SageMaker IA mediante la CreateModelAPI.
aws sagemaker create-model \ --model-name '
model-name
' \ --primary-container "$BEST_CANDIDATE" --execution-role-arn 'execution-role-arn>
' \ --region 'region>
El
--execution-role-arn
parámetro especifica la función de IAM que asume la SageMaker IA al utilizar el modelo para la inferencia. Para obtener más información sobre los permisos necesarios para este rol, consulte CreateModel API: Permisos del rol de ejecución. -
Creación de trabajos de transformación por lotes.
En el siguiente ejemplo, se crea un trabajo de transformación mediante la 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
'Los detalles de entrada, salida y recursos se definen en archivos JSON independientes:
-
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
:nota
Recomendamos el uso de instancias m5.12xlarge
para cargas de trabajo de uso general e instancias m5.24xlarge
para tareas de previsión de macrodatos.{ "InstanceType": "instance-type", "InstanceCount": 1 }
-
-
Supervisa el progreso de tu trabajo de transformación mediante la DescribeTransformJobAPI.
Consulte el siguiente AWS CLI comando como ejemplo.
aws sagemaker describe-transform-job \ --transform-job-name '
transform-job-name
' \ --regionregion
-
Recuperación del resultado de la transformación por lotes.
Una vez finalizado el trabajo, el resultado previsto estará disponible en
S3OutputPath
.El nombre de archivo de salida tiene el siguiente formato:
input_data_file_name.out
. Por ejemplo, si el archivo de entrada estext_x.csv
, el nombre de la salida serátext_x.csv.out
.aws s3 ls
s3://my-output-bucket/path/to/output/
Los siguientes ejemplos de código ilustran el uso del AWS SDK para Python (boto3) y AWS CLI para la previsión por lotes.
El siguiente ejemplo usa el SDK de AWS para Python (boto3) a fin de hacer predicciones por lotes.
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
, }, )
El trabajo de inferencia por lotes devuelve una respuesta con el siguiente formato.
{'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}}