Partager via


Configurer un test de charge pour les points de terminaison de recherche vectorielle

Cette page fournit un exemple de notebook pour les tests de charge et couvre les exigences de configuration, l’authentification, la configuration du cluster et les instructions pas à pas pour exécuter des tests de charge afin d’optimiser les performances du point de terminaison de recherche vectorielle.

Pour plus d’informations sur le test de charge et les concepts connexes, consultez Tests de charge pour les points de terminaison de service.

Exigences

Téléchargez et importez une copie des fichiers suivants et des exemples de notebooks dans votre espace de travail Azure Databricks :

  • input.json. Ce fichier spécifie la charge utile envoyée par toutes les connexions simultanées à votre point de terminaison. Si vous testez un point de terminaison sensible à la taille de la charge utile, vérifiez que la charge utile d’entrée reflète la façon dont vous attendez que le point de terminaison soit utilisé. Consultez Tester la charge utile.
  • fast_vs_load_test_async_load.py. Ce script est utilisé par l’exemple de notebook pour valider votre jeton d’authentification et lire le contenu du input.json fichier.

Bloc-notes de test de performance de charge Locust

Obtenir un ordinateur portable

Pour des performances optimales, sélectionnez un grand nombre de cœurs et une mémoire élevée pour les workers sur le cluster que vous utilisez pour exécuter le notebook.

Criquet

Locust est une infrastructure open source pour les tests de charge couramment utilisés pour évaluer les points de terminaison de niveau production. L’infrastructure Locust vous permet de modifier différents paramètres, tels que le nombre de connexions clientes et la vitesse de génération des connexions clientes, tout en mesurant les performances de votre point de terminaison tout au long du test. Le locust est utilisé pour tous les exemples de code, car il normalise et automatise l’approche.

Locust s’appuie sur les ressources du processeur pour exécuter ses tests. Selon la charge utile, cela permet de réaliser environ 4 000 requêtes par seconde par cœur de processeur. Dans l’exemple de notebook, l’indicateur --processes -1 est défini pour autoriser Locust à détecter automatiquement le nombre de cœurs de processeur sur votre machine et à les utiliser entièrement.

Si le processeur constitue un goulot d'étranglement pour Locust, un message de sortie apparaît.

Configurer le principal de service

Effectuez cette opération en dehors de l'exemple de bloc-notes.

Pour interagir avec le point de terminaison optimisé pour l’itinéraire, le test Locust doit être en mesure de générer des jetons OAuth avec des autorisations pour interroger le point de terminaison. Procédez comme suit pour configurer l’authentification :

  1. Créez un principal de service Databricks.
  2. Accédez à la page web du point de terminaison de recherche vectorielle. Cliquez sur Autorisations et donnez au principal de service les autorisations « Peut interroger ».
  3. Créez une étendue de secret databricks nommée avec deux clés :
    1. Identifiant de votre principal de service Databricks. Par exemple : service_principal_client_id .
    2. Clé secrète client pour le principal du service Databricks. Par exemple, service_principal_client_secret.
  4. Placez l’ID client et le secret client de votre principal de service dans un secret Databricks.

Configurer le bloc-notes

Les sections suivantes décrivent comment configurer votre notebook d'exemple et les fichiers de prise en charge que vous avez téléchargés.

Configurer des variables

Dans votre copie de l’exemple de notebook, configurez les paramètres suivants :

Paramètre Descriptions
endpoint_name Nom de votre point de terminaison de recherche vectorielle.
locust_run_time Durée d’exécution de chaque test de charge individuel. De nombreux tests de charge sont exécutés, de sorte qu’une durée de 5 à 10 minutes est une bonne valeur par défaut.
csv_output_prefix Les tests de charge locust génèrent des fichiers CSV d’informations et de métriques. Cette chaîne définit un préfixe qui est ajouté aux fichiers CSV.
secret_scope_name Nom de votre périmètre de secret Databricks qui contient les informations du principal de service.

Spécifier une charge utile

Indiquez votre charge utile dans le fichier input.json, à côté du notebook d'exemple.

Pour vérifier la validité des résultats des tests de charge, il est important de prendre en compte la charge utile qui doit être envoyée par les clients Locust. Choisissez une charge utile qui représente avec précision le type de charge utile que vous envisagez d’envoyer en production. Par exemple, si votre modèle est un modèle de détection des fraudes qui évalue les transactions de carte de crédit en temps réel, par exemple une transaction par demande, vérifiez que votre charge utile représente une seule transaction classique.

Tester la charge utile

Testez votre charge utile en copiant et en collant les données complètes input.json dans la fenêtre Requête sur votre point de terminaison de recherche vectorielle et en veillant à ce que votre modèle réponde avec les sorties souhaitées.

Pour ouvrir la zone de requête de votre point de terminaison :

  1. Dans la barre latérale gauche de votre espace de travail Azure Databricks, sélectionnez Service.
  2. Sélectionnez le point de terminaison à utiliser pour les tests de charge.
  3. Dans le coin supérieur droit, dans le menu déroulant Utiliser , sélectionnez Requête.

La concurrence du point de terminaison requise pour atteindre un certain centile de latence croît de manière linéaire avec le nombre de connexions simultanées. Cela signifie que vous pouvez tester sur un petit point de terminaison et calculer la taille de point de terminaison dont vous avez besoin avant d’effectuer un test final.

Exécuter le test de charge

Une fois votre point de terminaison, vos blocs-notes et votre charge utile configurés, vous pouvez commencer à exécuter le processus du notebook.
Le notebook exécute un test de charge de 30 secondes sur votre point de terminaison pour vérifier que le point de terminaison est en ligne et répond.

Dans l'exemple de carnet de notes, vous pouvez exécuter une série de tests de charge à l'aide de différents niveaux de concurrence côté client. Après avoir effectué la série de tests de charge, les résultats du notebook affichent le contenu des échecs de requête ou des exceptions, ainsi qu'un tracé des centiles de latence par rapport à la concurrence des clients.

Le notebook affiche une table des résultats, et vous devez sélectionner la ligne qui répond le mieux à vos exigences de latence et entrer le RPS souhaité de l’application. En fonction des informations que vous fournissez, le notebook recommande de dimensionner votre point de terminaison pour atteindre vos objectifs de rpS et de latence.

Après avoir mis à jour la configuration de votre point de terminaison pour qu’elle corresponde aux recommandations du notebook, vous pouvez exécuter le test de charge final du notebook pour vérifier que le point de terminaison répond à la fois à la latence et aux exigences rpS.