Mise à l’échelle automatique d’un point de terminaison en ligne

S’APPLIQUE À :Extension Azure CLI v2 (actuelle)Kit de développement logiciel (SDK) Python azure-ai-ml v2 (version actuelle)

La mise à l’échelle automatique exécute automatiquement la quantité appropriée de ressources pour gérer la charge sur votre application. Les points de terminaison en ligne prennent en charge la mise à l’échelle automatique via l’intégration à la fonctionnalité de mise à l’échelle automatique d’Azure Monitor.

La mise à l’échelle automatique d’Azure Monitor prend en charge un ensemble complet de règles. Vous pouvez configurer la mise à l’échelle basée sur les métriques (par exemple utilisation du processeur > 70 %), la mise à l’échelle basée sur la planification (par exemple les 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.

Diagramme de l’ajout/suppression d’une instance pour la mise à l’échelle automatique en fonction des besoins

Aujourd’hui, vous pouvez gérer la mise à l’échelle automatique à l’aide de l’interface Azure CLI, avec REST, ARM ou le portail Azure basé sur un navigateur. D’autres kits de développement logiciel (SDK) Azure Machine Learning, comme Python SDK, vont être pris en charge ultérieurement.

Prérequis

Définir un profil de mise à l’échelle automatique

Pour activer la mise à l’échelle automatique pour un point de terminaison, vous devez d’abord définir un profil de mise à l’échelle automatique. Ce profil définit les capacités par défaut, minimale et maximale du groupe identique. L’exemple suivant définit la capacité par défaut et la capacité minimale sous la forme de deux instances de machine virtuelle, ainsi que la capacité maximale sous la forme de cinq instances :

S’APPLIQUE À :Extension ml Azure CLI v2 (actuelle)

L’extrait de code suivant définit les noms des points de terminaison et des déploiements :

# set your existing endpoint name
ENDPOINT_NAME=your-endpoint-name
DEPLOYMENT_NAME=blue

Ensuite, récupérez l’ID d’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`

L’extrait de code suivant crée le profil de mise à l’échelle automatique :

az monitor autoscale create \
  --name $AUTOSCALE_SETTINGS_NAME \
  --resource $DEPLOYMENT_RESOURCE_ID \
  --min-count 2 --max-count 5 --count 2

Notes

Pour plus d’informations, consulter la page de référence pour la mise à l’échelle automatique

Créer une règle pour le scale-out à l’aide de métriques

Une règle de scale-out courante consiste à augmenter le nombre d’instances de machine virtuelle quand la charge moyenne du processeur est élevée. L’exemple suivant alloue deux nœuds supplémentaires (jusqu’au maximum) si la charge moyenne du processeur est supérieure à 70 % pendant cinq minutes :

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

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 (autoscale-name correspond à name dans le profil). La valeur de son argument condition indique que la règle doit se déclencher lorsque la consommation processeur moyenne des instances de machine virtuelle dépasse 70 % pendant cinq minutes. Lorsque cela se produit, deux instances de machine virtuelle supplémentaires sont allouées.

Notes

Pour plus d’informations sur la syntaxe de l’interface CLI, consultez az monitor autoscale.

Créer une règle pour le scale-in à l’aide de métriques

Quand la charge est faible, une règle de scale-in permet de réduire le nombre d’instances de machine virtuelle. L’exemple suivant permet de libérer un seul nœud, jusqu’à un minimum de 2, si la charge du processeur est inférieure à 30 % pendant 5 minutes :

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

az monitor autoscale rule create \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --condition "CpuUtilizationPercentage < 25 avg 5m" \
  --scale in 1

Créer une règle de mise à l’échelle basée sur les métriques de point de terminaison

Règles précédentes appliquées au déploiement. Ajoutez maintenant une règle qui s’applique au point de terminaison. Dans cet exemple, si la latence des requêtes est supérieure à une moyenne de 70 millisecondes pendant 5 minutes, allouez un autre nœud.

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

az monitor autoscale rule create \
 --autoscale-name $AUTOSCALE_SETTINGS_NAME \
 --condition "RequestLatency > 70 avg 5m" \
 --scale out 1 \
 --resource $ENDPOINT_RESOURCE_ID

Créer des règles de mise à l’échelle selon une planification

Vous pouvez également créer des règles qui s’appliquent uniquement à certains jours ou à certaines heures. Dans cet exemple, le nombre de nœuds est défini sur 2 pour le week-end.

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

az monitor autoscale profile create \
  --name weekend-profile \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --min-count 2 --count 2 --max-count 2 \
  --recurrence week sat sun --timezone "Pacific Standard Time"

Supprimer des ressources

Si vous ne prévoyez pas d’utiliser vos déploiements, supprimez-les :

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

# 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

Étapes suivantes

Pour en savoir plus sur la mise à l’échelle automatique avec Azure Monitor, consultez les articles suivants :