Obtener una recomendación de inferencia para un punto de conexión existente - Amazon SageMaker AI

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.

Obtener una recomendación de inferencia para un punto de conexión existente

Los trabajos de recomendación de inferencias ejecutan un conjunto de pruebas de carga en los tipos de instancias recomendados y en un punto de conexión existente. Los trabajos de recomendación de inferencia utilizan métricas de rendimiento que se basan en pruebas de carga que utilizan los datos de muestra que proporcionaste durante el registro de la versión del modelo.

Puede comparar y obtener recomendaciones de inferencia para un punto de conexión de inferencia de SageMaker AI existente para ayudarle a mejorar el rendimiento del punto de conexión. El procedimiento para obtener recomendaciones para un punto de conexión de inferencia de SageMaker AI existente es similar al procedimiento para obtener recomendaciones de inferencia sin un punto de conexión. Hay varias exclusiones de características que hay que tener en cuenta a la hora de realizar una evaluación comparativa de un punto de conexión existente:

  • Solo puede utilizar un punto de conexión existente por cada trabajo de recomendación de inferencias.

  • Solo puede tener una variante en su punto de conexión.

  • No puede usar un punto de conexión que habilite el escalado automático.

  • Esta funcionalidad solo es compatible con la inferencia en tiempo real.

  • Esta funcionalidad no admite puntos de conexión multimodelo en tiempo real.

aviso

Se recomienda no ejecutar un trabajo de recomendación de inferencia en un punto de conexión de producción que gestione el tráfico en directo. La carga sintética durante la evaluación comparativa puede afectar al punto de conexión de producción y provocar una limitación o proporcionar resultados de referencia inexactos. Le recomendamos que utilice un punto de conexión que no sea de producción o de desarrollador para fines de comparación.

En las siguientes secciones se muestra cómo utilizar el Recomendador de inferencias de Amazon SageMaker para crear una recomendación de inferencia para un punto de conexión existente en función del tipo de modelo mediante el AWS SDK para Python (Boto3) y la AWS CLI.

nota

Antes de crear un trabajo de recomendación de Recomendador de inferencias, asegúrese de haber cumplido con los Requisitos previos para utilizar el Recomendador de inferencias de Amazon SageMaker.

Requisitos previos

Si aún no tiene un punto de conexión de inferencia de SageMaker AI, puede obtener una recomendación de inferencia sin un punto de conexión o puede crear un punto de conexión de inferencia en tiempo real siguiendo las instrucciones de Crear punto de conexión e implementar el modelo.

Crear un trabajo de recomendación de inferencia para un punto de conexión existente

Cree una recomendación de inferencia mediante programación utilizando AWS SDK para Python (Boto3), o la AWS CLI. Especifique un nombre de trabajo para su recomendación de inferencia, el nombre de un punto de conexión de inferencia de SageMaker AI existente, un ARN de rol de IAM de AWS, una configuración de entrada y el ARN del paquete de modelos desde el momento en que registró el modelo en el registro de modelos.

AWS SDK para Python (Boto3)

Utilice la API CreateInferenceRecommendationsJob para obtener una recomendación de inferencia. Defina el campo JobType como 'Default' para los trabajos de recomendación de inferencias. Además, facilite lo siguiente:

  • Proporcione un nombre para su trabajo del Recomendador de inferencias para el campo JobName. El nombre del trabajo de Recomendador de Inferencias debe ser único en la región de AWS y en su cuenta de AWS.

  • Nombre de recurso de Amazon (ARN) de un rol de IAM que habilita el Recomendador de inferencias para realizar tareas en su nombre. Defina esto para el campo RoleArn.

  • El ARN del paquete de modelos versionados que creó al registrar su modelo en el registro de modelos. Defina esto para ModelPackageVersionArn en el campo InputConfig.

  • Proporcione el nombre de un punto de conexión de inferencia de SageMaker AI existente que desee comparar en el Recomendador de inferencias para Endpoints en el campo InputConfig.

Importe el paquete de AWS SDK para Python (Boto3) y cree un objeto de cliente de SageMaker AI utilizando la clase de cliente. Si siguió los pasos de la sección Requisitos previos, el ARN del grupo de paquetes de modelos se almacenó en una variable denominada model_package_arn.

# Create a low-level SageMaker service client. import boto3 aws_region = '<region>' sagemaker_client = boto3.client('sagemaker', region_name=aws_region) # Provide your model package ARN that was created when you registered your # model with Model Registry model_package_arn = '<model-package-arn>' # Provide a unique job name for SageMaker Inference Recommender job job_name = '<job-name>' # Inference Recommender job type. Set to Default to get an initial recommendation job_type = 'Default' # Provide an IAM Role that gives SageMaker Inference Recommender permission to # access AWS services role_arn = '<arn:aws:iam::<account>:role/*>' # Provide endpoint name for your endpoint that want to benchmark in Inference Recommender endpoint_name = '<existing-endpoint-name>' sagemaker_client.create_inference_recommendations_job( JobName = job_name, JobType = job_type, RoleArn = role_arn, InputConfig = { 'ModelPackageVersionArn': model_package_arn, 'Endpoints': [{'EndpointName': endpoint_name}] } )

Consulte la Guía de referencia de la API de Amazon Sagemaker para obtener una lista completa de los argumentos opcionales y obligatorios que puede pasar a CreateInferenceRecommendationsJob.

AWS CLI

Utilice la API create-inference-recommendations-job para obtener una recomendación de punto de conexión de instancia. Defina el campo job-type en 'Default' para trabajos de recomendación de puntos de conexión de instancia. Además, facilite lo siguiente:

  • Proporcione un nombre para su trabajo del Recomendador de inferencias para el campo job-name. El nombre del trabajo de Recomendador de Inferencias debe ser único en la región de AWS y en su cuenta de AWS.

  • Nombre de recurso de Amazon (ARN) de un rol de IAM que habilita a Recomendador de inferencias de Amazon SageMaker para realizar tareas en su nombre. Defina esto para el campo role-arn.

  • El ARN del paquete de modelos versionados que creó al registrar su modelo en el registro de modelos. Defina esto para ModelPackageVersionArn en el campo input-config.

  • Proporcione el nombre de un punto de conexión de inferencia de SageMaker AI existente que desee comparar en el Recomendador de inferencias para Endpoints en el campo input-config.

aws sagemaker create-inference-recommendations-job --region <region>\ --job-name <job_name>\ --job-type Default\ --role-arn arn:aws:iam::<account:role/*>\ --input-config "{ \"ModelPackageVersionArn\": \"arn:aws:sagemaker:<region:account:role/*>\", \"Endpoints\": [{\"EndpointName\": <endpoint_name>}] }"

Obtener resultados de trabajo de recomendación de inferencia

Puede recopilar los resultados de su trabajo de recomendación de inferencia mediante programación con el mismo procedimiento que para los trabajos de recomendación de inferencia estándar. Para obtener más información, consulte Obtener resultados de trabajo de recomendación de inferencia.

Cuando obtenga los resultados de un trabajo de recomendación de inferencia para un punto de conexión existente, debería recibir una respuesta en JSON similar a la siguiente:

{ "JobName": "job-name", "JobType": "Default", "JobArn": "arn:aws:sagemaker:region:account-id:inference-recommendations-job/resource-id", "RoleArn": "iam-role-arn", "Status": "COMPLETED", "CreationTime": 1664922919.2, "LastModifiedTime": 1664924208.291, "InputConfig": { "ModelPackageVersionArn": "arn:aws:sagemaker:region:account-id:model-package/resource-id", "Endpoints": [ { "EndpointName": "endpoint-name" } ] }, "InferenceRecommendations": [ { "Metrics": { "CostPerHour": 0.7360000014305115, "CostPerInference": 7.456940238625975e-06, "MaxInvocations": 1645, "ModelLatency": 171 }, "EndpointConfiguration": { "EndpointName": "sm-endpoint-name", "VariantName": "variant-name", "InstanceType": "ml.g4dn.xlarge", "InitialInstanceCount": 1 }, "ModelConfiguration": { "EnvironmentParameters": [ { "Key": "TS_DEFAULT_WORKERS_PER_MODEL", "ValueType": "string", "Value": "4" } ] } } ], "EndpointPerformances": [ { "Metrics": { "MaxInvocations": 184, "ModelLatency": 1312 }, "EndpointConfiguration": { "EndpointName": "endpoint-name" } } ] }

Las primeras líneas proporcionan información sobre el trabajo de recomendación de inferencia en sí. Esto incluye el nombre del trabajo, el ARN del rol y las horas de creación y última modificación.

El diccionario InferenceRecommendations contiene una lista de recomendaciones de inferencias del Recomendador de Inferencias.

El diccionario anidado EndpointConfiguration contiene la recomendación del tipo de instancia (InstanceType) junto con el punto de conexión y el nombre de la variante (un modelo de machine learning de AWS implementado) que se utilizó durante el trabajo de recomendación.

El diccionario Metrics anidado contiene información sobre el costo estimado por hora (CostPerHour) para el punto de conexión en tiempo real en dólares estadounidenses, el costo estimado por inferencia (CostPerInference) en dólares estadounidenses para el punto de conexión en tiempo real, el número máximo esperado de InvokeEndpoint solicitudes por minuto enviadas al punto de conexión (MaxInvocations) y la latencia del modelo (ModelLatency), que es el intervalo de tiempo (en milisegundos) que el modelo tardó en responder a SageMaker AI. La latencia del modelo incluye el tiempo de comunicación local empleado en el envío de la solicitud y la recuperación de la respuesta del contenedor de un modelo, así como el tiempo que se tarda en completar la inferencia en el contenedor.

El diccionario anidado EndpointPerformances contiene el nombre del punto de conexión actual en el que se ejecutó el trabajo de recomendación (EndpointName) y las métricas de rendimiento del punto de conexión (MaxInvocations y ModelLatency).