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.
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
- Un endpoint distribuito. Distribuire e assegnare un punteggio a un modello di Machine Learning usando un endpoint online.
- Per usare la scalabilità automatica, è necessario assegnare il ruolo
microsoft.insights/autoscalesettings/write
all'identità che gestisce la scalabilità automatica. È possibile usare qualsiasi ruolo predefinito o personalizzato che consenta questa azione. Per indicazioni generali sulla gestione dei ruoli per Azure Machine Learning, vedere Gestire utenti e ruoli. Per altre informazioni sulla scalabilità automatica da Monitoraggio di Azure, vedere Microsoft.Insights autoscalesettings.
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 di distribuzione
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 ridurre il numero di istanze con le metriche di distribuzione
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 per Machine Learning 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 per Machine Learning 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
Trovare gli ID delle metriche supportate
Se si desidera usare altre metriche nel codice (interfaccia della riga di comando o SDK) per configurare le regole di scalabilità automatica, vedere la tabella in Metriche disponibili.
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 per Machine Learning 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"
Abilitare o disabilitare la scalabilità automatica
È possibile abilitare o disabilitare un profilo di scalabilità automatica specifico.
SI APPLICA A:Estensione per Machine Learning dell'interfaccia della riga di comando di Azure v2 (corrente)
az monitor autoscale update \
--autoscale-name $AUTOSCALE_SETTINGS_NAME \
--enabled false
Eliminare risorse
Se le distribuzioni non verranno utilizzate, eliminarle:
SI APPLICA A:Estensione per Machine Learning 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:
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per