Partage via


Mise à l'échelle automatique des points de terminaison en ligne dans Azure Machine Learning

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

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.

Diagramme qui montre comment la mise à l'échelle automatique ajoute et supprime des instances selon les besoins.

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.

Prérequis

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.

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

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>
  1. 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
    
  2. 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`
    
  3. Créer 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
    

Remarque

Pour plus d'informations, consultez la référence az monitor autoscale.

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 :

S’APPLIQUE À : Extension ml Azure 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, 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.

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.

S’APPLIQUE À : Extension ml Azure 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 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.

S’APPLIQUE À : Extension ml Azure 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

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.

S’APPLIQUE À : Extension ml Azure 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"

Activer ou désactiver la mise à l'échelle automatique

Vous pouvez activer ou désactiver un profil de mise à l'échelle automatique spécifique.

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

az monitor autoscale update \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --enabled false

Supprimer des ressources

Si vous n’utilisez pas vos déploiements, supprimez les ressources en procédant comme suit.

S’APPLIQUE À : Extension ml Azure 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