Sdílet prostřednictvím


Automatické škálování online koncového bodu

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

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.

Diagram automatického škálování přidávání nebo odebírání instance podle potřeby

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.

Požadavky

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:

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

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í:

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 na referenční stránce pro automatické škálování.

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:

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 (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.

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:

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ů

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.

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

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 je:

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

Další kroky

Další informace o automatickém škálování ve službě Azure Monitor najdete v následujících článcích: