Dimensionare automaticamente un endpoint online

SI APPLICA A:Estensione ml dell'interfaccia della riga di comando di Azure v2 (corrente)Python SDK azure-ai-ml v2 (corrente)

La scalabilità automatica usa automaticamente la quantità corretta di risorse per gestire il carico dell'applicazione. Gli endpoint online supportano la scalabilità automatica tramite l'integrazione con la funzionalità di scalabilità automatica di Monitoraggio di Azure.

La scalabilità automatica di Monitoraggio di Azure supporta un set completo di regole. È possibile configurare il ridimensionamento in base alle metriche (ad esempio impostando l'utilizzo della CPU >70%), in base alla pianificazione (ad esempio le definendo regole di ridimensionamento per le ore lavorative di punta) o a una combinazione di tali opzioni. Per altre informazioni, vedere Panoramica della scalabilità automatica in Microsoft Azure.

Diagram for autoscale adding/removing instance as needed

Per gestire la scalabilità automatica, è oggi possibile usare l'interfaccia della riga di comando di Azure, REST, Azure Resource Manager o il portale di Azure basato su browser. In seguito verrà aggiunto il supporto per altri SDK di Azure Machine Learning, come Python SDK.

Prerequisiti

Definire un profilo di scalabilità automatica

Per abilitare la scalabilità automatica per un endpoint, è innanzitutto necessario definire un profilo di scalabilità automatica. Questo profilo definisce la capacità predefinita, minima e massima del set di scalabilità. L'esempio seguente consente di impostare la capacità predefinita e minima su due istanze di macchine virtuali e la capacità massima su cinque:

SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)

Nel frammento di codice seguente vengono impostati i nomi dell'endpoint e della distribuzione:

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

Successivamente, ottenere l'ID della distribuzione e dell'endpoint per Azure Resource Manager:

# 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`

Il frammento di codice seguente consente di creare il profilo di scalabilità automatica:

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

Nota

Per altre informazioni, vedere la pagina di riferimento per la scalabilità automatica

Creare una regola per aumentare il numero di istanze con le metriche

Una regola di ridimensionamento comune consente di aumentare il numero di istanze della macchina virtuale quando il carico medio della CPU è alto. L'esempio seguente consente di allocare altri due nodi (fino al massimo) se il carico medio della CPU è maggiore del 70% per cinque minuti:

SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)

az monitor autoscale rule create \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --condition "CpuUtilizationPercentage > 70 avg 5m" \
  --scale out 2

La regola fa parte del profilo di my-scale-settings (autoscale-name corrisponde a name nel profilo). Il valore del relativo argomento condition indica che la regola deve essere attivata quando "Il consumo medio della CPU tra le istanze della macchina virtuale supera il 70% per cinque minuti". Quando quella condizione è soddisfatta, vengono allocate altre due istanze della macchina virtuale.

Nota

Per altre informazioni sulla sintassi dell'interfaccia della riga di comando, vedere az monitor autoscale.

Creare una regola per la riduzione del numero di istanze con le metriche

Quando il carico è leggero, una regola di ridimensionamento consente di ridurre il numero di istanze della macchina virtuale. L'esempio seguente consente di rilasciare un singolo nodo fino a lasciarne un minimo di due, se il carico della CPU è inferiore al 30% per cinque minuti:

SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)

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

Creare una regola di ridimensionamento in base alle metriche degli endpoint

Regole precedenti applicate alla distribuzione. Aggiungere ora una regola applicabile all'endpoint. In questo esempio, se la latenza della richiesta è maggiore di una media di 70 millisecondi per cinque minuti, allocare un altro nodo.

SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)

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

Creare regole di ridimensionamento in base a una pianificazione

È anche possibile creare regole che vengono applicate solo in orari o giorni specifici. In questo esempio il numero di nodi è impostato su 2 nel fine settimana.

SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)

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"

Eliminare risorse

Se le distribuzioni non verranno utilizzate, eliminarle:

SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)

# 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

Passaggi successivi

Per altre informazioni sulla scalabilità automatica con Monitoraggio di Azure, vedere gli articoli seguenti: