Configurez un test de charge pour les endpoints de diffusion de modèles personnalisés
Cet article fournit un exemple de Notebook de test de charge et couvre les exigences de configuration, l’authentification, la configuration des clusters et des instructions étape par étape pour exécuter des tests de charge afin d’optimiser les performances de l’Endpoint.
L'information contenue dans cet article et les exemples de fichiers vous permet de démarrer la configuration d'un test de charge pour votre Endpoint Model Serving sur Databricks.
Pour plus d'informations sur les tests de charge et les concepts associés, consultez Tests de charge pour les serving endpoints.
Exigences
Download et importez une copie des fichiers suivants et de l'exemple de notebook dans votre workspace Databricks :
-
- Ce fichier spécifie la charge utile envoyée par toutes les connexions concurrentes à votre endpoint. Si vous testez un endpoint sensible à la taille de la charge utile, assurez-vous que la charge utile d'entrée est représentative de la façon dont vous vous attendez à ce que le endpoint soit utilisé. Consultez Tester la charge utile pour plus de conseils.
-
- Ce script est utilisé par le notebook de test de charge Locust pour valider le jeton d'authentification et lire le contenu du fichier input.json.
Notebook de test de charge Locust
Les fichiers ci-dessus et le Notebook d'exemple ont été testés à l'aide de la configuration de cluster suivante :
- Cluster à nœud unique
- Runtime ML LTS 15.4
- Choisissez une instance optimisée pour le CPU. Databricks recommande une instance avec au moins 32 cœurs. Les instances avec plus de cœurs peuvent générer un nombre plus élevé de query ou de demandes par seconde (RPS).
Locuste
Locust est un framework open source pour les tests de charge, couramment utilisé pour évaluer les Endpoints de qualité production. Le framework Locust vous permet de modifier divers paramètres, tels que le nombre de connexions client et la vitesse à laquelle les connexions client sont générées, tout en mesurant les performances de votre Endpoint tout au long du test. Locust est utilisé pour l'ensemble du code d'exemple, car il standardise et automatise l'approche.
Locust s'appuie sur les Ressources du processeur pour exécuter ses tests. Selon la charge utile, cela facilite environ 4 000 requêtes par seconde et par cœur de CPU. Dans le Notebook Locust load test , l'indicateur --processes -1 a été défini pour permettre à Locust de détecter automatiquement le nombre de cœurs de processeur sur votre Driver et de les utiliser pleinement.
Gardez un œil sur le résultat de Locust. Si Locust est bloqué par le CPU, un message de sortie apparaît.
Configurez votre environnement
Les indications de cette section sont censées être effectuées en dehors du notebook Locust load test .
Configuration de l'Endpoint
Le Notebook Locust load test suppose que votre modèle s'exécute sur un Endpoint de déploiement de modèle CPU. Les calculs dans ce Notebook supposent que vous avez configuré les éléments suivants lors de la création de votre endpoint de service à l’aide de l’interface utilisateur de service. Consultez Créer des Endpoint de service de modèle personnalisés.
- start avec un Endpoint CPU « Small » (concurrence de l'Endpoint de 4). Lorsque vous créez votre Endpoint, assurez-vous qu'il a une concurrence minimale et maximale de 4.
- L'optimisation des itinéraires est activée
- Dimensionner à zéro est désactivé
Configuration du Service Principal
Afin d'interagir avec l'Endpoint optimisé pour l'itinéraire, le test Locust doit être capable de générer des jetons OAuth avec les autorisations de query l'Endpoint. Suivez ces étapes pour préparer l'authentification :
-
Accédez à la page web de l'endpoint Model Serving, cliquez sur « Permissions » et accordez au Service Principal les autorisations de niveau « Peut query ».
-
Créez un Secret Scope Databricks nommé avec deux clés :
- L'ID de votre Service Principal Databricks. Par exemple :
service_principal_client_id. - Le secret du client pour le Service Principal Databricks. Par exemple :
service_principal_client_secret.
- L'ID de votre Service Principal Databricks. Par exemple :
-
Mettez l'ID client et le Secret client de votre Service Principal dans un secret Databricks.
Configuration du Notebook
Les sections suivantes décrivent comment configurer votre notebook Locust load test et les fichiers d’aide que vous avez téléchargés dans les exigences.
Configurez les variables
Dans votre copie du **Notebook** **Locust load test**, configurez les **parameter** suivants :
parameter | Descriptions |
|---|---|
| Le nom de votre Endpoint Databricks Model Serving. |
| Combien de temps pour exécuter chaque test de charge individuel. De nombreux tests de charge sont exécutés, donc une durée de 5 à 10 minutes est un bon default. |
| Les tests de charge Locust génèrent des fichiers CSV d'information et de métriques. Cette chaîne définit un préfixe qui est ajouté aux fichiers CSV. |
| Nom de votre Secret Scope Databricks qui contient les informations du Service Principal. |
Spécifier une charge utile
Spécifiez votre charge utile dans le fichier input.json à côté des notebooks de test de charge Locust .
Afin de garantir la validité des résultats des tests de charge, il est important de prendre en compte la charge utile que les clients Locust devront envoyer. Choisissez une charge utile qui représente fidèlement le type de charge utile que vous prévoyez d’envoyer en production. Par exemple, si votre modèle est un modèle de détection de fraudes sur les transactions par carte de crédit, qui sera évalué en temps réel, comme une transaction par requête, assurez-vous que votre charge utile représente une seule transaction type.
Tester la charge utile
Testez votre charge utile en copiant et collant l'intégralité des données input.json dans la fenêtre Query de votre Endpoint Databricks Model Serving et en vous assurant que votre modèle répond avec les sorties souhaitées.
Pour ouvrir la boîte Query pour votre endpoint :
- Accédez à l'interface utilisateur Serving dans votre Databricks Workspace.
- Sélectionnez l'endpoint que vous souhaitez utiliser pour les tests de charge.
- Dans le coin supérieur droit, sélectionnez le menu déroulant à côté du bouton Use .
- Select query .
La concurrence de l'Endpoint Model Serving dont vous avez besoin pour atteindre un certain percentile de latence monte en charge linéairement avec le nombre de connexions simultanées. Ainsi, vous pouvez tester sur un petit endpoint et calculer la taille d'endpoint dont vous aurez besoin au final avant d'effectuer un test final.
Exécuter le test de charge
Une fois votre endpoint, vos notebooks et votre charge utile configurés, vous pouvez commencer à parcourir l'exécution du notebook.
Le notebook exécute un test de charge très court de 30 secondes sur votre endpoint pour s'assurer que l'endpoint est en ligne et répond.
Vous pouvez exécuter une série de tests de charge avec différentes quantités de concurrence côté client dans le Notebook de **tests de charge Locust**. Après avoir terminé la série de tests de charge, le Notebook contient des cellules qui affichent le contenu de toutes les défaillances ou exceptions de requêtes, et créent un tracé des percentiles de latence en fonction de la concurrence côté client.
Un tableau de résultats vous est présenté et vous devez faire une sélection. Sélectionnez la ligne qui répond le mieux à vos exigences en matière de latence, et saisissez le RPS souhaité pour les applications. Le notebook prend ces informations fournies par l'utilisateur et répond avec une recommandation sur la façon de dimensionner votre Endpoint pour atteindre vos objectifs de RPS et de latence.
Après avoir mis à jour votre configuration d'Endpoint Model Serving pour qu'elle corresponde aux recommandations du Notebook, vous pouvez exécuter le test de charge final du Notebook pour vous assurer que l'Endpoint respecte les exigences de latence et de RPS.