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.
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.
Om du vill använda autoskalning måste rollen microsoft.insights/autoscalesettings/write tilldelas till den identitet som hanterar autoskalning. Du kan använda inbyggda eller anpassade roller som tillåter den här åtgärden. Allmän vägledning om hur du hanterar roller för Azure Machine Learning finns i Hantera användare och roller. Mer information om autoskalningsinställningar från Azure Monitor finns i Microsoft.Insights autoscalesettings.
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:
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:
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.mgmt.monitor import MonitorManagementClient
from azure.mgmt.monitor.models import AutoscaleProfile, ScaleRule, MetricTrigger, ScaleAction, Recurrence, RecurrentSchedule
import random
import datetime
Definiera variabler för arbetsytan, slutpunkten och distributionen:
# 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 = f"autoscale-{endpoint_name}-{deployment_name}-{random.randint(0,1000)}"
mon_client.autoscale_settings.create_or_update(
resource_group,
autoscale_settings_name,
parameters = {
"location" : endpoint.location,
"target_resource_uri" : deployment.id,
"profiles" : [
AutoscaleProfile(
name="my-scale-settings",
capacity={
"minimum" : 2,
"maximum" : 5,
"default" : 2
},
rules = []
)
]
}
)
I Azure Machine Learning-studio väljer du din arbetsyta och sedan Slutpunkter till vänster på sidan. När slutpunkterna visas väljer du den du vill konfigurera.
På fliken Information för slutpunkten väljer du Konfigurera automatisk skalning.
Under Välj hur du skalar dina resurser väljer du Anpassad autoskalning för att påbörja konfigurationen. Använd följande värden för standardskalningsvillkoret:
Ställ in Skalningslägepå Skala baserat på ett mått.
Ange Minsttill 2.
Ange Maximum till 5.
Ange Standard till 2.
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::
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.
Den här regeln refererar till medelvärdet för de sista 5 minuterna från CPUUtilizationpercentage argumenten metric_name, time_window och time_aggregation. När värdet för måttet är större än threshold för 70 allokeras ytterligare två VM-instanser.
Uppdatera profilen my-scale-settings så att den inkluderar den här regeln:
I avsnittet Regler väljer du Lägg till en regel. Sidan Skalningsregel visas. Använd följande information för att fylla i fälten på den här sidan:
Ange Måttnamn till CPU-användningsprocent.
Ange Operator till Större än och ange Tröskelvärde för mått till 70.
Ange Varaktighet (minuter) till 5. Lämna tidsintervallstatistiken som Genomsnitt.
Ange Åtgärd till Öka antalet med och ange Antal instanser till 2.
Välj slutligen knappen Lägg till för att skapa regeln.
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:
I avsnittet Regler väljer du Lägg till en regel. Sidan Skalningsregel visas. Använd följande information för att fylla i fälten på den här sidan:
Ange Måttnamn till CPU-användningsprocent.
Ange Operator till Mindre än och Tröskelvärde för mått till 30.
Ange Varaktighet (minuter) till 5.
Ange Åtgärd till Minska antal med och ange Antal instanser till 1.
Välj slutligen knappen Lägg till för att skapa regeln.
Om du har både utskalning och inskalning av regler ser reglerna ut ungefär som på följande skärmbild. Du har angett att om den genomsnittliga CPU-belastningen överskrider 70 % i 5 minuter ska ytterligare två noder allokeras, upp till gränsen på 5. Om CPU-belastningen är mindre än 30 % i 5 minuter bör en enskild nod frigöras, ned till minst 2.
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.
Längst ned på sidan väljer du + Lägg till ett skalningsvillkor.
Välj Skala baserat på mått och välj sedan Lägg till en regel. Sidan Skalningsregel visas. Använd följande information för att fylla i fälten på den här sidan:
Ange Måttkälla till Annan resurs.
Ange Resurstyp till Machine Learning-slutpunkter online.
Ange Resurs till slutpunkten.
Ange Måttnamn till Begär svarstid.
Ange Operator till Större än och ange Tröskelvärde för mått till 70.
Ange Varaktighet (minuter) till 5.
Ange Åtgärd till Öka antal efter och ange Antal instanser till 1
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.
# 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