Automatyczne skalowanie punktu końcowego online

DOTYCZY:Rozszerzenie uczenia maszynowego platformy Azure w wersji 2 (bieżąca)Zestaw SDK języka Python azure-ai-ml w wersji 2 (bieżąca)

Automatyczne skalowanie uruchamia odpowiednią ilość zasobów na potrzeby obsługi obciążenia aplikacji. Punkty końcowe online obsługują skalowanie automatyczne dzięki integracji z funkcją automatycznego skalowania usługi Azure Monitor.

Skalowanie automatyczne usługi Azure Monitor obsługuje bogaty zestaw reguł. Można skonfigurować skalowanie oparte na metrykach (na przykład użycie >procesora CPU 70%), skalowanie oparte na harmonogramie (na przykład reguły skalowania w godzinach pracy szczytu) lub kombinację. Aby uzyskać więcej informacji, zobacz Omówienie autoskalowania na platformie Microsoft Azure.

Diagram przedstawiający dodawanie/usuwanie wystąpienia automatycznego skalowania zgodnie z potrzebami

Obecnie możesz zarządzać skalowaniem automatycznym przy użyciu interfejsu wiersza polecenia platformy Azure, rest, usługi ARM lub Azure Portal opartej na przeglądarce. W miarę upływu czasu inne zestawy SDK usługi Azure Machine Learning, takie jak zestaw SDK języka Python, będą dodawać obsługę.

Wymagania wstępne

Definiowanie profilu skalowania automatycznego

Aby włączyć autoskalowania dla punktu końcowego, należy najpierw zdefiniować profil autoskalowania. Ten profil obejmuje definiowanie domyślnej, minimalnej i maksymalnej pojemności zestawu skalowania. W poniższym przykładzie ustawiono domyślną i minimalną pojemność jako dwa wystąpienia maszyn wirtualnych oraz maksymalną pojemność na pięć:

DOTYCZY:Rozszerzenie uczenia maszynowego platformy Azure w wersji 2 (bieżąca)

Poniższy fragment kodu ustawia nazwy punktu końcowego i wdrożenia:

# set your existing endpoint name
ENDPOINT_NAME=your-endpoint-name
DEPLOYMENT_NAME=blue

Następnie pobierz identyfikator usługi Azure Resource Manager wdrożenia i punktu końcowego:

# 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`

Poniższy fragment kodu tworzy profil autoskalu:

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

Uwaga

Aby uzyskać więcej informacji, zobacz stronę referencyjną dotyczącą automatycznego skalowania

Tworzenie reguły skalowania w poziomie przy użyciu metryk

Typowa reguła skalowania w poziomie to taka, która zwiększa liczbę wystąpień maszyn wirtualnych, gdy średnie obciążenie procesora CPU jest wysokie. Poniższy przykład przydzieli dwa kolejne węzły (maksymalnie), jeśli procesor cpu średnio obciążenie większe niż 70% przez pięć minut:

DOTYCZY:Rozszerzenie uczenia maszynowego platformy Azure w wersji 2 (bieżąca)

az monitor autoscale rule create \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --condition "CpuUtilizationPercentage > 70 avg 5m" \
  --scale out 2

Reguła jest częścią my-scale-settings profilu (autoscale-name odpowiada name profilowi). Wartość argumentu condition mówi, że reguła powinna być wyzwalana, gdy "średnie użycie procesora CPU wśród wystąpień maszyn wirtualnych przekracza 70% przez pięć minut". Po spełnieniu tego warunku zostaną przydzielone dwa kolejne wystąpienia maszyn wirtualnych.

Uwaga

Aby uzyskać więcej informacji na temat składni interfejsu wiersza polecenia, zobacz az monitor autoscale.

Tworzenie reguły do skalowania przy użyciu metryk

Gdy obciążenie jest lekkie, skalowanie w regule może zmniejszyć liczbę wystąpień maszyn wirtualnych. Poniższy przykład spowoduje zwolnienie pojedynczego węzła w dół do minimum 2, jeśli obciążenie procesora CPU jest mniejsze niż 30% przez 5 minut:

DOTYCZY:Rozszerzenie uczenia maszynowego platformy Azure w wersji 2 (bieżąca)

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

Tworzenie reguły skalowania na podstawie metryk punktu końcowego

Poprzednie reguły zastosowane do wdrożenia. Teraz dodaj regułę, która ma zastosowanie do punktu końcowego. W tym przykładzie jeśli opóźnienie żądania jest większe niż średnio 70 milisekund przez 5 minut, przydziel inny węzeł.

DOTYCZY:Rozszerzenie uczenia maszynowego platformy Azure w wersji 2 (bieżąca)

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

Tworzenie reguł skalowania na podstawie harmonogramu

Możesz również tworzyć reguły, które mają zastosowanie tylko w określonych dniach lub w określonych godzinach. W tym przykładzie liczba węzłów jest ustawiona na 2 w weekend.

DOTYCZY:Rozszerzenie uczenia maszynowego platformy Azure w wersji 2 (bieżąca)

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"

Usuwanie zasobów

Jeśli nie zamierzasz używać wdrożeń, usuń je:

DOTYCZY:Rozszerzenie uczenia maszynowego platformy Azure w wersji 2 (bieżąca)

# 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

Następne kroki

Aby dowiedzieć się więcej na temat automatycznego skalowania za pomocą usługi Azure Monitor, zobacz następujące artykuły: