Obtention d'une recommandation d'inférence pour un point de terminaison existant - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Obtention d'une recommandation d'inférence pour un point de terminaison existant

Les tâches de recommandation d'inférence exécutent un ensemble de tests de charge sur les types d'instance recommandés et le point de terminaison existant. Les tâches de recommandation d'inférence utilisent des métriques de performance basées sur des tests de charge utilisant les exemples de données que vous avez fournis lors de l'enregistrement de la version du modèle.

Vous pouvez comparer et obtenir des recommandations d'inférence pour un point de terminaison d' SageMaker inférence existant afin de vous aider à améliorer les performances de votre point de terminaison. La procédure d'obtention de recommandations pour un point de terminaison d' SageMaker inférence existant est similaire à la procédure d'obtention de recommandations d'inférence sans point de terminaison. Il existe plusieurs exclusions de fonctions à prendre en compte lors de l'analyse comparative d'un point de terminaison existant :

  • Vous ne pouvez utiliser qu'un seul point de terminaison existant par tâche Inference Recommender.

  • Vous ne pouvez avoir qu'une seule variante sur votre point de terminaison.

  • Vous ne pouvez pas utiliser un point de terminaison qui active la mise à l'échelle automatique.

  • Cette fonction n'est prise en charge que pour l'Inférence en temps réel.

  • Cette fonction ne prend pas en charge Real-Time Multi-Model Endpoints (Points de terminaison multi-modèles en temps réel).

Avertissement

Nous vous déconseillons fortement d'exécuter une tâche Inference Recommender sur un point de terminaison de production qui gère le trafic réel. La charge synthétique lors de l'analyse comparative peut affecter votre point de terminaison de production et provoquer des limitations ou fournir des résultats d'évaluation inexacts. Nous vous recommandons d'utiliser un point de terminaison externe à la production ou de développement à des fins de comparaison.

Les sections suivantes montrent comment utiliser Amazon SageMaker Inference Recommender pour créer une recommandation d'inférence pour un point de terminaison existant en fonction de votre type de modèle à l'aide de for AWS SDK Python (Boto3) et du. AWS CLI

Note

Avant de créer une tâche de recommandation Inference Recommender, assurez-vous que les Conditions préalables à l'utilisation d'Amazon SageMaker Inference Recommender sont satisfaits.

Prérequis

Si vous ne possédez pas encore de point de terminaison d' SageMaker inférence, vous pouvez soit obtenir une recommandation d'inférence sans point de terminaison, soit créer un point de terminaison d'inférence en temps réel en suivant les instructions de la section Création de votre point de terminaison et déploiement de votre modèle.

Création d'une tâche de recommandation d'inférence pour un point de terminaison existant

Créez une recommandation d'inférence par programmation à l'aide de AWS SDK for Python (Boto3), ou du. AWS CLI Spécifiez un nom de tâche pour votre recommandation d'inférence, le nom d'un point de terminaison d' SageMaker inférence existant, d'un AWS IAM rôleARN, d'une configuration d'entrée et de votre package ARN de modèles à partir du moment où vous avez enregistré votre modèle dans le registre des modèles.

AWS SDK for Python (Boto3)

Utilisez le CreateInferenceRecommendationsJobAPIpour obtenir une recommandation d'inférence. Définissez le champ JobType sur 'Default' pour les tâches de recommandation d'inférence. En outre, fournissez les éléments suivants :

  • Donnez un nom à votre tâche de recommandation Inference Recommender pour le champ JobName. Le nom du poste Inference Recommender doit être unique dans la AWS région et dans votre AWS compte.

  • Le nom de ressource Amazon (ARN) d'un IAM rôle qui permet à Inference Recommender d'effectuer des tâches en votre nom. Définissez-le pour le champ RoleArn.

  • Le package ARN de modèles versionné que vous avez créé lorsque vous avez enregistré votre modèle dans le registre des modèles. Définissez-le pour ModelPackageVersionArn dans le champ InputConfig.

  • Indiquez le nom d'un point de terminaison d' SageMaker inférence existant que vous souhaitez comparer dans Inference Recommender sur le Endpoints terrain. InputConfig

Importez le AWS SDK for Python (Boto3) package et créez un objet SageMaker client à l'aide de la classe client. Si vous avez suivi les étapes décrites dans la section Conditions préalables, le groupe de packages modèles ARN était stocké dans une variable nomméemodel_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}] } )

Consultez le guide de SageMaker API référence Amazon pour obtenir la liste complète des arguments facultatifs et obligatoires auxquels vous pouvez passer CreateInferenceRecommendationsJob.

AWS CLI

Utilisez le create-inference-recommendations-job API pour obtenir une recommandation de point de terminaison d'instance. Définissez le champ job-type sur 'Default' pour les tâches de recommandation de point de terminaison d'instance. En outre, fournissez les éléments suivants :

  • Donnez un nom à votre tâche de recommandation Inference Recommender pour le champ job-name. Le nom du poste Inference Recommender doit être unique dans la AWS région et dans votre AWS compte.

  • Le nom de ressource Amazon (ARN) d'un IAM rôle qui permet à Amazon SageMaker Inference Recommender d'effectuer des tâches en votre nom. Définissez-le pour le champ role-arn.

  • Le package ARN du modèle versionné que vous avez créé lorsque vous avez enregistré votre modèle auprès du Model Registry. Définissez-le pour ModelPackageVersionArn dans le champ input-config.

  • Indiquez le nom d'un point de terminaison d' SageMaker inférence existant que vous souhaitez comparer dans Inference Recommender sur le Endpoints terrain. 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>}] }"

Obtention des résultats de votre tâche de recommandation d'inférence

Vous pouvez collecter les résultats de votre tâche de recommandation d'inférence par programmation avec la même procédure que pour les tâches de recommandation d'inférence standard. Pour de plus amples informations, veuillez consulter Obtention des résultats de votre tâche de recommandation d'inférence.

Lorsque vous obtenez les résultats d'une tâche de recommandation d'inférence pour un point de terminaison existant, vous devriez recevoir une JSON réponse similaire à la suivante :

{ "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" } } ] }

Les premières lignes fournissent des informations sur la tâche de recommandation d'inférence elle-même. Cela inclut le nom de la tâche, le rôleARN, les heures de création et de dernière modification.

Le dictionnaire InferenceRecommendations contient une liste de recommandations d'inférences Inference Recommender.

Le dictionnaire EndpointConfiguration imbriqué contient la recommandation du type d'instance (InstanceType) ainsi que le nom du point de terminaison et de la variante (un modèle d'apprentissage AWS automatique déployé) qui ont été utilisés lors de la tâche de recommandation.

Le dictionnaire Metrics imbriqué contient des informations sur le coût horaire estimé (CostPerHour) pour votre point de terminaison en temps réel en dollars américains, le coût estimé par inférence (CostPerInference) en dollars américains pour votre point de terminaison en temps réel, le nombre maximum attendu de InvokeEndpoint demandes par minute envoyées au point de terminaison (MaxInvocations) et la latence du modèle (ModelLatency), qui est l'intervalle de temps (en millisecondes) auquel votre modèle a mis pour répondre. SageMaker La latence du modèle inclut le temps de communication local pris pour envoyer la requête et pour récupérer la réponse du conteneur d'un modèle et le temps nécessaire pour terminer l'inférence dans le conteneur.

Le dictionnaire imbriqué EndpointPerformances contient le nom de votre point de terminaison existant sur lequel la tâche de recommandation a été exécutée (EndpointName) et les métriques de performance de votre point de terminaison (MaxInvocations et ModelLatency).