I den här artikeln lär du dig att hantera resursanvändning i en distribution genom att konfigurera automatisk skalning baserat på mått och scheman. Med autoskalningsprocessen kan du automatiskt köra rätt mängd resurser för att hantera belastningen på ditt program. Onlineslutpunkter i Azure Machine Learning stöder automatisk skalning genom integrering med autoskalningsfunktionen i Azure Monitor.
Med autoskalning i Azure Monitor kan du ange regler som utlöser en eller flera autoskalningsåtgärder när reglernas villkor uppfylls. Du kan konfigurera måttbaserad skalning (till exempel processoranvändning som är större än 70 %), schemabaserad skalning (till exempel skalningsregler för tider med hög belastning) eller en kombination av de två. Mer information finns i Översikt över autoskalning i Microsoft Azure.
Du kan för närvarande hantera automatisk skalning med hjälp av Azure CLI, REST-API:er, Azure Resource Manager, Python SDK eller webbläsarbaserade Azure Portal.
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 Autoskalning av Microsoft.Insights.
Om du vill använda Python SDK för att hantera Azure Monitor-tjänsten installerar azure-mgmt-monitor du paketet med följande kommando:
pip install azure-mgmt-monitor
Definiera autoskalningsprofil
Om du vill aktivera autoskalning för en onlineslutpunkt definierar du först en profil för autoskalning. Profilen anger standardkapaciteten, lägsta och högsta skalningsuppsättning. I följande exempel visas hur du anger antalet virtuella datorinstanser (VM) för standardkapacitet, lägsta och högsta skalningskapacitet.
Om du inte redan har angett standardinställningarna för Azure CLI sparar du standardinställningarna. Kör den här koden för att undvika att skicka in värdena för din prenumeration, arbetsyta och resursgrupp flera gånger:
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
Ange slutpunkten och distributionsnamnen:
# set your existing endpoint name
ENDPOINT_NAME=your-endpoint-name
DEPLOYMENT_NAME=blue
Hämta Azure Resource Manager-ID:t 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`
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 following code appends a random number to create a unique name.
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 listan över tillgängliga slutpunkter väljer du den slutpunkt som ska konfigureras:
På fliken Information för den valda slutpunkten väljer du Konfigurera automatisk skalning:
För alternativet Välj hur du skalar dina resurser väljer du Anpassad autoskalning för att påbörja konfigurationen.
För alternativet Standardskalningsvillkor konfigurerar du följande värden:
Skalningsläge: Välj Skala baserat på ett mått.
Minsta instansgränser>: Ange värdet till 2.
Högsta instansgränser>: Ange värdet till 5.
Standard för instansgränser>: Ange värdet till 2.
Låt konfigurationsfönstret vara öppet. I nästa avsnitt konfigurerar du regelinställningarna .
Skapa utskalningsregel baserat på distributionsmått
En vanlig utskalningsregel är att öka antalet virtuella datorinstanser när den genomsnittliga CPU-belastningen är hög. I följande exempel visas hur du allokerar ytterligare två noder (upp till maximalt) om processorns genomsnittliga belastning är större än 70 % i 5 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 , där autoscale-name matchar name delen av profilen. Värdet för regelargumentet condition anger att regeln utlöses när "Den genomsnittliga CPU-förbrukningen bland de virtuella datorinstanserna överstiger 70 % i 5 minuter". När villkoret är uppfyllt allokeras ytterligare två virtuella datorinstanser.
Den här regeln refererar till det sista medelvärdet på 5 minuter av CPUUtilizationpercentage värdet från argumenten metric_name, time_windowoch time_aggregation. När värdet för måttet är större än threshold 70 allokerar distributionen ytterligare två VM-instanser.
Uppdatera profilen så att den my-scale-settings innehåller den här regeln:
Följande steg fortsätter med autoskalningskonfigurationen.
För alternativet Regler väljer du länken Lägg till en regel. Sidan Skalningsregel öppnas.
På sidan Skalningsregel konfigurerar du följande värden:
Måttnamn: Välj CPU-användningsprocent.
Operator: Ställ in på Större än.
Tröskelvärde för mått: Ange värdet till 70.
Varaktighet (minuter): Ange värdet till 5.
Tidsintervallstatistik: Välj Genomsnitt.
Åtgärd: Välj Öka antalet med.
Antal instanser: Ange värdet till 2.
Välj Lägg till för att skapa regeln:
Låt konfigurationsfönstret vara öppet. I nästa avsnitt justerar du inställningarna för Regler .
Skapa inskalningsregel baserat på distributionsmått
När den genomsnittliga CPU-belastningen är lätt kan en inskalningsregel minska antalet vm-instanser. I följande exempel visas hur du släpper en enskild nod ned till minst två, om CPU-belastningen är mindre än 30 % i 5 minuter.
Följande steg justerar regelkonfigurationen för att stödja en skalning i regeln.
För alternativet Regler väljer du länken Lägg till en regel. Sidan Skalningsregel öppnas.
På sidan Skalningsregel konfigurerar du följande värden:
Måttnamn: Välj CPU-användningsprocent.
Operator: Ställ in på Mindre än.
Tröskelvärde för mått: Ange värdet till 30.
Varaktighet (minuter): Ange värdet till 5.
Tidsintervallstatistik: Välj Genomsnitt.
Åtgärd: Välj Minska antalet med.
Antal instanser: Ange värdet till 1.
Välj Lägg till för att skapa regeln:
Om du konfigurerar både utskalnings- och inskalningsregler ser reglerna ut ungefär som följande skärmbild. Reglerna anger att om den genomsnittliga CPU-belastningen överskrider 70 % i 5 minuter ska ytterligare två noder allokeras, upp till gränsen på fem. Om CPU-belastningen är mindre än 30 % i 5 minuter bör en enskild nod släppas, ned till minst två.
Låt konfigurationsfönstret vara öppet. I nästa avsnitt anger du andra skalningsinställningar.
Skapa skalningsregel baserat på slutpunktsmått
I föregående avsnitt skapade du regler för att skala in eller ut baserat på distributionsmått. Du kan också skapa en regel som gäller för distributionsslutpunkten. I det här avsnittet får du lära dig hur du allokerar en annan nod när svarstiden för begäran är större än i genomsnitt 70 millisekunder i 5 minuter.
Om du vill använda andra mått i kod för att konfigurera regler för autoskalning med hjälp av Azure CLI eller SDK kan du läsa tabellen i Tillgängliga mått.
Skapa skalningsregel baserat på schema
Du kan också skapa regler som endast gäller vissa dagar eller vid vissa tidpunkter. I det här avsnittet skapar du en regel som anger antalet noder till 2 på helgerna.
Om du vill inaktivera en autoskalningsprofil som används väljer du Manuell skalning och sedan Spara.
Om du vill aktivera en autoskalningsprofil väljer du Anpassad autoskalning. Studion visar alla identifierade autoskalningsprofiler för arbetsytan. Välj en profil och välj sedan Spara för att aktivera.
Ta bort resurser
Om du inte ska använda dina distributioner tar du bort resurserna med följande steg.
# 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