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 využití >procesoru 70 %), škálování na základě plánu (například pravidla škálování pro špičku pracovní doby) nebo kombinaci. Další informace najdete v tématu Přehled automatického škálování v Microsoft Azure.
Dnes můžete spravovat automatické škálování pomocí azure CLI, REST, ARM nebo webu Azure Portal založeného na prohlížeči. Další sady SDK služby Azure Machine Learning, jako je sada Python SDK, časem přidají 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í z Azure Monitoru najdete v tématu Automatické škálování Microsoft.Insights.
Definice profilu automatického škálování
Pokud chcete povolit automatické škálování pro koncový bod, nejprve definujete 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ých bodů a nasazení:
# set your existing endpoint name
ENDPOINT_NAME=your-endpoint-name
DEPLOYMENT_NAME=blue
Dále 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`
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 jsou koncové body uvedené, 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:
Nastavte režim škálování na škálovací kapacitu na základě metriky.
Nastavte minimum na 2.
Nastavte maximum na 5.
Nastavte výchozí hodnotu 2.
Vytvoření pravidla pro horizontální navýšení kapacity s využitím metrik nasazení
Běžným pravidlem 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í dva další uzly (až do maxima), pokud procesor průměruje zatížení větší 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á name profilu). Hodnota argumentu condition říká, že pravidlo by se mělo aktivovat, když průměrná spotřeba procesoru mezi instancemi virtuálních počítačů překročí 70 % po dobu pěti minut. Když je tato podmínka splněná, přidělí se dvě další 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ích 5minutový CPUUtilizationpercentage průměr z argumentů metric_nametime_window a time_aggregation. Pokud je hodnota metriky větší než threshold 70, přidělí se dvě instance virtuálních počítačů.
my-scale-settings Aktualizujte profil tak, aby zahrnoval toto pravidlo:
V části Pravidla vyberte Přidat pravidlo. Zobrazí se stránka Pravidla škálování. K naplně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 hodnotu Větší než a nastavte prahovou hodnotu metriky na 70.
Nastavte dobu trvání (minuty) na 5. Ponechte statistiku agregačního intervalu jako průměr.
Nastavte operaci na Zvýšení počtu a nastavte počet instancí na hodnotu 2.
Nakonec výběrem tlačítka Přidat vytvořte pravidlo.
Vytvoření pravidla pro škálování pomocí metrik nasazení
Pokud je zatížení lehké, škálování v pravidle může snížit počet instancí virtuálních počítačů. Následující příklad uvolní jeden uzel až na 2, pokud je zatížení procesoru méně než 30 % po dobu 5 minut:
V části Pravidla vyberte Přidat pravidlo. Zobrazí se stránka Pravidla škálování. K naplně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 hodnotu Menší než a prahovou hodnotu metriky na 30.
Nastavte dobu trvání (minuty) na 5.
Nastavte operaci na Snížení počtu a nastavte počet instancí na 1.
Nakonec výběrem tlačítka Přidat vytvořte pravidlo.
Pokud máte horizontální navýšení kapacity i škálování v pravidlech, vaše pravidla budou vypadat podobně jako na následujícím snímku obrazovky. Zadali jste, že pokud průměrné zatížení procesoru překročí 70 % po dobu 5 minut, měli byste přidělit 2 další uzly až do limitu 5. Pokud je zatížení procesoru kratší než 30 % po dobu 5 minut, měl by být uvolněn jeden uzel až do 2.
Vytvoření pravidla škálování na základě metrik koncových bodů
Předchozí pravidla použitá pro nasazení. Teď přidejte pravidlo, které platí pro koncový bod. Pokud je latence požadavku v tomto příkladu větší než průměrná 70 milisekund po dobu 5 minut, přidělte jiný uzel.
V dolní části stránky vyberte + Přidat podmínku měřítka.
Vyberte Škálovat na základě metriky a pak vyberte Přidat pravidlo. Zobrazí se stránka Pravidla škálování. K naplně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 latenci požadavku.
Nastavte operátor na hodnotu Větší než a nastavte prahovou hodnotu metriky na 70.
Nastavte dobu trvání (minuty) na 5.
Nastavení operace na zvýšení počtu podle počtu instancí a nastavení počtu instancí na 1
Vyhledání podporovaných ID metrik
Pokud chcete k nastavení pravidel automatického škálování použít jiné metriky v kódu (rozhraní příkazového řádku nebo sady SDK), přečtěte si tabulku v dostupných metrikách.
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ů nastavený na 2 o víkendu.
# 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
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu: https://aka.ms/ContentUserFeedback.