Dans cet article, vous apprendrez à gérer l’utilisation des ressources dans un déploiement en configurant la mise à l’échelle automatique en fonction de métriques et de planifications. Le processus de mise à l'échelle automatique vous permet d'exécuter automatiquement la quantité appropriée de ressources pour gérer la charge de votre application. Les points de terminaison en ligne dans Azure Machine Learning prennent en charge la mise à l’échelle automatique via l’intégration avec la fonctionnalité de mise à l’échelle automatique dans Azure Monitor.
La mise à l’échelle automatique Azure Monitor vous permet de définir des règles qui déclenchent une ou plusieurs actions de mise à l’échelle automatique lorsque les conditions des règles sont remplies. Vous pouvez configurer une mise à l'échelle basée sur des métriques (comme une utilisation du processeur (CPU) supérieure à 70 %), une mise à l'échelle basée sur un calendrier (comme des règles de mise à l'échelle pour les heures de pointe), ou une combinaison des deux. Pour plus d’informations, consultez Vue d’ensemble de la mise à l’échelle automatique dans Microsoft Azure.
Vous pouvez actuellement gérer la mise à l'échelle automatique en utilisant Azure CLI, les API REST, Azure Resource Manager, le kit de développement logiciel (SDK) Python ou le Portail Microsoft Azure basé sur le navigateur.
Pour utiliser la mise à l’échelle automatique, le rôle microsoft.insights/autoscalesettings/write doit être attribué à l’identité qui gère la mise à l’échelle automatique. Vous pouvez utiliser n’importe quel rôle intégré ou personnalisé qui autorise cette action. Pour obtenir des conseils généraux sur la gestion des rôles pour Azure Machine Learning, consultez Gérer les utilisateurs et les rôles. Pour plus d’informations sur les paramètres de mise à l’échelle automatique d’Azure Monitor, consultez Paramètres de mise à l’échelle automatique Microsoft Insights.
Pour utiliser le SDK Python pour gérer le service Azure Monitor, installez le package azure-mgmt-monitor avec la commande suivante :
pip install azure-mgmt-monitor
Définir le profil de mise à l'échelle automatique
Pour activer la mise à l'échelle automatique pour un point de terminaison en ligne, vous devez d'abord définir un profil de mise à l'échelle automatique. Le profil spécifie la capacité par défaut, minimale et maximale du groupe d'échelle. L'exemple suivant montre comment définir le nombre d'instances de machine virtuelle (VM) pour la capacité d'échelle par défaut, minimale et maximale.
Si vous n’avez pas encore défini les paramètres par défaut pour l’interface CLI Azure, enregistrez vos paramètres par défaut. Pour éviter de transmettre plusieurs fois les valeurs de votre abonnement, de votre espace de travail et de votre groupe de ressources, exécutez le code suivant :
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
Définissez les noms du point de terminaison et du déploiement :
# set your existing endpoint name
ENDPOINT_NAME=your-endpoint-name
DEPLOYMENT_NAME=blue
Obtenez l’ID Azure Resource Manager du déploiement et du point de terminaison :
# ARM id of the deployment
DEPLOYMENT_RESOURCE_ID=$(az ml online-deployment show -e $ENDPOINT_NAME -n $DEPLOYMENT_NAME -o tsv --query "id")
# ARM id of the deployment. todo: change to --query "id"
ENDPOINT_RESOURCE_ID=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query "properties.\"azureml.onlineendpointid\"")
# set a unique name for autoscale settings for this deployment. The below will append a random number to make the name unique.
AUTOSCALE_SETTINGS_NAME=autoscale-$ENDPOINT_NAME-$DEPLOYMENT_NAME-`echo $RANDOM`
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.mgmt.monitor import MonitorManagementClient
from azure.mgmt.monitor.models import AutoscaleProfile, ScaleRule, MetricTrigger, ScaleAction, Recurrence, RecurrentSchedule
import random
import datetime
Définissez des variables pour l’espace de travail, le point de terminaison et le déploiement :
# Set a unique name for autoscale settings for this deployment. The following code appends a random number to create a unique name.
autoscale_settings_name = f"autoscale-{endpoint_name}-{deployment_name}-{random.randint(0,1000)}"
mon_client.autoscale_settings.create_or_update(
resource_group,
autoscale_settings_name,
parameters = {
"location" : endpoint.location,
"target_resource_uri" : deployment.id,
"profiles" : [
AutoscaleProfile(
name="my-scale-settings",
capacity={
"minimum" : 2,
"maximum" : 5,
"default" : 2
},
rules = []
)
]
}
)
Dans Azure Machine Learning studio, accédez à votre espace de travail et sélectionnez Points de terminaison dans le menu de gauche.
Dans la liste des points de terminaison disponibles, sélectionnez le point de terminaison à configurer :
Dans l’onglet Détails du point de terminaison sélectionné, sélectionnez Configurer la mise à l’échelle automatique :
Pour l’option Choisir comment mettre à l’échelle vos ressources, sélectionnez Mise à l’échelle automatique personnalisée pour commencer la configuration.
Pour l'option Condition d'échelle par défaut, configurez les valeurs suivantes :
Mode de mise à l'échelle : Sélectionnez Échelle basée sur une métrique.
Limites d'instance>Minimum : Définissez la valeur sur 2.
Limites d'instance>Maximum : Définissez la valeur sur 5.
Limites d'instance>Par défaut : Définissez la valeur sur 2.
Laissez le volet de configuration ouvert. Dans la section suivante, vous configurez les paramètres des Règles.
Créer une règle de mise à l'échelle basée sur les mesures de déploiement
Une règle de mise à l’échelle courante consiste à augmenter le nombre d’instances de machine virtuelle lorsque la charge CPU moyenne est élevée. L'exemple suivant montre comment allouer deux nœuds supplémentaires (jusqu'au maximum) si la charge moyenne du processeur (CPU) est supérieure à 70 % pendant 5 minutes :
az monitor autoscale rule create \
--autoscale-name $AUTOSCALE_SETTINGS_NAME \
--condition "CpuUtilizationPercentage > 70 avg 5m" \
--scale out 2
La règle fait partie du profil my-scale-settings, où autoscale-name correspond la partie name du profil. La valeur de l'argument de la règle condition indique que la règle se déclenche lorsque « La consommation moyenne du CPU parmi les instances de VM dépasse 70 % pendant 5 minutes. » Lorsque la condition est satisfaite, deux instances de VM supplémentaires sont allouées.
Remarque
Pour plus d'informations, consultez la référence de syntaxe de l'interface de ligne de commande Azure (CLI) pour az monitor autoscale.
Cette règle fait référence à la moyenne des 5 dernières minutes de la valeur CPUUtilizationpercentage des arguments metric_name, time_window, et time_aggregation. Lorsque la valeur de la métrique est supérieure threshold à 70, le déploiement alloue deux instances de machine virtuelle supplémentaires.
Mettez à jour le profil my-scale-settings pour inclure cette règle :
Les étapes suivantes continuent avec la configuration de la mise à l’échelle automatique.
Pour l’option Règles, sélectionnez le lien Ajouter une règle. La page de règle mise à l'échelle s’ouvre.
Sur la page Règle de la mise à l'échelle, configurez les valeurs suivantes :
Nom de la métrique : Sélectionnez Pourcentage d'utilisation du processeur (CPU).
Opérateur : Définir sur Supérieur à.
Seuil métrique : Définissez la valeur sur 70.
Durée (minutes) : Définissez la valeur sur 5.
Statistique de grain de temps : Sélectionnez Moyenne.
Opération : Sélectionnez Augmenter le nombre de.
Nombre d'instances : Définissez la valeur sur 2.
Sélectionnez Ajouter pour créer la règle :
Laissez le volet de configuration ouvert. Dans la section suivante, vous ajustez les paramètres des Règles.
Créer une règle de réduction des effectifs basée sur les mesures de déploiement
Lorsque la charge CPU moyenne est faible, une règle de réduction peut réduire le nombre d'instances de machine virtuelle. L'exemple suivant montre comment réduire un seul nœud à un minimum de deux, si la charge du processeur (CPU) est inférieure à 30 % pendant 5 minutes.
Les étapes suivantes ajustent la configuration des Règles pour prendre en charge une échelle dans la règle.
Pour l’option Règles, sélectionnez le lien Ajouter une règle. La page de règle mise à l'échelle s’ouvre.
Sur la page Règle de la mise à l'échelle, configurez les valeurs suivantes :
Nom de la métrique : Sélectionnez Pourcentage d'utilisation du processeur (CPU).
Opérateur : Définissez sur Moins de.
Seuil métrique : Définissez la valeur sur 30.
Durée (minutes) : Définissez la valeur sur 5.
Statistique de grain de temps : Sélectionnez Moyenne.
Opération : Sélectionnez Diminuer le nombre de.
Nombre d'instances : Définissez la valeur sur 1.
Sélectionnez Ajouter pour créer la règle :
Si vous configurez à la fois des règles de scale-out et de scale-in, vos règles ressemblent à la capture d'écran suivante. Les règles précisent que si la charge moyenne du processeur (CPU) dépasse 70 % pendant 5 minutes, deux nœuds supplémentaires doivent être alloués, jusqu'à la limite de cinq. Si la charge du processeur (CPU) est inférieure à 30 % pendant 5 minutes, un seul nœud doit être libéré, jusqu'à un minimum de deux.
Laissez le volet de configuration ouvert. Dans la section suivante, vous spécifiez d’autres paramètres d’échelle.
Créer une règle d'échelle basée sur les mesures des points de terminaison
Dans les sections précédentes, vous avez créé des règles permettant une mise à l’échelle en fonction des métriques de déploiement. Vous pouvez également créer une règle qui s’applique au point de terminaison de déploiement. Dans cette section, vous apprendrez comment allouer un autre nœud lorsque la latence des requêtes est supérieure à une moyenne de 70 millisecondes pendant 5 minutes.
Les étapes suivantes continuent la configuration de la règle sur la page de mise à l’échelle automatique personnalisée.
Au bas de la page, sélectionnez le lien Ajouter une condition d’échelle.
Sur la page Condition de mise à l'échelle, sélectionnez Mise à l'échelle basée sur une métrique, puis sélectionnez le lien Ajouter une règle. La page de règle mise à l'échelle s’ouvre.
Sur la page Règle de la mise à l'échelle, configurez les valeurs suivantes :
Source métrique : Sélectionnez Autre ressource.
Type de ressource : Sélectionnez Points de terminaison en ligne d'Azure Machine Learning.
Ressource : Sélectionnez votre point de terminaison.
Nom métrique : Sélectionnez Latence des requêtes.
Opérateur : Définir sur Supérieur à.
Seuil métrique : Définissez la valeur sur 70.
Durée (minutes) : Définissez la valeur sur 5.
Statistique de grain de temps : Sélectionnez Moyenne.
Opération : Sélectionnez Augmenter le nombre de.
Nombre d'instances : Définissez la valeur sur 1.
Sélectionnez Ajouter pour créer la règle :
Trouver les identifiants des métriques prises en charge
Si vous souhaitez utiliser d'autres métriques dans le code pour configurer des règles d'automatisation de l'échelle en utilisant l'interface de ligne de commande Azure (CLI) ou le SDK, consultez le tableau dans Métriques disponibles.
Créer une règle d'échelle basée sur un calendrier
Vous pouvez également créer des règles qui s’appliquent uniquement à certains jours ou à certaines heures. Dans cette section, vous créez une règle qui définit le nombre de nœuds sur 2 le week-end.
Les étapes suivantes configurent la règle avec des options sur la page de mise à l’échelle automatique personnalisée dans le studio.
Au bas de la page, sélectionnez le lien Ajouter une condition d’échelle.
Sur la page Condition de mise à l'échelle, sélectionnez Mise à l’échelle selon un nombre d’instances spécifique, puis sélectionnez le lien Ajouter une règle. La page de règle mise à l'échelle s’ouvre.
Sur la page Règle de la mise à l'échelle, configurez les valeurs suivantes :
Nombre d'instances : Définissez la valeur sur 2.
Planification : Sélectionnez Répéter des jours spécifiques.
Définissez le modèle de planification : sélectionnez Répéter tous les et samedi et dimanche.
Sélectionnez Ajouter pour créer la règle :
Activer ou désactiver la mise à l'échelle automatique
Vous pouvez activer ou désactiver un profil de mise à l'échelle automatique spécifique.
Pour désactiver un profil de mise à l'échelle automatique en cours d'utilisation, sélectionnez Mise à l'échelle manuelle, puis sélectionnez Enregistrer.
Pour activer un profil de mise à l'échelle automatique, sélectionnez Mise à l'échelle automatique personnalisée. Le studio répertorie tous les profils de mise à l'échelle automatique reconnus pour l'espace de travail. Sélectionnez un profil, puis sélectionnez Enregistrer pour l'activer.
Supprimer des ressources
Si vous n’utilisez pas vos déploiements, supprimez les ressources en procédant comme suit.
# delete the autoscaling profile
az monitor autoscale delete -n "$AUTOSCALE_SETTINGS_NAME"
# delete the endpoint
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait