Automatické škálování automaticky spustí správné množství prostředků ke zvládnutí zatížení u vaší aplikace. Online koncové body podporují automatické škálování prostřednictvím integrace s funkcí automatického škálování služby Azure Monitor.
Automatické škálování služby Azure Monitor podporuje bohatou sadu pravidel. Můžete nakonfigurovat škálování na základě metrik (například 70% využití >procesoru), škálování na základě plánu (například pravidla škálování pro pracovní dobu ve špičce) nebo kombinaci. Další informace najdete v tématu Přehled automatického škálování v Microsoft Azure.
V současnosti můžete automatické škálování spravovat pomocí Azure CLI, REST, ARM nebo Azure Portal v prohlížeči. Další sady SDK služby Azure Machine Learning, například Python SDK, budou postupně přidávat podporu.
Pokud chcete použít automatické škálování, musí být role microsoft.insights/autoscalesettings/write přiřazená identitě, která spravuje automatické škálování. Můžete použít jakékoli předdefinované nebo vlastní role, které tuto akci umožňují. Obecné pokyny ke správě rolí pro Azure Machine Learning najdete v tématu Správa uživatelů a rolí. Další informace o nastavení automatického škálování ze služby Azure Monitor najdete v tématu Nastavení automatického škálování Microsoft.Insights.
Definice profilu automatického škálování
Pokud chcete povolit automatické škálování pro koncový bod, nejprve nadefinujte profil automatického škálování. Tento profil definuje výchozí, minimální a maximální kapacitu škálovací sady. Následující příklad nastaví výchozí a minimální kapacitu jako dvě instance virtuálních počítačů a maximální kapacitu jako pět:
Následující fragment kódu nastaví názvy koncového bodu a nasazení:
# set your existing endpoint name
ENDPOINT_NAME=your-endpoint-name
DEPLOYMENT_NAME=blue
Dále získejte ID azure Resource Manager nasazení a koncového bodu:
# 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`
Následující fragment kódu vytvoří profil automatického škálování:
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
Definujte proměnné pro pracovní prostor, koncový bod a nasazení:
# 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 = []
)
]
}
)
V studio Azure Machine Learning vyberte pracovní prostor a pak na levé straně stránky vyberte Koncové body. Jakmile se zobrazí seznam koncových bodů, vyberte ten, který chcete nakonfigurovat.
Na kartě Podrobnosti pro koncový bod vyberte Konfigurovat automatické škálování.
V části Zvolte, jak škálovat prostředky vyberte Vlastní automatické škálování a zahajte konfiguraci. Pro výchozí podmínku škálování použijte následující hodnoty:
Režim škálování nastavte na Škálovat na základě metriky.
Nastavte Minimum na 2.
Nastavte Maximum na 5.
Nastavte Výchozí na 2.
Vytvoření pravidla pro horizontální navýšení kapacity pomocí metrik
Běžné pravidlo horizontálního navýšení kapacity je pravidlo, které zvyšuje počet instancí virtuálních počítačů, když je průměrné zatížení procesoru vysoké. Následující příklad přidělí další dva uzly (až do maxima), pokud procesor průměrně zatěžuje více než 70 % po dobu pěti minut:
az monitor autoscale rule create \
--autoscale-name $AUTOSCALE_SETTINGS_NAME \
--condition "CpuUtilizationPercentage > 70 avg 5m" \
--scale out 2
Pravidlo je součástí my-scale-settings profilu (autoscale-name odpovídá hodnotě name profilu). Hodnota argumentu condition říká, že by se pravidlo mělo aktivovat, když průměrné využití procesoru mezi instancemi virtuálních počítačů překročí 70 % po dobu pěti minut. Po splnění této podmínky se přidělí další dvě instance virtuálních počítačů.
Poznámka
Další informace o syntaxi rozhraní příkazového řádku najdete v tématu az monitor autoscale.
Toto pravidlo odkazuje na poslední 5minutový průměr hodnoty CPUUtilizationpercentage z argumentů metric_name, time_window a time_aggregation. Pokud je hodnota metriky větší než threshold hodnota 70, přidělí se dvě další instance virtuálních počítačů.
Aktualizujte profil tak, my-scale-settings aby zahrnoval toto pravidlo:
V části Pravidla vyberte Přidat pravidlo. Zobrazí se stránka Pravidla škálování . K vyplnění polí na této stránce použijte následující informace:
Nastavte Název metriky na Procento využití procesoru.
Nastavte Operátor na Větší než a prahovou hodnotu metrikynastavte na 70.
Doba trvání (minuty) nastavte na 5. Jako statistiku agregačního intervalu ponechte Průměr.
Nastavte Možnost Operace na Zvýšit počet o a Počet instancínastavte na 2.
Nakonec vyberte tlačítko Přidat a vytvořte pravidlo.
Vytvoření pravidla pro horizontální snížení kapacity pomocí metrik
Pokud je zatížení nízké, pravidlo škálování může snížit počet instancí virtuálních počítačů. Následující příklad uvolní jeden uzel (minimálně na 2), pokud je zatížení procesoru po dobu 5 minut menší než 30 %:
V části Pravidla vyberte Přidat pravidlo. Zobrazí se stránka Pravidla škálování . K vyplnění polí na této stránce použijte následující informace:
Nastavte Název metriky na Procento využití procesoru.
Nastavte Operátor na Menší než a Prahová hodnota metriky na 30.
Doba trvání (minuty) nastavte na 5.
Nastavte Možnost Operace na Snížit počet o a počet instancínastavte na 1.
Nakonec vyberte tlačítko Přidat a vytvořte pravidlo.
Pokud máte pravidla horizontálního navýšení i snížení kapacity, budou vaše pravidla vypadat podobně jako na následujícím snímku obrazovky. Zadali jste, že pokud průměrné zatížení procesoru po dobu 5 minut překročí 70 %, měly by se přidělit další 2 uzly, a to až do limitu 5. Pokud je zatížení procesoru po dobu 5 minut menší než 30 %, měl by se uvolnit jeden uzel, a to minimálně na 2.
Vytvoření pravidla škálování na základě metrik koncových bodů
Předchozí pravidla se použila pro nasazení. Teď přidejte pravidlo, které platí pro koncový bod. Pokud je v tomto příkladu latence požadavku větší než průměr 70 milisekund po dobu 5 minut, přidělte další uzel.
V dolní části stránky vyberte + Přidat podmínku škálování.
Vyberte Škálovat na základě metriky a pak vyberte Přidat pravidlo. Zobrazí se stránka Pravidla škálování . K vyplnění polí na této stránce použijte následující informace:
Nastavte zdroj metriky na Jiný prostředek.
Nastavte Typ prostředku na Online koncové body služby Machine Learning.
Nastavte Prostředek na koncový bod.
Nastavte název metriky na Request latency (Latence požadavku).
Nastavte Operátor na Větší než a nastavte prahovou hodnotu metriky na 70.
Nastavte Dobu trvání (minuty) na 5.
Nastavte Operaci na Zvýšit počet o a nastavte Počet instancí na 1.
Vytvoření pravidel škálování na základě plánu
Můžete také vytvořit pravidla, která platí jenom v určitých dnech nebo v určitých časech. V tomto příkladu je počet uzlů o víkendu nastavený na 2.
# 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