Een online-eindpunt automatisch schalen

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidig)Python SDK azure-ai-ml v2 (huidig)

Automatisch schalen wordt uitgevoerd met de juiste hoeveelheid resources om de belasting van uw toepassing te verwerken. Online-eindpunten ondersteunen automatisch schalen via integratie met de functie voor automatisch schalen van Azure Monitor.

Automatisch schalen van Azure Monitor ondersteunt een uitgebreide set regels. U kunt schalen op basis van metrische gegevens (bijvoorbeeld CPU-gebruik >70%), schalen op basis van een planning (bijvoorbeeld schaalregels voor piekuren) of een combinatie configureren. Zie Overzicht van automatische schaalaanpassing in Microsoft Azure voor meer informatie.

Diagram voor het automatisch schalen van het toevoegen/verwijderen van een exemplaar indien nodig

Tegenwoordig kunt u automatische schaalaanpassing beheren met behulp van de Azure CLI, REST, ARM of de browsergebaseerde Azure Portal. Andere Azure Machine Learning SDK's, zoals de Python SDK, voegen na verloop van tijd ondersteuning toe.

Vereisten

Een profiel voor automatisch schalen definiëren

Als u automatische schaalaanpassing voor een eindpunt wilt inschakelen, definieert u eerst een profiel voor automatisch schalen. In dit profiel worden de minimum-, maximum- en standaardcapaciteit ingesteld voor de schaalset. In het volgende voorbeeld worden de standaard- en minimumcapaciteit ingesteld op twee VM-exemplaren en de maximale capaciteit op vijf:

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidig)

Met het volgende codefragment worden de namen van het eindpunt en de implementatie ingesteld:

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

Haal vervolgens de Azure Resource Manager-id van de implementatie en het eindpunt op:

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

Met het volgende codefragment wordt het profiel voor automatisch schalen gemaakt:

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

Een regel maken om uit te schalen met behulp van metrische gegevens

Een algemene regel voor uitschalen is een regel die het aantal VM-exemplaren verhoogt wanneer de gemiddelde CPU-belasting hoog is. In het volgende voorbeeld worden twee extra knooppunten toegewezen (tot het maximum) als het CPU-gemiddelde een belasting heeft van meer dan 70% gedurende vijf minuten::

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidig)

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

De regel maakt deel uit van het my-scale-settings profiel (autoscale-name komt overeen met de name van het profiel). De waarde van het condition argument geeft aan dat de regel moet worden geactiveerd wanneer 'het gemiddelde CPU-verbruik van de VM-exemplaren gedurende vijf minuten hoger is dan 70%'. Wanneer aan deze voorwaarde wordt voldaan, worden er nog twee VM-exemplaren toegewezen.

Notitie

Zie voor meer informatie over de CLI-syntaxis az monitor autoscale.

Een regel maken om in te schalen met behulp van metrische gegevens

Wanneer de belasting licht is, kan een regel voor inschalen het aantal VM-exemplaren verminderen. In het volgende voorbeeld wordt één knooppunt vrijgegeven, tot minimaal 2, als de CPU-belasting gedurende 5 minuten minder dan 30% is:

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidig)

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

Een schaalregel maken op basis van metrische eindpuntgegevens

De vorige regels zijn toegepast op de implementatie. Voeg nu een regel toe die van toepassing is op het eindpunt. Als in dit voorbeeld de latentie van de aanvraag langer is dan gemiddeld 70 milliseconden gedurende 5 minuten, wijst u een ander knooppunt toe.

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidig)

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

Schaalregels maken op basis van een planning

U kunt ook regels maken die alleen van toepassing zijn op bepaalde dagen of op bepaalde tijden. In dit voorbeeld is het aantal knooppunten ingesteld op 2 in het weekend.

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidig)

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"

Resources verwijderen

Als u uw implementaties niet gaat gebruiken, verwijdert u deze:

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidig)

# 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

Volgende stappen

Zie de volgende artikelen voor meer informatie over automatische schaalaanpassing met Azure Monitor: