Dela via


Autoskalning av onlineslutpunkter i Azure Machine Learning

GÄLLER FÖR:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (aktuell)

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.

Diagram som visar hur autoskalning lägger till och tar bort instanser efter behov.

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.

Förutsättningar

  • En distribuerad slutpunkt. Mer information finns i Distribuera och poängsätta en maskininlärningsmodell med hjälp av en onlineslutpunkt.

  • 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.

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

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>
  1. Ange slutpunkten och distributionsnamnen:

    # set your existing endpoint name
    ENDPOINT_NAME=your-endpoint-name
    DEPLOYMENT_NAME=blue
    
  2. 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`
    
  3. Skapa autoskalningsprofilen:

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

Kommentar

Mer information finns i referensen az monitor autoscale .

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:

GÄLLER FÖR: Azure CLI ml-tillägget 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 , 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.

Kommentar

Mer information finns i azure CLI-syntaxreferensen az monitor autoscale .

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.

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

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

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.

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

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

Hitta ID:t för mått som stöds

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.

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

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"

Aktivera eller inaktivera autoskalning

Du kan aktivera eller inaktivera en specifik autoskalningsprofil.

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

az monitor autoscale update \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --enabled false

Ta bort resurser

Om du inte ska använda dina distributioner tar du bort resurserna med följande steg.

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

# 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