Autoskalning av en onlineslutpunkt

GÄLLER FÖR:Azure CLI ml-tillägg v2 (aktuellt)Python SDK azure-ai-ml v2 (aktuell)

Med autoskalning körs automatiskt rätt mängd resurser för att hantera arbetsbelastningen i appen. Onlineslutpunkter stöder automatisk skalning via integrering med autoskalningsfunktionen i Azure Monitor.

Automatisk skalning i Azure Monitor har stöd för en omfattande uppsättning regler. Du kan konfigurera måttbaserad skalning (till exempel CPU-användning >70 %), schemabaserad skalning (till exempel skalningsregler för tider med hög belastning) eller en kombination. Mer information finns i Översikt över autoskalning i Microsoft Azure.

Diagram för att lägga till/ta bort instans för automatisk skalning efter behov

Idag kan du hantera automatisk skalning med hjälp av antingen Azure CLI, REST, ARM eller webbläsarbaserade Azure Portal. Andra Azure Machine Learning-SDK:er, till exempel Python SDK, lägger till stöd över tid.

Förutsättningar

Definiera en autoskalningsprofil

Om du vill aktivera autoskalning för en slutpunkt definierar du först en autoskalningsprofil. Den här profilen definierar skalningsuppsättningens förvalda, lägsta och högsta kapacitet. I följande exempel anges standard- och minimikapaciteten som två VM-instanser och den maximala kapaciteten som fem:

GÄLLER FÖR:Azure CLI ml-tillägg v2 (aktuellt)

Följande kodfragment anger slutpunkts- och distributionsnamnen:

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

Hämta sedan Azure Resource Manager-ID för distributionen och slutpunkten:

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

Följande kodfragment skapar autoskalningsprofilen:

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

Anteckning

Mer information finns på referenssidan för autoskalning

Skapa en regel för att skala ut med hjälp av mått

En vanlig utskalningsregel är en regel som ökar antalet virtuella datorinstanser när den genomsnittliga CPU-belastningen är hög. I följande exempel allokeras ytterligare två noder (upp till maxvärdet) om processorn i genomsnitt har en belastning på mer än 70 % i fem minuter::

GÄLLER FÖR:Azure CLI ml-tillägg v2 (aktuellt)

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

Regeln är en del av profilen my-scale-settings (autoscale-name matchar name profilen). Värdet för argumentet condition säger att regeln ska utlösas när "Den genomsnittliga CPU-förbrukningen bland de virtuella datorinstanserna överstiger 70 % i fem minuter". När villkoret är uppfyllt allokeras ytterligare två VM-instanser.

Anteckning

Mer information om CLI-syntaxen finns i az monitor autoscale.

Skapa en regel för att skala in med hjälp av mått

När belastningen är lätt kan en skalningsregel minska antalet VM-instanser. I följande exempel släpps en enskild nod, ned till minst 2, om CPU-belastningen är mindre än 30 % i 5 minuter:

GÄLLER FÖR:Azure CLI ml-tillägg v2 (aktuellt)

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

Skapa en skalningsregel baserat på slutpunktsmått

De tidigare reglerna som tillämpades på distributionen. Lägg nu till en regel som gäller för slutpunkten. Om svarstiden för begäran i det här exemplet är större än i genomsnitt 70 millisekunder i 5 minuter allokerar du en annan nod.

GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)

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

Skapa skalningsregler baserat på ett schema

Du kan också skapa regler som endast gäller vissa dagar eller vid vissa tidpunkter. I det här exemplet anges antalet noder till 2 under helgen.

GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)

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"

Ta bort resurser

Om du inte kommer att använda dina distributioner tar du bort dem:

GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)

# 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

Nästa steg

Mer information om autoskalning med Azure Monitor finns i följande artiklar: