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.
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.
Als u automatische schaalaanpassing wilt gebruiken, moet de rol microsoft.insights/autoscalesettings/write worden toegewezen aan de identiteit die automatische schaalaanpassing beheert. U kunt alle ingebouwde of aangepaste rollen gebruiken die deze actie toestaan. Zie Gebruikers en rollen beheren voor algemene richtlijnen voor het beheren van rollen voor Azure Machine Learning. Zie Instellingen voor automatisch schalen van Microsoft.Insights voor meer informatie over instellingen voor automatisch schalen van Azure Monitor.
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:
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:
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
Definieer variabelen voor de werkruimte, het eindpunt en de implementatie:
# 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 = []
)
]
}
)
Selecteer in Azure Machine Learning-studio uw werkruimte en selecteer vervolgens Eindpunten aan de linkerkant van de pagina. Zodra de eindpunten worden weergegeven, selecteert u het eindpunt dat u wilt configureren.
Selecteer op het tabblad Details voor het eindpunt de optie Automatisch schalen configureren.
Selecteer onder Kiezen hoe u uw resources wilt schalende optie Aangepaste automatische schaalaanpassing om de configuratie te starten. Gebruik de volgende waarden voor de standaardschaalvoorwaarde:
Stel Schaalmodus in op Schalen op basis van een metrische waarde.
Stel Minimum in op 2.
Stel Maximum in op 5.
Stel Standaard in op 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::
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.
Deze regel verwijst naar het gemiddelde van de afgelopen 5 minuten van CPUUtilizationpercentage de argumenten metric_name, time_window en time_aggregation. Wanneer de waarde van de metrische waarde groter is dan de threshold van 70, worden er nog twee VM-exemplaren toegewezen.
Werk het my-scale-settings profiel bij zodat deze regel wordt opgenomen:
Selecteer in de sectie Regels de optie Een regel toevoegen. De pagina Regel schalen wordt weergegeven. Gebruik de volgende informatie om de velden op deze pagina in te vullen:
Stel Metrische naam in op CPU-gebruikspercentage.
Stel Operator in op Groter dan en stel de metrische drempelwaardein op 70.
Stel Duur (minuten) in op 5. Laat de tijdsintervalstatistiek staan op Gemiddelde.
Stel Bewerking in op Aantal verhogen met en stel Aantal exemplaren in op 2.
Selecteer ten slotte de knop Toevoegen om de regel te maken.
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:
Selecteer in de sectie Regels de optie Een regel toevoegen. De pagina Regel schalen wordt weergegeven. Gebruik de volgende informatie om de velden op deze pagina in te vullen:
Stel Metrische naam in op CPU-gebruikspercentage.
Stel Operator in op Kleiner dan en de drempelwaarde voor metrische gegevens op 30.
Stel Duur (minuten) in op 5.
Stel Bewerking in op Aantal verlagen door en stel Aantal exemplaren in op 1.
Selecteer ten slotte de knop Toevoegen om de regel te maken.
Als u zowel regels voor uitschalen als inschalen hebt, zien uw regels er ongeveer als volgt uit. U hebt opgegeven dat als de gemiddelde CPU-belasting gedurende 5 minuten hoger is dan 70%, er nog 2 knooppunten moeten worden toegewezen, tot de limiet van 5. Als de CPU-belasting gedurende 5 minuten minder dan 30% is, moet één knooppunt worden vrijgegeven, tot het minimum van 2.
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.
Selecteer onderaan de pagina + Een schaalvoorwaarde toevoegen.
Selecteer Schalen op basis van metrische gegevens en selecteer vervolgens Een regel toevoegen. De pagina Regel schalen wordt weergegeven. Gebruik de volgende informatie om de velden op deze pagina te vullen:
Stel Metrische bron in op Andere resource.
Stel Resourcetype in op Online-eindpunten voor Machine Learning.
Stel Resource in op uw eindpunt.
Stel Metrische naam in op Latentie aanvragen.
Stel Operator in op Groter dan en stel Drempelwaarde voor metrische gegevens in op 70.
Stel Duur (minuten) in op 5.
Stel Bewerking in om het aantal te verhogen met en stel Het aantal exemplaren in op 1
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.
Selecteer onderaan de pagina + Een schaalvoorwaarde toevoegen. Gebruik voor de nieuwe schaalvoorwaarde de volgende informatie om de velden in te vullen:
Selecteer Schalen naar een specifiek aantal exemplaren.
Stel het Aantal instanties in op 2.
Stel De planning in op Specifieke dagen herhalen.
Stel het schema in op Elkezaterdag en zondag herhalen.
Resources verwijderen
Als u uw implementaties niet gaat gebruiken, verwijdert u deze:
# 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