Automatisches Skalieren eines Onlineendpunkts

GILT FÜR:Azure CLI ML-Erweiterung v2 (aktuell)Python SDK azure-ai-ml v2 (aktuell)

Autoscale führt automatisch die richtige Menge an Ressourcen aus, um die Last Ihrer Anwendung zu bewältigen. Onlineendpunkte unterstützen automatisches Skalieren durch die Integration des Autoskalierungsfeatures von Azure Monitor.

Die automatische Azure Monitor-Skalierung unterstützt eine Vielzahl von Regeln. Sie können metrikbasierte Skalierung (z. B. CPU-Auslastung >70 %), zeitplanbasierte Skalierung (z. B. Skalierungsregeln für Hauptgeschäftszeiten) oder eine Kombination davon konfigurieren. Weitere Informationen finden Sie unter Überblick über Autoskalierung in Microsoft Azure.

Diagramm für die Autoskalierung beim bedarfsgesteuerten Hinzufügen/Entfernen einer Instanz

Derzeit können Sie die automatische Skalierung entweder mithilfe der Azure-CLI oder über REST, ARM oder das browserbasierte Azure-Portal verwalten. Andere Azure Machine Learning-SDKs, z. B. das Python-SDK, werden im Laufe der Zeit Unterstützung hinzufügen.

Voraussetzungen

Definieren eines Profils für die automatische Skalierung

Zum Aktivieren der Autoskalierung für einen Endpunkt legen Sie zuerst ein Profil für die automatische Skalierung fest. Dieses Profil definiert die standardmäßige, minimale und maximale Kapazität der Skalierungsgruppe. Im folgenden Beispiel wird die Standard- und Mindestkapazität auf zwei VM-Instanzen und die Höchstkapazität auf fünf VM-Instanzen festgelegt:

GILT FÜRAzure CLI ML-Erweiterung v2 (aktuell)

Der folgende Codeausschnitt legt die Endpunkt- und Bereitstellungsnamen fest:

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

Als nächstes erhalten Sie die Azure Resource Manager-ID der Bereitstellung und des Endpunkts:

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

Mit dem folgenden Codeausschnitt wird das Profil für die Autoskalierung erstellt:

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

Hinweis

Weitere Informationen finden Sie auf der Referenzseite für die Autoskalierung.

Erstellen einer Regel zum Aufskalieren mithilfe von Metriken

Eine gängige Regel für das Aufskalieren besteht darin, die Anzahl der VM-Instanzen zu erhöhen, wenn die durchschnittliche CPU-Auslastung hoch ist. Im folgenden Beispiel werden zwei weitere Knoten (bis zum Maximalwert) zugeordnet, wenn die CPU-Auslastung fünf Minuten lang durchschnittlich über 70 % liegt:

GILT FÜRAzure CLI ML-Erweiterung v2 (aktuell)

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

Die Regel ist Teil des my-scale-settings-Profils (autoscale-name entspricht dem name des Profils). Der Wert des Arguments condition besagt, dass die Regel ausgelöst werden soll, wenn „die durchschnittliche CPU-Auslastung unter den VM-Instanzen fünf Minuten lang 70 % überschreitet“. Wenn diese Bedingung erfüllt ist, werden zwei weitere VM-Instanzen zugeordnet.

Hinweis

Weitere Informationen zur CLI-Syntax finden Sie unter az monitor autoscale.

Erstellen einer Regel zum Abskalieren mithilfe von Metriken

Bei geringer Auslastung kann eine Skalierungsregel die Anzahl der VM-Instanzen reduzieren. Das folgende Beispiel gibt einen einzelnen Knoten frei (bis auf ein Minimum von zwei Knoten), wenn die CPU-Auslastung fünf Minuten lang weniger als 30 % beträgt:

GILT FÜRAzure CLI ML-Erweiterung v2 (aktuell)

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

Erstellen einer Skalierungsregel basierend auf Endpunktmetriken

Die vorherigen Regeln, die auf die Bereitstellung angewendet wurden. Fügen Sie nun eine Regel hinzu, die für den Endpunkt gilt. Wenn die Anforderungslatenz in diesem Beispiel fünf Minuten lang durchschnittlich über 70 Millisekunden liegt, ordnen Sie einen anderen Knoten zu.

GILT FÜRAzure CLI ML-Erweiterung v2 (aktuell)

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

Erstellen von Skalierungsregeln basierend auf einem Zeitplan

Sie können auch Regeln erstellen, die nur an bestimmten Tagen oder zu bestimmten Zeiten gelten. In diesem Beispiel wird die Knotenanzahl am Wochenende auf „2“ festgelegt.

GILT FÜRAzure CLI ML-Erweiterung 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"

Löschen von Ressourcen

Wenn Sie Ihre Bereitstellungen nicht verwenden möchten, löschen Sie sie:

GILT FÜRAzure CLI ML-Erweiterung 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ächste Schritte

Weitere Informationen zur Autoskalierung mit Azure Monitor finden Sie in den folgenden Artikeln: