V tomto článku se dozvíte, jak spravovat využití prostředků v nasazení konfigurací automatického škálování na základě metrik a plánů. Proces automatického škálování umožňuje automaticky spouštět správné množství prostředků pro zpracování zatížení vaší aplikace. Online koncové body ve službě Azure Machine Learning podporují automatické škálování prostřednictvím integrace s funkcí automatického škálování ve službě Azure Monitor.
Automatické škálování služby Azure Monitor umožňuje nastavit pravidla, která při splnění podmínek pravidel aktivují jednu nebo více akcí automatického škálování. Můžete nakonfigurovat škálování na základě metrik (například využití procesoru větší než 70 %), škálování na základě plánu (například pravidla škálování pro špičku pracovní doby) nebo kombinaci těchto dvou. Další informace najdete v tématu Přehled automatického škálování v Microsoft Azure.
Automatické škálování můžete v současné době spravovat pomocí Azure CLI, rozhraní REST API, Azure Resource Manageru, sady Python SDK nebo webu Azure Portal založeného na prohlížeči.
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í z Azure Monitoru najdete v tématu Automatické škálování Microsoft.Insights.
Pokud chcete ke správě služby Azure Monitor použít sadu Python SDK, nainstalujte azure-mgmt-monitor balíček pomocí následujícího příkazu:
pip install azure-mgmt-monitor
Definování profilu automatického škálování
Pokud chcete povolit automatické škálování pro online koncový bod, nejprve definujete profil automatického škálování. Profil určuje výchozí, minimální a maximální kapacitu škálovací sady. Následující příklad ukazuje, jak nastavit počet instancí virtuálního počítače pro výchozí, minimální a maximální kapacitu škálování.
Pokud jste ještě nenastavili výchozí hodnoty pro Azure CLI, uložte výchozí nastavení. Pokud se chcete vyhnout předávání hodnot pro vaše předplatné, pracovní prostor a skupinu prostředků několikrát, spusťte tento kód:
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
Nastavte názvy koncových bodů a nasazení:
# set your existing endpoint name
ENDPOINT_NAME=your-endpoint-name
DEPLOYMENT_NAME=blue
Získejte ID Azure Resource Manageru pro nasazení a koncový bod:
# 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`
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 following code appends a random number to create a unique name.
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 seznamu dostupných koncových bodů vyberte koncový bod, který chcete nakonfigurovat:
Na kartě Podrobnosti pro vybraný koncový bod vyberte Konfigurovat automatické škálování:
U možnosti Zvolit, jak škálovat prostředky, vyberte Vlastní automatické škálování a zahajte konfiguraci.
U možnosti Výchozí podmínka škálování nakonfigurujte následující hodnoty:
Režim škálování: Vyberte měřítko na základě metriky.
Omezení>instancí Minimum: Nastavte hodnotu na 2.
Maximální omezení>instancí: Nastavte hodnotu na 5.
Omezení>instancí Výchozí: Nastavte hodnotu na 2.
Nechte podokno konfigurace otevřené. V další části nakonfigurujete nastavení pravidel .
Vytvoření pravidla škálování na více instancí na základě metrik nasazení
Běžným pravidlem horizontálního navýšení kapacity je zvýšení počtu instancí virtuálních počítačů, když je průměrné zatížení procesoru vysoké. Následující příklad ukazuje, jak přidělit dva více uzlů (až do maxima), pokud je průměrné zatížení procesoru větší než 70 % po dobu 5 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, kde autoscale-name odpovídá name části profilu. Hodnota argumentu pravidla označuje triggery pravidla condition , když "Průměrná spotřeba procesoru mezi instancemi virtuálních počítačů překročí 70 % po dobu 5 minut.". Jakmile je podmínka splněná, přidělí se dvě další instance virtuálních počítačů.
Toto pravidlo odkazuje na posledních 5minutový CPUUtilizationpercentage průměr hodnoty z argumentů metric_name, time_windowa time_aggregation. Pokud je hodnota metriky větší než threshold 70, nasazení přidělí dvě více instancí virtuálních počítačů.
my-scale-settings Aktualizujte profil tak, aby zahrnoval toto pravidlo:
Nechte podokno konfigurace otevřené. V další části upravíte nastavení pravidel .
Vytvoření pravidla horizontálního snížení kapacity na základě metrik nasazení
Pokud je průměrné zatížení procesoru lehké, pravidlo škálování může snížit počet instancí virtuálních počítačů. Následující příklad ukazuje, jak uvolnit jeden uzel na minimálně dva, pokud je zatížení procesoru menší než 30 % po dobu 5 minut.
Pokud nakonfigurujete pravidla horizontálního navýšení kapacity i horizontálního navýšení kapacity, budou vaše pravidla vypadat podobně jako na následujícím snímku obrazovky. Pravidla určují, že pokud průměrné zatížení procesoru překročí 70 % po dobu 5 minut, měly by být přiděleny dva další uzly až do limitu pěti. Pokud je zatížení procesoru méně než 30 % po dobu 5 minut, měl by být uvolněn jeden uzel až do minimálních dvou.
Nechte podokno konfigurace otevřené. V další části zadáte další nastavení škálování.
Vytvoření pravidla škálování na základě metrik koncových bodů
V předchozích částech jste vytvořili pravidla pro horizontální navýšení nebo snížení kapacity na základě metrik nasazení. Můžete také vytvořit pravidlo, které platí pro koncový bod nasazení. V této části se dozvíte, jak přidělit jiný uzel, když je latence požadavku větší než průměr 70 milisekund po dobu 5 minut.
Pokud chcete použít jiné metriky v kódu k nastavení pravidel automatického škálování pomocí Azure CLI nebo sady SDK, přečtěte si tabulku v dostupných metrikách.
Vytvoření pravidla š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 této části vytvoříte pravidlo, které nastaví počet uzlů na 2 o víkendech.
Pokud chcete profil automatického škálování zakázat, vyberte Ruční škálování a pak vyberte Uložit.
Pokud chcete povolit profil automatického škálování, vyberte Vlastní automatické škálování. Studio zobrazí seznam všech rozpoznané profily automatického škálování pro pracovní prostor. Vyberte profil a pak vyberte Uložit , abyste povolili.
Odstranění prostředků
Pokud nasazení nebudete používat, odstraňte prostředky pomocí následujícího postupu.
# 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