Automatické škálování online koncových bodů ve službě Azure Machine Learning

PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)Python SDK azure-ai-ml v2 (aktuální)

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.

Diagram znázorňující, jak automatické škálování podle potřeby přidává a odebírá instance

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.

Požadavky

  • Nasazený koncový bod. Další informace najdete v tématu Nasazení a určení skóre modelu strojového učení pomocí online koncového bodu.

  • 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í.

PLATÍ PRO: Rozšíření Azure CLI ml v2 (aktuální)

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>
  1. Nastavte názvy koncových bodů a nasazení:

    # set your existing endpoint name
    ENDPOINT_NAME=your-endpoint-name
    DEPLOYMENT_NAME=blue
    
  2. 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`
    
  3. Vytvořte profil automatického škálování:

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

Poznámka:

Další informace najdete v tématu az monitor autoscale reference.

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:

PLATÍ PRO: Rozšíření Azure CLI ml v2 (aktuální)

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čů.

Poznámka:

Další informace najdete v referenčních informacích k syntaxi Azure CLI az monitor autoscale .

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.

PLATÍ PRO: Rozšíření Azure CLI ml v2 (aktuální)

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

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.

PLATÍ PRO: Rozšíření Azure CLI ml v2 (aktuální)

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

Vyhledání ID podporovaných metrik

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.

PLATÍ PRO: Rozšíření Azure CLI ml v2 (aktuální)

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"

Povolení nebo zakázání automatického škálování

Můžete povolit nebo zakázat konkrétní profil automatického škálování.

PLATÍ PRO: Rozšíření Azure CLI ml v2 (aktuální)

az monitor autoscale update \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --enabled false

Odstranění prostředků

Pokud nasazení nebudete používat, odstraňte prostředky pomocí následujícího postupu.

PLATÍ PRO: Rozšíření Azure CLI ml v2 (aktuální)

# 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