Exécuter un test de charge personnalisé - 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.

Exécuter un test de charge personnalisé

Les tests de charge Amazon SageMaker Inference Recommender permettent de réaliser des tests de performance approfondis basés sur les exigences de production en matière de latence et de débit, sur les modèles de trafic personnalisés et sur les points de terminaison sans serveur ou les instances en temps réel (jusqu'à 10) que vous sélectionnez.

Les sections suivantes montrent comment créer, décrire et arrêter un test de charge par programmation à l'aide du AWS SDK for Python (Boto3) et AWS CLI, ou de manière interactive à l'aide d'Amazon SageMaker Studio Classic ou de la console. SageMaker

Création d'une tâche de test de charge

Créez un test de charge par programmation à l'aide de AWS SDK for Python (Boto3), avec ou de manière interactive à l' AWS CLI aide de Studio Classic ou de la console. SageMaker Comme pour les recommandations d'inférence d'Inference Recommender, spécifiez un nom de tâche pour votre test de charge, un AWS IAM rôleARN, une configuration d'entrée et le package de votre modèle ARN à partir du moment où vous avez enregistré votre modèle dans le registre des modèles. Les tests de charge nécessitent que vous spécifiiez également un modèle de trafic et des conditions d'arrêt.

AWS SDK for Python (Boto3)

Utilisez le CreateInferenceRecommendationsJob API pour créer un test de charge Inference Recommender. Spécifiez Advanced pour JobType et fournissez les éléments suivants :

  • Un nom de tâche pour votre test de charge (JobName). Le nom du poste doit être unique dans votre 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.

  • Un dictionnaire de configuration des points de terminaison (InputConfig) dans lequel spécifiez les éléments suivants :

    • Pour TrafficPattern, spécifiez le modèle de trafic par phases ou escaliers. Avec le modèle de trafic par phases, les nouveaux utilisateurs apparaissent chaque minute au rythme que vous spécifiez. Avec le modèle de trafic par escaliers, les nouveaux utilisateurs apparaissent à intervalles réguliers (ou par étapes) au rythme que vous spécifiez. Sélectionnez l'une des méthodes suivantes :

      • Pour TrafficType, spécifiez PHASES. Ensuite, pour le tableau Phases, spécifiez le InitialNumberOfUsers (le nombre d'utilisateurs simultanés avec lesquels commencer, avec un minimum de 1 et un maximum de 3), SpawnRate (le nombre d'utilisateurs à faire apparaître en une minute pour une phase spécifique du test de charge, avec un minimum de 0 et un maximum de 3) et DurationInSeconds (la durée de la phase de trafic, avec un minimum de 120 et un maximum de 3 600).

      • Pour TrafficType, spécifiez STAIRS. Ensuite, pour le tableau Stairs, spécifiez la DurationInSeconds (la durée de la phase de trafic, avec un minimum de 120 et un maximum de 3 600), NumberOfSteps (le nombre d'intervalles utilisés pendant la phase) et UsersPerStep (le nombre d'utilisateurs ajoutés pendant chaque intervalle). Notez que la longueur de chaque étape est la valeur de DurationInSeconds / NumberOfSteps. Par exemple, si votre DurationInSeconds est 600 et que vous spécifiez 5 étapes, chaque étape dure 120 secondes.

        Note

        Un utilisateur est défini comme un acteur généré par le système qui s'exécute en boucle et appelle des demandes vers un point de terminaison dans le cadre d'Inference Recommender. Pour un XGBoost conteneur classique exécuté sur une ml.c5.large instance, les points de terminaison peuvent atteindre 30 000 appels par minute (500 tps) avec seulement 15 à 20 utilisateurs.

    • Pour ResourceLimit, spécifiez MaxNumberOfTests (le nombre maximum de tests de charge d'analyse comparative pour une tâche Inference Recommender, avec un minimum de 1 et un maximum de 10) et MaxParallelOfTests (le nombre maximum de tests de charge d'analyse comparative parallèle pour une tâche Inference Recommender, avec un minimum de 1 et un maximum de 10).

    • Pour EndpointConfigurations, vous pouvez spécifier l'un des éléments suivants :

      • Pour le champ InstanceType, spécifiez le type d'instance sur lequel vous souhaitez exécuter vos tests de charge.

      • La ServerlessConfig, dans laquelle vous spécifiez vos valeurs idéales pour MaxConcurrency et MemorySizeInMB pour un point de terminaison sans serveur. Pour plus d'informations, consultez la documentation Inférence sans serveur.

  • Un dictionnaire des conditions d'arrêt (StoppingConditions), dans lequel, si l'une des conditions est remplie, la tâche Inference Recommender s'arrête. Pour cet exemple, spécifiez les champs suivants dans le dictionnaire :

    • Pour MaxInvocations, spécifiez le nombre maximum de demandes par minute attendues pour le point de terminaison, avec un minimum de 1 et un maximum de 30 000.

    • Pour ModelLatencyThresholds, spécifiez Percentile (le seuil percentile de latence du modèle) et ValueInMilliseconds (la valeur du percentile de latence du modèle en millisecondes).

    • (Facultatif) PourFlatInvocations, vous pouvez spécifier si vous souhaitez poursuivre le test de charge lorsque le taux TPS (d'appels par minute) s'aplatit. Un TPS taux aplati signifie généralement que le terminal a atteint sa capacité maximale. Toutefois, vous souhaiterez peut-être continuer à surveiller le point de terminaison dans des conditions de pleine capacité. Pour continuer le test de charge lorsque cela se produit, spécifiez cette valeur comme Continue. Sinon, la valeur par défaut est Stop.

# Create a low-level SageMaker service client. import boto3 aws_region=<INSERT> sagemaker_client=boto3.client('sagemaker', region=aws_region) # Provide a name to your recommendation based on load testing load_test_job_name="<INSERT>" # Provide the name of the sagemaker instance type instance_type="<INSERT>" # Provide the IAM Role that gives SageMaker permission to access AWS services role_arn='arn:aws:iam::<account>:role/*' # Provide your model package ARN that was created when you registered your # model with Model Registry model_package_arn='arn:aws:sagemaker:<region>:<account>:role/*' sagemaker_client.create_inference_recommendations_job( JobName=load_test_job_name, JobType="Advanced", RoleArn=role_arn, InputConfig={ 'ModelPackageVersionArn': model_package_arn, "JobDurationInSeconds": 7200, 'TrafficPattern' : { # Replace PHASES with STAIRS to use the stairs traffic pattern 'TrafficType': 'PHASES', 'Phases': [ { 'InitialNumberOfUsers': 1, 'SpawnRate': 1, 'DurationInSeconds': 120 }, { 'InitialNumberOfUsers': 1, 'SpawnRate': 1, 'DurationInSeconds': 120 } ] # Uncomment this section and comment out the Phases object above to use the stairs traffic pattern # 'Stairs' : { # 'DurationInSeconds': 240, # 'NumberOfSteps': 2, # 'UsersPerStep': 2 # } }, 'ResourceLimit': { 'MaxNumberOfTests': 10, 'MaxParallelOfTests': 3 }, "EndpointConfigurations" : [{ 'InstanceType': 'ml.c5.xlarge' }, { 'InstanceType': 'ml.m5.xlarge' }, { 'InstanceType': 'ml.r5.xlarge' }] # Uncomment the ServerlessConfig and comment out the InstanceType field if you want recommendations for a serverless endpoint # "ServerlessConfig": { # "MaxConcurrency": value, # "MemorySizeInMB": value # } }, StoppingConditions={ 'MaxInvocations': 1000, 'ModelLatencyThresholds':[{ 'Percentile': 'P95', 'ValueInMilliseconds': 100 }], # Change 'Stop' to 'Continue' to let the load test continue if invocations flatten 'FlatInvocations': 'Stop' } )

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

AWS CLI

Utilisez le create-inference-recommendations-job API pour créer un test de charge Inference Recommender. Spécifiez Advanced pour JobType et fournissez les éléments suivants :

  • Un nom de tâche pour votre test de charge (job-name). Le nom du poste doit être unique dans votre 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 role-arn.

  • Un dictionnaire de configuration des points de terminaison (input-config) dans lequel spécifiez les éléments suivants :

    • Pour TrafficPattern, spécifiez le modèle de trafic par phases ou escaliers. Avec le modèle de trafic par phases, les nouveaux utilisateurs apparaissent chaque minute au rythme que vous spécifiez. Avec le modèle de trafic par escaliers, les nouveaux utilisateurs apparaissent à intervalles réguliers (ou par étapes) au rythme que vous spécifiez. Sélectionnez l'une des méthodes suivantes :

      • Pour TrafficType, spécifiez PHASES. Ensuite, pour le tableau Phases, spécifiez le InitialNumberOfUsers (le nombre d'utilisateurs simultanés avec lesquels commencer, avec un minimum de 1 et un maximum de 3), SpawnRate (le nombre d'utilisateurs à faire apparaître en une minute pour une phase spécifique du test de charge, avec un minimum de 0 et un maximum de 3) et DurationInSeconds (la durée de la phase de trafic, avec un minimum de 120 et un maximum de 3 600).

      • Pour TrafficType, spécifiez STAIRS. Ensuite, pour le tableau Stairs, spécifiez la DurationInSeconds (la durée de la phase de trafic, avec un minimum de 120 et un maximum de 3 600), NumberOfSteps (le nombre d'intervalles utilisés pendant la phase) et UsersPerStep (le nombre d'utilisateurs ajoutés pendant chaque intervalle). Notez que la longueur de chaque étape est la valeur de DurationInSeconds / NumberOfSteps. Par exemple, si votre DurationInSeconds est 600 et que vous spécifiez 5 étapes, chaque étape dure 120 secondes.

        Note

        Un utilisateur est défini comme un acteur généré par le système qui s'exécute en boucle et appelle des demandes vers un point de terminaison dans le cadre d'Inference Recommender. Pour un XGBoost conteneur classique exécuté sur une ml.c5.large instance, les points de terminaison peuvent atteindre 30 000 appels par minute (500 tps) avec seulement 15 à 20 utilisateurs.

    • Pour ResourceLimit, spécifiez MaxNumberOfTests (le nombre maximum de tests de charge d'analyse comparative pour une tâche Inference Recommender, avec un minimum de 1 et un maximum de 10) et MaxParallelOfTests (le nombre maximum de tests de charge d'analyse comparative parallèle pour une tâche Inference Recommender, avec un minimum de 1 et un maximum de 10).

    • Pour EndpointConfigurations, vous pouvez spécifier l'un des éléments suivants :

      • Pour le champ InstanceType, spécifiez le type d'instance sur lequel vous souhaitez exécuter vos tests de charge.

      • La ServerlessConfig, dans laquelle vous spécifiez vos valeurs idéales pour MaxConcurrency et MemorySizeInMB pour un point de terminaison sans serveur.

  • Un dictionnaire des conditions d'arrêt (stopping-conditions), dans lequel, si l'une des conditions est remplie, la tâche Inference Recommender s'arrête. Pour cet exemple, spécifiez les champs suivants dans le dictionnaire :

    • Pour MaxInvocations, spécifiez le nombre maximum de demandes par minute attendues pour le point de terminaison, avec un minimum de 1 et un maximum de 30 000.

    • Pour ModelLatencyThresholds, spécifiez Percentile (le seuil percentile de latence du modèle) et ValueInMilliseconds (la valeur du percentile de latence du modèle en millisecondes).

    • (Facultatif) PourFlatInvocations, vous pouvez spécifier si vous souhaitez poursuivre le test de charge lorsque le taux TPS (d'appels par minute) s'aplatit. Un TPS taux aplati signifie généralement que le terminal a atteint sa capacité maximale. Toutefois, vous souhaiterez peut-être continuer à surveiller le point de terminaison dans des conditions de pleine capacité. Pour continuer le test de charge lorsque cela se produit, spécifiez cette valeur comme Continue. Sinon, la valeur par défaut est Stop.

aws sagemaker create-inference-recommendations-job\ --region <region>\ --job-name <job-name>\ --job-type ADVANCED\ --role-arn arn:aws:iam::<account>:role/*\ --input-config \"{ \"ModelPackageVersionArn\": \"arn:aws:sagemaker:<region>:<account>:role/*\", \"JobDurationInSeconds\": 7200, \"TrafficPattern\" : { # Replace PHASES with STAIRS to use the stairs traffic pattern \"TrafficType\": \"PHASES\", \"Phases\": [ { \"InitialNumberOfUsers\": 1, \"SpawnRate\": 60, \"DurationInSeconds\": 300 } ] # Uncomment this section and comment out the Phases object above to use the stairs traffic pattern # 'Stairs' : { # 'DurationInSeconds': 240, # 'NumberOfSteps': 2, # 'UsersPerStep': 2 # } }, \"ResourceLimit\": { \"MaxNumberOfTests\": 10, \"MaxParallelOfTests\": 3 }, \"EndpointConfigurations\" : [ { \"InstanceType\": \"ml.c5.xlarge\" }, { \"InstanceType\": \"ml.m5.xlarge\" }, { \"InstanceType\": \"ml.r5.xlarge\" } # Use the ServerlessConfig and leave out the InstanceType fields if you want recommendations for a serverless endpoint # \"ServerlessConfig\": { # \"MaxConcurrency\": value, # \"MemorySizeInMB\": value # } ] }\" --stopping-conditions \"{ \"MaxInvocations\": 1000, \"ModelLatencyThresholds\":[ { \"Percentile\": \"P95\", \"ValueInMilliseconds\": 100 } ], # Change 'Stop' to 'Continue' to let the load test continue if invocations flatten \"FlatInvocations\": \"Stop\" }\"
Amazon SageMaker Studio Classic

Créez un test de charge avec Studio Classic.

  1. Dans votre application Studio Classic, choisissez l'icône d'accueil ( ).

  2. Dans la barre latérale gauche de Studio Classic, sélectionnez Déploiements.

  3. Sélectionnez Inference Recommender (Inference Recommender) dans la liste déroulante.

  4. Choisissez Create inference recommender job (Créer une tâche Inference Recommender). Un nouvel onglet intitulé Create inference recommender job (Créer une tâche Inference Recommender) s'ouvre.

  5. Sélectionnez le nom de votre groupe de modèles dans le champ Model group (Groupe de modèles) déroulant. La liste inclut tous les groupes de modèles enregistrés dans le registre des modèles de votre compte, y compris les modèles enregistrés en dehors de Studio Classic.

  6. Sélectionnez une version de modèle dans le champ déroulant Model version (Version de modèle).

  7. Choisissez Continuer.

  8. Fournissez un nom pour la tâche dans le champ Name (Nom).

  9. (Facultatif) Fournissez une description de votre tâche dans le champ Description.

  10. Choisissez un IAM rôle qui accorde à Inference Recommender l'autorisation d'accéder AWS aux services. Vous pouvez créer un rôle et y associer la politique AmazonSageMakerFullAccess IAM gérée pour y parvenir, ou vous pouvez laisser Studio Classic créer un rôle pour vous.

  11. Sélectionnez Stopping Conditions (Conditions d'arrêt) pour développer les champs de saisie disponibles. Fournissez un jeu de conditions pour arrêter une recommandation de déploiement.

    1. Spécifiez le nombre maximal de demandes par minute attendues pour le point de terminaison dans le champ Max Invocations Per Minute (Nombre d'appels max. par minute).

    2. Spécifiez le seuil de latence du modèle en microsecondes dans le champ Model Latency Threshold (Seuil de latence du modèle). Le champ Model Latency Threshold (Seuil de latence du modèle) décrit l'intervalle de temps nécessaire à un modèle pour répondre, tel qu'il est vu dans Inference Recommender. L'intervalle comprend le temps de communication local nécessaire pour envoyer la demande et récupérer la réponse du conteneur modèle et le temps nécessaire pour terminer l'inférence dans le conteneur.

  12. Sélectionnez Traffic Pattern (Modèle de trafic) pour développer les champs de saisie disponibles.

    1. Définissez le nombre initial d'utilisateurs virtuels en spécifiant un nombre entier dans le champ Initial Number of Users (Nombre initial d'utilisateurs).

    2. Fournissez un nombre entier pour le champ Spawn Rate (Taux de génération). Le taux d'apparition définit le nombre d'utilisateurs créés par seconde.

    3. Définissez la durée de la phase en secondes en spécifiant un nombre entier dans le champ Duration (Durée).

    4. (Facultatif) Ajoutez des modèles de trafic supplémentaires. Pour ce faire, sélectionnez Add (Ajouter).

  13. Sélectionnez le paramètre Additional (Supplémentaire) pour afficher le champ Max test duration (Durée maximale du test). Spécifiez (en secondes) la durée maximale qu'un test peut prendre pendant une tâche. Les nouvelles tâches ne sont pas planifiées après la durée définie. Cela permet de garantir que les tâches en cours ne sont pas arrêtés et que vous ne visualisez que les tâches terminées.

  14. Choisissez Continuer.

  15. Sélectionnez Selected Instances (Instances sélectionnées).

  16. Dans le champ Instances for benchmarking (Instances pour analyse comparative), sélectionnez Add instances to test (Ajouter des instances à tester). Sélectionnez jusqu'à 10 instances pour Inference Recommender à utiliser pour les tests de charge.

  17. Sélectionnez Additional settings (Paramètres supplémentaires).

    1. Fournissez un nombre entier qui définit une limite supérieure du nombre de tests qu'une tâche peut effectuer pour le champ Max number of tests (Nombre max. de tests). Notez que chaque configuration de point de terminaison entraîne un nouveau test de charge.

    2. Indiquez un nombre entier pour le champ de test Max parallel (Max. parallèle). Ce paramètre définit une limite supérieure du nombre de tests de charge pouvant s'exécuter en parallèle.

  18. Sélectionnez Envoyer.

    Le test de charge peut durer jusqu'à 2 heures.

    Avertissement

    Ne fermez pas cet onglet. Si vous fermez cet onglet, vous annulez la tâche de test de charge d'Inference Recommender.

SageMaker console

Créez un test de charge personnalisé via la SageMaker console en procédant comme suit :

  1. Accédez à la SageMaker console à l'adresse https://console.aws.amazon.com/sagemaker/.

  2. Dans le panneau de navigation de gauche, choisissez Inférence, puis Inference Recommender.

  3. Sur la page Tâches Inference Recommender, choisissez Créer une tâche.

  4. Pour Étape 1 : Configuration du modèle, procédez comme suit :

    1. Pour Type de tâche, choisissez Tâche Recommender avancée.

    2. Si vous utilisez un modèle enregistré dans le registre des SageMaker modèles, activez le bouton Choisir un modèle dans le registre des modèles et procédez comme suit :

      1. Dans la liste déroulante des groupes de modèles, choisissez le groupe de modèles dans SageMaker le registre où se trouve votre modèle.

      2. Dans la liste déroulante Version du modèle, choisissez la version souhaitée de votre modèle.

    3. Si vous utilisez un modèle que vous avez créé dans SageMaker, désactivez le bouton Choisir un modèle dans le registre des modèles et procédez comme suit :

      1. Dans le champ Nom du modèle, entrez le nom de votre SageMaker modèle.

    4. Pour IAMle rôle, vous pouvez sélectionner un AWS IAM rôle existant disposant des autorisations nécessaires pour créer une tâche de recommandation d'instance. Si vous n'avez pas de rôle existant, vous pouvez également choisir Créer un nouveau rôle pour ouvrir la fenêtre contextuelle de création de rôle et SageMaker ajouter les autorisations nécessaires au nouveau rôle que vous créez.

    5. Pour Compartiment S3 destiné à l'analyse comparative de la charge utile, entrez le chemin Amazon S3 vers votre archive d'échantillons de charge utile, qui doit contenir des exemples de fichiers de charge utile qu'Inference Recommender utilise pour analyser votre modèle sur différents types d'instances.

    6. Pour le type de contenu de charge utile, entrez les MIME types de vos exemples de données de charge utile.

    7. Pour Modèle de trafic, configurez les phases du test de charge en procédant comme suit :

      1. Pour Nombre initial d'utilisateurs, spécifiez le nombre d'utilisateurs simultanés avec lesquels vous souhaitez commencer (avec un minimum de 1 et un maximum de 3).

      2. Pour Taux d'apparition, spécifiez le nombre d'utilisateurs à faire apparaître en une minute pour la phase (avec un minimum de 0 et un maximum de 3).

      3. Pour Durée (secondes), spécifiez la durée de la phase de trafic en secondes (avec un minimum de 120 et un maximum de 3 600).

    8. (Facultatif) Si vous avez désactivé le bouton Choisir un modèle dans le registre des modèles et que vous avez spécifié un SageMaker modèle, procédez comme suit pour la configuration du conteneur :

      1. Dans la liste déroulante Domaine, sélectionnez le domaine de machine learning du modèle, tel que la vision par ordinateur, le traitement du langage naturel ou le machine learning.

      2. Dans la liste déroulante Framework, sélectionnez le framework de votre conteneur, tel que TensorFlow ouXGBoost.

      3. Pour Version de framework, entrez la version de framework de votre image de conteneur.

      4. Dans la liste déroulante Nom du modèle le plus proche, sélectionnez le modèle préentraîné qui correspond le plus souvent au vôtre.

      5. Dans la liste déroulante Tâche, sélectionnez la tâche de machine learning exécutée par le modèle, telle que la classification d'image ou la régression.

    9. (Facultatif) Pour la compilation de modèles à l'aide de SageMaker Neo, vous pouvez configurer la tâche de recommandation pour un modèle que vous avez compilé à l'aide de SageMaker Neo. Pour Configuration d'entrée de données, entrez la forme de données d'entrée correcte pour votre modèle dans un format similaire à {'input':[1,1024,1024,3]}.

    10. Choisissez Suivant.

  5. Pour Étape 2 : Instances et paramètres d'environnement, procédez comme suit :

    1. Pour Sélectionner des instances à des fins de comparaison, vous pouvez sélectionner jusqu'à 8 types d'instances que vous souhaitez comparer.

    2. (Facultatif) Pour Plages de paramètres d'environnement, vous pouvez spécifier des paramètres d'environnement qui permettent d'optimiser votre modèle. Spécifiez les paramètres sous forme de paires Clé et Valeur.

    3. Choisissez Suivant.

  6. Pour Étape 3 : Paramètres de tâche, procédez comme suit :

    1. (Facultatif) Dans le champ Nom de la tâche, entrez le nom de la tâche de recommandation de votre instance. Lorsque vous créez la tâche, SageMaker ajoute un horodatage à la fin de ce nom.

    2. (Facultatif) Dans le champ Description de la tâche, entrez une brève description de la tâche.

    3. (Facultatif) Dans la liste déroulante des clés de chiffrement, choisissez une AWS KMS clé par son nom ou saisissez-la ARN pour chiffrer vos données.

    4. (Facultatif) Pour Nombre maximal de tests, entrez le nombre de tests que vous souhaitez exécuter pendant la tâche de recommandation.

    5. (Facultatif) Pour Nombre maximal de tests parallèles, entrez le nombre maximal de tests parallèles que vous souhaitez exécuter pendant la tâche de recommandation.

    6. Pour Durée (s) maximale (s) de test, entrez le nombre maximal de secondes pendant lequel vous souhaitez que chaque test s'exécute.

    7. Pour Invocations par minute, entrez le nombre maximal de demandes par minute que le point de terminaison peut atteindre avant d'arrêter la tâche de recommandation. Une fois cette limite atteinte, SageMaker met fin à la tâche.

    8. Pour Seuil de latence du modèle P99 (ms), entrez le percentile de latence du modèle en millisecondes.

    9. Choisissez Suivant.

  7. Pour Étape 4 : Vérification de la tâche, passez en revue vos configurations, puis choisissez Soumettre.

Obtention de vos résultats de test de charge

Vous pouvez collecter des métriques par programmation pour tous les tests de charge une fois que les tests de charge sont effectués avec AWS SDK for Python (Boto3) Studio Classic ou la SageMaker console. AWS CLI

AWS SDK for Python (Boto3)

Collectez des métriques avec le DescribeInferenceRecommendationsJobAPI. Spécifiez le nom de la tâche du test de charge pour le champ JobName :

load_test_response = sagemaker_client.describe_inference_recommendations_job( JobName=load_test_job_name )

Imprimez l'objet de réponse.

load_test_response['Status']

Cela renvoie une JSON réponse similaire à l'exemple suivant. Notez que cet exemple montre les types d'instances recommandés pour l'inférence en temps réel (pour un exemple illustrant les recommandations d'inférence sans serveur, consultez l'exemple suivant celui-ci).

{ 'JobName': 'job-name', 'JobDescription': 'job-description', 'JobType': 'Advanced', 'JobArn': 'arn:aws:sagemaker:region:account-id:inference-recommendations-job/resource-id', 'Status': 'COMPLETED', 'CreationTime': datetime.datetime(2021, 10, 26, 19, 38, 30, 957000, tzinfo=tzlocal()), 'LastModifiedTime': datetime.datetime(2021, 10, 26, 19, 46, 31, 399000, tzinfo=tzlocal()), 'InputConfig': { 'ModelPackageVersionArn': 'arn:aws:sagemaker:region:account-id:model-package/resource-id', 'JobDurationInSeconds': 7200, 'TrafficPattern': { 'TrafficType': 'PHASES' }, 'ResourceLimit': { 'MaxNumberOfTests': 100, 'MaxParallelOfTests': 100 }, 'EndpointConfigurations': [{ 'InstanceType': 'ml.c5d.xlarge' }] }, 'StoppingConditions': { 'MaxInvocations': 1000, 'ModelLatencyThresholds': [{ 'Percentile': 'P95', 'ValueInMilliseconds': 100} ]}, 'InferenceRecommendations': [{ 'Metrics': { 'CostPerHour': 0.6899999976158142, 'CostPerInference': 1.0332434612791985e-05, 'MaximumInvocations': 1113, 'ModelLatency': 100000 }, 'EndpointConfiguration': { 'EndpointName': 'endpoint-name', 'VariantName': 'variant-name', 'InstanceType': 'ml.c5d.xlarge', 'InitialInstanceCount': 3 }, 'ModelConfiguration': { 'Compiled': False, 'EnvironmentParameters': [] } }], 'ResponseMetadata': { 'RequestId': 'request-id', 'HTTPStatusCode': 200, 'HTTPHeaders': { 'x-amzn-requestid': 'x-amzn-requestid', 'content-type': 'content-type', 'content-length': '1199', 'date': 'Tue, 26 Oct 2021 19:57:42 GMT' }, 'RetryAttempts': 0} }

Les premières lignes fournissent des informations sur la tâche de test de charge elle-même. Cela inclut le nom de la tâche, le rôleARN, l'heure de création et de suppression.

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é) utilisés lors de la tâche de recommandation. Vous pouvez utiliser le nom du point de terminaison et de la variante pour la surveillance dans Amazon CloudWatch Events. Pour plus d’informations, consultez Surveillez Amazon SageMaker avec Amazon CloudWatch.

Le dictionnaire EndpointConfiguration imbriqué contient également la recommandation du nombre d'instances (InitialInstanceCount). Il s'agit du nombre d'instances que vous devez provisionner dans le point de terminaison pour répondre aux MaxInvocations spécifiées dans StoppingConditions. Par exemple, si le InstanceType est ml.m5.large et le InitialInstanceCount est2, vous devez configurer 2 ml.m5.large instances pour votre point de terminaison afin qu'il puisse gérer les conditions d'MaxInvocationsarrêt TPS spécifiées.

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) pour votre point de terminaison en temps réel, le nombre maximum de InvokeEndpoint demandes envoyées au point de terminaison et la latence du modèle (ModelLatency), qui est l'intervalle de temps (en microsecondes) 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.

L'exemple suivant montre la partie InferenceRecommendations de la réponse pour une tâche de test de charge configurée pour renvoyer des recommandations d'inférence sans serveur :

"InferenceRecommendations": [ { "EndpointConfiguration": { "EndpointName": "value", "InitialInstanceCount": value, "InstanceType": "value", "VariantName": "value", "ServerlessConfig": { "MaxConcurrency": value, "MemorySizeInMb": value } }, "InvocationEndTime": value, "InvocationStartTime": value, "Metrics": { "CostPerHour": value, "CostPerInference": value, "CpuUtilization": value, "MaxInvocations": value, "MemoryUtilization": value, "ModelLatency": value, "ModelSetupTime": value }, "ModelConfiguration": { "Compiled": "False", "EnvironmentParameters": [], "InferenceSpecificationName": "value" }, "RecommendationId": "value" } ]

Vous pouvez interpréter les recommandations pour l'inférence sans serveur de la même manière que les résultats pour l'inférence en temps réel, à l'exception de ServerlessConfig, qui vous indique les valeurs spécifiées pour MaxConcurrency et MemorySizeInMB lors de la configuration du test de charge. Les recommandations sans serveur mesurent également la métrique ModelSetupTime, qui mesure (en microsecondes) le temps nécessaire au lancement des ressources de calcul sur un point de terminaison sans serveur. Pour plus d'informations sur la configuration des points de terminaison sans serveur, consultez la documentation Inférence sans serveur.

AWS CLI

Collectez des métriques avec le describe-inference-recommendations-jobAPI. Spécifiez le nom de la tâche du test de charge pour l'indicateur job-name :

aws sagemaker describe-inference-recommendations-job --job-name <job-name>

Cela renvoie une réponse similaire à l'exemple suivant. Notez que cet exemple montre les types d'instances recommandés pour l'inférence en temps réel (pour un exemple illustrant les recommandations d'inférence sans serveur, voir l'exemple suivant celui-ci).

{ 'JobName': 'job-name', 'JobDescription': 'job-description', 'JobType': 'Advanced', 'JobArn': 'arn:aws:sagemaker:region:account-id:inference-recommendations-job/resource-id', 'Status': 'COMPLETED', 'CreationTime': datetime.datetime(2021, 10, 26, 19, 38, 30, 957000, tzinfo=tzlocal()), 'LastModifiedTime': datetime.datetime(2021, 10, 26, 19, 46, 31, 399000, tzinfo=tzlocal()), 'InputConfig': { 'ModelPackageVersionArn': 'arn:aws:sagemaker:region:account-id:model-package/resource-id', 'JobDurationInSeconds': 7200, 'TrafficPattern': { 'TrafficType': 'PHASES' }, 'ResourceLimit': { 'MaxNumberOfTests': 100, 'MaxParallelOfTests': 100 }, 'EndpointConfigurations': [{ 'InstanceType': 'ml.c5d.xlarge' }] }, 'StoppingConditions': { 'MaxInvocations': 1000, 'ModelLatencyThresholds': [{ 'Percentile': 'P95', 'ValueInMilliseconds': 100 }] }, 'InferenceRecommendations': [{ 'Metrics': { 'CostPerHour': 0.6899999976158142, 'CostPerInference': 1.0332434612791985e-05, 'MaximumInvocations': 1113, 'ModelLatency': 100000 }, 'EndpointConfiguration': { 'EndpointName': 'endpoint-name', 'VariantName': 'variant-name', 'InstanceType': 'ml.c5d.xlarge', 'InitialInstanceCount': 3 }, 'ModelConfiguration': { 'Compiled': False, 'EnvironmentParameters': [] } }], 'ResponseMetadata': { 'RequestId': 'request-id', 'HTTPStatusCode': 200, 'HTTPHeaders': { 'x-amzn-requestid': 'x-amzn-requestid', 'content-type': 'content-type', 'content-length': '1199', 'date': 'Tue, 26 Oct 2021 19:57:42 GMT' }, 'RetryAttempts': 0 } }

Les premières lignes fournissent des informations sur la tâche de test de charge elle-même. Cela inclut le nom de la tâche, le rôleARN, l'heure de création et de suppression.

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é) utilisés lors de la tâche de recommandation. Vous pouvez utiliser le nom du point de terminaison et de la variante pour la surveillance dans Amazon CloudWatch Events. Pour plus d’informations, consultez Surveillez Amazon SageMaker avec Amazon CloudWatch.

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) pour votre point de terminaison en temps réel, le nombre maximum de InvokeEndpoint demandes envoyées au point de terminaison et la latence du modèle (ModelLatency), qui est l'intervalle de temps (en microsecondes) 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.

L'exemple suivant montre la partie InferenceRecommendations de la réponse pour une tâche de test de charge configurée pour renvoyer des recommandations d'inférence sans serveur :

"InferenceRecommendations": [ { "EndpointConfiguration": { "EndpointName": "value", "InitialInstanceCount": value, "InstanceType": "value", "VariantName": "value", "ServerlessConfig": { "MaxConcurrency": value, "MemorySizeInMb": value } }, "InvocationEndTime": value, "InvocationStartTime": value, "Metrics": { "CostPerHour": value, "CostPerInference": value, "CpuUtilization": value, "MaxInvocations": value, "MemoryUtilization": value, "ModelLatency": value, "ModelSetupTime": value }, "ModelConfiguration": { "Compiled": "False", "EnvironmentParameters": [], "InferenceSpecificationName": "value" }, "RecommendationId": "value" } ]

Vous pouvez interpréter les recommandations pour l'inférence sans serveur de la même manière que les résultats pour l'inférence en temps réel, à l'exception de ServerlessConfig, qui vous indique les valeurs spécifiées pour MaxConcurrency et MemorySizeInMB lors de la configuration du test de charge. Les recommandations sans serveur mesurent également la métrique ModelSetupTime, qui mesure (en microsecondes) le temps nécessaire au lancement des ressources informatiques sur un point de terminaison sans serveur. Pour plus d'informations sur la configuration des points de terminaison sans serveur, consultez la documentation Inférence sans serveur.

Amazon SageMaker Studio Classic

Les recommandations apparaissent dans un nouvel onglet intitulé Recommandations d'inférence dans Studio Classic. L'affichage des résultats peut prendre jusqu'à 2 heures. Cet onglet contient les colonnes Results (Résultats) et Details (Détails).

La colonne Details (Détails) fournit des informations sur la tâche de test de charge, telles que le nom donné à la tâche de test de charge, la date de création de la tâche (Creation time [Heure de création]), etc. Elle fournit également des informations sur les Settings (Paramètres), telles que le nombre maximal d'appels qui se sont produits par minute et des informations sur les Amazon Resource Names utilisés.

La colonne Résultats fournit des fenêtres d'objectifs et de SageMakerrecommandations de déploiement dans lesquelles vous pouvez ajuster l'ordre dans lequel les résultats sont affichés en fonction de l'importance du déploiement. Il existe trois menus déroulants que vous pouvez utiliser pour fournir le niveau d'importance du Cost (Coût), de la Latency (Latence) et du Throughput (Débit) pour votre cas d'utilisation. Pour chaque objectif (coût, latence et débit), vous pouvez définir le niveau d'importance : Lowest Importance (Importance la plus faible), Low Importance (Importance faible), Moderate importance (Importance modérée), High importance (Importance élevée) ou Highest importance (Importance la plus élevée).

En fonction de l'importance que vous avez sélectionnée pour chaque objectif, Inference Recommender affiche sa principale recommandation dans le champ de SageMakerrecommandation situé à droite du panneau, ainsi que le coût horaire estimé et la demande d'inférence. Il fournit également des informations sur la latence attendue du modèle, le nombre maximal d'appels et le nombre d'instances.

En plus de la recommandation principale affichée, vous pouvez également voir les mêmes informations affichées pour toutes les instances testées par l'outil de recommandation d'inférence dans la section All runs (Toutes les exécutions).

SageMaker console

Vous pouvez consulter les résultats de votre tâche de test de charge personnalisée dans la SageMaker console en procédant comme suit :

  1. Accédez à la SageMaker console à l'adresse https://console.aws.amazon.com/sagemaker/.

  2. Dans le panneau de navigation de gauche, choisissez Inférence, puis Inference Recommender.

  3. Sur la page Tâches Inference Recommender, choisissez le nom de votre tâche de recommandation d'inférence.

Sur la page de détails de votre tâche, vous pouvez consulter les recommandations d'inférence, qui sont les types d'instances SageMaker recommandés pour votre modèle, comme indiqué dans la capture d'écran suivante.

Capture d'écran de la liste des recommandations d'inférence sur la page des détails de la tâche dans la SageMaker console.

Dans cette section, vous pouvez comparer les types d'instances en fonction de différents facteurs tels que la Latence du modèle, le Coût horaire, le Coût par inférence et les Invocations par minute.

Sur cette page, vous pouvez également afficher les configurations que vous avez spécifiées pour votre tâche. Dans la section Monitor, vous pouvez consulter les CloudWatch métriques Amazon enregistrées pour chaque type d'instance. Pour en savoir plus sur l'interprétation de ces métriques, consultez Interprétation des résultats.

Arrêt de votre test de charge

Vous souhaiterez peut-être arrêter une tâche en cours d'exécution si vous l'avez démarrée par erreur ou si vous n'avez plus besoin de l'exécuter. Arrêtez vos tâches de test de charge par programmation avec ou via Studio Classic ou la SageMaker console. StopInferenceRecommendationsJob API

AWS SDK for Python (Boto3)

Spécifiez le nom de la tâche du test de charge pour le champ JobName :

sagemaker_client.stop_inference_recommendations_job( JobName='<INSERT>' )
AWS CLI

Spécifiez le nom de la tâche du test de charge pour l'indicateur job-name :

aws sagemaker stop-inference-recommendations-job --job-name <job-name>
Amazon SageMaker Studio Classic

Fermez l'onglet dans lequel vous avez lancé votre tâche de chargement personnalisé pour arrêter votre test de charge d'Inference Recommender.

SageMaker console

Pour arrêter votre tâche de test de charge via la SageMaker console, procédez comme suit :

  1. Accédez à la SageMaker console à l'adresse https://console.aws.amazon.com/sagemaker/.

  2. Dans le panneau de navigation de gauche, choisissez Inférence, puis Inference Recommender.

  3. Sur la page Tâches Inference Recommender, sélectionnez votre tâche de test de charge.

  4. Choisissez Arrêter la tâche.

  5. Dans la boîte de dialogue qui s'affiche, choisissez Confirmer.

Après avoir arrêté votre tâche, le Statut de la tâche devrait passer à Arrêt en cours.