

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é
<a name="inference-recommender-load-test"></a>

Les tests de charge Amazon SageMaker Inference Recommender permettent d'effectuer des tests de performance approfondis en fonction des exigences de production en matière de latence et de débit, des modèles de trafic personnalisés et des points de terminaison sans serveur ou des 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 pour Python (Boto3) et AWS CLI, ou de manière interactive à l'aide d'Amazon SageMaker Studio Classic ou de la SageMaker console AI.

## Création d’une tâche de test de charge
<a name="load-test-create"></a>

Créez un test de charge par programmation à l'aide de AWS SDK pour Python (Boto3), avec ou de manière interactive à l' AWS CLI aide de Studio Classic ou de la SageMaker console AI. Comme pour les recommandations d'inférence d'Inference Recommender, spécifiez un nom de tâche pour votre test de charge, un ARN de rôle AWS IAM, une configuration d'entrée et l'ARN de votre package de modèles à 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 pour Python (Boto3) ]

Utilisez l’API `CreateInferenceRecommendationsJob` pour créer un test de charge d’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.
+ L’Amazon Resource Name (ARN) d’un rôle IAM 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](https://docs.aws.amazon.com/sagemaker/latest/dg/serverless-endpoints.html).
+ 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) Pour `FlatInvocations`, vous pouvez spécifier si vous souhaitez poursuivre le test de charge lorsque le taux de TPS (invocations par minute) s’aplatit. Un taux de TPS aplati signifie généralement que le point de terminaison 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 référence des SageMaker API Amazon](https://docs.aws.amazon.com/sagemaker/latest/APIReference/Welcome.html) pour obtenir la liste complète des arguments facultatifs et obligatoires auxquels vous pouvez passer`CreateInferenceRecommendationsJob`.

------
#### [ AWS CLI ]

Utilisez l’API `create-inference-recommendations-job` pour créer un test de charge d’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.
+ L’Amazon Resource Name (ARN) d’un rôle IAM 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) Pour `FlatInvocations`, vous pouvez spécifier si vous souhaitez poursuivre le test de charge lorsque le taux de TPS (invocations par minute) s’aplatit. Un taux de TPS aplati signifie généralement que le point de terminaison 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 (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/studio/icons/house.png)).

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

1. Sélectionnez **Inference Recommender** dans la liste déroulante.

1. Choisissez **Créer une tâche Inference Recommender**. Un nouvel onglet intitulé **Créer une tâche Inference Recommender** s’ouvre.

1. Sélectionnez le nom de votre groupe de modèles dans le champ **Groupe de modèles**. La liste comprend tous les groupes de modèles enregistrés dans le registre de modèles de votre compte, y compris les modèles enregistrés en dehors de Studio Classic.

1. Sélectionnez une version de modèle dans le champ déroulant **Version de modèle**.

1. Sélectionnez **Continuer**.

1. Fournissez un nom pour la tâche dans le champ **Nom**.

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

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

1. Sélectionnez **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 **Nombre d’appels max. par minute**.

   1. Spécifiez le seuil de latence du modèle en microsecondes dans le champ **Seuil de latence du modèle**. Le champ **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.

1. Sélectionnez **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 **Nombre initial d’utilisateurs**.

   1. Fournissez un nombre entier pour le champ **Taux de génération**. Le taux d’apparition définit le nombre d’utilisateurs créés par seconde.

   1. Définissez la durée de la phase en secondes en spécifiant un nombre entier dans le champ **Durée**.

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

1. Sélectionnez le paramètre **Supplémentaire** pour afficher le champ **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.

1. Sélectionnez **Continuer**.

1. Sélectionnez **Instances sélectionnées**.

1. Dans le champ **Instances pour analyse comparative**, sélectionnez **Ajouter des instances à tester**. Sélectionnez jusqu’à 10 instances pour Inference Recommender à utiliser pour les tests de charge.

1. Sélectionnez **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 **Nombre max. de tests**. Notez que chaque configuration de point de terminaison entraîne un nouveau test de charge.

   1. Indiquez un nombre entier pour le champ de test **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.

1. Sélectionnez **Soumettre**.

   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 AI console ]

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

1. Accédez à la console SageMaker AI à l'adresse [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

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

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

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

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

   1. Si vous utilisez un modèle enregistré dans le registre des modèles d' SageMaker IA, 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 le registre des modèles SageMaker AI où se trouve votre modèle.

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

   1. Si vous utilisez un modèle que vous avez créé dans SageMaker AI, 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 modèle d' SageMaker IA.

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

   1. Pour **Compartiment S3 destiné à l’analyse comparative des données utiles**, entrez le chemin Amazon S3 vers votre archive d’exemples de données utiles, qui doit contenir des exemples de fichiers de données utiles qu’Inference Recommender utilise pour analyser votre modèle sur différents types d’instances.

   1. Pour **Type de contenu de la charge utile**, entrez les types MIME pour votre exemple de données de charge utile.

   1. 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).

      1. 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).

      1. 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).

   1. (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 modèle d' SageMaker IA, 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.

      1. **Dans la liste déroulante Framework**, sélectionnez le framework de votre conteneur, tel que TensorFlow ou XGBoost.

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

      1. 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.

      1. 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’images ou la régression.

   1. (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]}`.

   1. Choisissez **Suivant**.

1. 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.

   1. (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**.

   1. Choisissez **Suivant**.

1. 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 AI ajoute un horodatage à la fin de ce nom.

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

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

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

   1. (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.

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

   1. 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, l' SageMaker IA met fin au travail.

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

   1. Choisissez **Suivant**.

1. 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
<a name="load-test-describe"></a>

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

------
#### [ AWS SDK pour Python (Boto3) ]

Collectez des métriques avec l’API `DescribeInferenceRecommendationsJob`. 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 réponse JSON semblable à 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. Celles-ci incluent le nom de la tâche, l’ARN du rôle, 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 [Métriques Amazon SageMaker AI sur Amazon CloudWatch](monitoring-cloudwatch.md).

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 `InstanceType` est `ml.m5.large` et `InitialInstanceCount` est `2`, vous devez provisionner 2 instances `ml.m5.large` pour votre point de terminaison afin qu’il puisse gérer le TPS spécifié dans la condition d’arrêt `MaxInvocations`.

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) nécessaire à votre modèle pour répondre à l'IA. 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](https://docs.aws.amazon.com/sagemaker/latest/dg/serverless-endpoints.html).

------
#### [ AWS CLI ]

Collectez des métriques avec l'API `describe-inference-recommendations-job`. 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 semblable à 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. Celles-ci incluent le nom de la tâche, l’ARN du rôle, 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 [Métriques Amazon SageMaker AI sur Amazon CloudWatch](monitoring-cloudwatch.md).

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) nécessaire à votre modèle pour répondre à l'IA. 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](https://docs.aws.amazon.com/sagemaker/latest/dg/serverless-endpoints.html).

------
#### [ Amazon SageMaker Studio Classic ]

Les recommandations sont renseignées dans un nouvel onglet appelé **Recommandations d’inférence** dans Studio Classic. L’affichage des résultats peut prendre jusqu’à 2 heures. Cet onglet contient les colonnes **Résultats** et **Détails**.

La colonne **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 (**Heure de création**), etc. Elle fournit également des informations sur les **Paramètres**, telles que le nombre maximal d’invocations 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 de déploiement** et de **recommandations d'SageMaker IA** 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 **Coût**, de la **Latence** et du **Débit** pour votre cas d’utilisation. Pour chaque objectif (coût, latence et débit), vous pouvez définir le niveau d’importance : **Importance la plus faible**, **Importance faible**, **Importance modérée**, **Importance élevée** ou **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’invocations 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 **Toutes les exécutions**.

------
#### [ SageMaker AI console ]

Vous pouvez consulter les résultats de vos tâches de test de charge personnalisées dans la console SageMaker AI en procédant comme suit :

1. Accédez à la console SageMaker AI à l'adresse [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

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

1. 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 recommandés par l' SageMaker IA 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 console SageMaker AI.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/inf-rec-instant-recs.png)


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](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-recommender-interpret-results.html).

------