W tym artykule dowiesz się, jak zarządzać użyciem zasobów we wdrożeniu, konfigurując skalowanie automatyczne na podstawie metryk i harmonogramów. Proces automatycznego skalowania umożliwia automatyczne uruchamianie odpowiedniej ilości zasobów w celu obsługi obciążenia aplikacji. Punkty końcowe online w usłudze Azure Machine Learning obsługują skalowanie automatyczne dzięki integracji z funkcją automatycznego skalowania w usłudze Azure Monitor.
Automatyczne skalowanie usługi Azure Monitor umożliwia ustawianie reguł, które wyzwalają co najmniej jedną akcję autoskalowania w przypadku spełnienia warunków reguł. Możesz skonfigurować skalowanie oparte na metrykach (na przykład użycie procesora CPU większe niż 70%), skalowanie oparte na harmonogramie (takie jak reguły skalowania w godzinach szczytu pracy) lub kombinację tych dwóch. Aby uzyskać więcej informacji, zobacz Omówienie autoskalowania na platformie Microsoft Azure.
Obecnie można zarządzać skalowaniem automatycznym przy użyciu interfejsu wiersza polecenia platformy Azure, interfejsów API REST, usługi Azure Resource Manager, zestawu SDK języka Python lub witryny Azure Portal opartej na przeglądarce.
Aby korzystać z autoskalowania, rola microsoft.insights/autoscalesettings/write musi być przypisana do tożsamości, która zarządza autoskalowaniem. Możesz użyć dowolnych wbudowanych lub niestandardowych ról, które zezwalają na tę akcję. Aby uzyskać ogólne wskazówki dotyczące zarządzania rolami w usłudze Azure Machine Learning, zobacz Zarządzanie użytkownikami i rolami. Aby uzyskać więcej informacji na temat ustawień autoskalowania z usługi Azure Monitor, zobacz Microsoft.Insights autoskalowaniesettings.
Aby zarządzać usługą Azure Monitor przy użyciu zestawu SDK języka Python, zainstaluj azure-mgmt-monitor pakiet za pomocą następującego polecenia:
pip install azure-mgmt-monitor
Definiowanie profilu skalowania automatycznego
Aby włączyć automatyczne skalowanie dla punktu końcowego online, należy najpierw zdefiniować profil autoskalowania. Profil określa domyślną, minimalną i maksymalną pojemność zestawu skalowania. W poniższym przykładzie pokazano, jak ustawić liczbę wystąpień maszyn wirtualnych dla domyślnej, minimalnej i maksymalnej pojemności skalowania.
Jeśli nie ustawiono jeszcze ustawień domyślnych dla interfejsu wiersza polecenia platformy Azure, zapisz ustawienia domyślne. Aby uniknąć wielokrotnego przekazywania wartości dla subskrypcji, obszaru roboczego i grupy zasobów, uruchom następujący kod:
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
Ustaw nazwy punktu końcowego i wdrożenia:
# set your existing endpoint name
ENDPOINT_NAME=your-endpoint-name
DEPLOYMENT_NAME=blue
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`
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
Zdefiniuj zmienne dla obszaru roboczego, punktu końcowego i wdrożenia:
# 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 = []
)
]
}
)
Na liście dostępnych punktów końcowych wybierz punkt końcowy do skonfigurowania:
Na karcie Szczegóły wybranego punktu końcowego wybierz pozycję Konfiguruj skalowanie automatyczne:
Aby wybrać opcję Wybierz sposób skalowania zasobów, wybierz pozycję Niestandardowe autoskalowania, aby rozpocząć konfigurację.
W przypadku opcji Domyślny warunek skalowania skonfiguruj następujące wartości:
Tryb skalowania: wybierz pozycję Skaluj na podstawie metryki.
Minimum limitów wystąpień>: ustaw wartość na 2.
Maksymalna liczba wystąpień>: ustaw wartość na 5.
Limity wystąpień>Domyślne: ustaw wartość na 2.
Pozostaw otwarte okienko konfiguracji. W następnej sekcji skonfigurujesz ustawienia Reguły .
Tworzenie reguły skalowania w poziomie na podstawie metryk wdrożenia
Powszechną regułą skalowania w poziomie jest zwiększenie liczby wystąpień maszyn wirtualnych, gdy średnie obciążenie procesora CPU jest wysokie. W poniższym przykładzie pokazano, jak przydzielić dwa więcej węzłów (maksymalnie), jeśli średnie obciążenie procesora CPU jest większe niż 70% przez 5 minut:
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, w którym autoscale-name pasuje do name części profilu. Wartość argumentu reguły condition wskazuje wyzwalacz reguły, gdy "Średnie użycie procesora CPU w wystąpieniach maszyn wirtualnych przekracza 70% przez 5 minut". Gdy warunek zostanie spełniony, zostaną przydzielone dwa kolejne wystąpienia maszyn wirtualnych.
Ta reguła odwołuje się do ostatniej 5-minutowej średniej CPUUtilizationpercentage wartości z argumentów metric_name, time_windowi time_aggregation. Gdy wartość metryki jest większa niż threshold 70, wdrożenie przydziela dwa kolejne wystąpienia maszyn wirtualnych.
Zaktualizuj profil, my-scale-settings aby uwzględnił tę regułę:
Dla opcji Reguły wybierz link Dodaj regułę. Zostanie otwarta strona Reguła skalowania.
Na stronie Reguła skalowania skonfiguruj następujące wartości:
Nazwa metryki: wybierz pozycję Procent wykorzystania procesora CPU.
Operator: ustaw wartość Większe niż.
Próg metryki: ustaw wartość na 70.
Czas trwania (minuty): ustaw wartość na 5.
Statystyka ziarna czasu: wybierz pozycję Średnia.
Operacja: wybierz pozycję Zwiększ liczbę według.
Liczba wystąpień: ustaw wartość na 2.
Wybierz pozycję Dodaj , aby utworzyć regułę:
Pozostaw otwarte okienko konfiguracji. W następnej sekcji dostosujesz ustawienia Reguły .
Tworzenie reguły skalowania w poziomie na podstawie metryk wdrożenia
Gdy średnie obciążenie procesora CPU jest lekkie, reguła skalowania w poziomie może zmniejszyć liczbę wystąpień maszyn wirtualnych. W poniższym przykładzie pokazano, jak zwolnić jeden węzeł w dół do co najmniej dwóch, jeśli obciążenie procesora CPU jest mniejsze niż 30% przez 5 minut.
Poniższe kroki dostosowują konfigurację reguł , aby obsługiwać regułę skalowania.
Dla opcji Reguły wybierz link Dodaj regułę. Zostanie otwarta strona Reguła skalowania.
Na stronie Reguła skalowania skonfiguruj następujące wartości:
Nazwa metryki: wybierz pozycję Procent wykorzystania procesora CPU.
Operator: ustaw wartość Mniejsze niż.
Próg metryki: ustaw wartość na 30.
Czas trwania (minuty): ustaw wartość na 5.
Statystyka ziarna czasu: wybierz pozycję Średnia.
Operacja: wybierz pozycję Zmniejsz liczbę według.
Liczba wystąpień: ustaw wartość na 1.
Wybierz pozycję Dodaj , aby utworzyć regułę:
Jeśli skonfigurujesz reguły skalowania w poziomie i skalowania w poziomie, reguły będą wyglądać podobnie jak na poniższym zrzucie ekranu. Reguły określają, że jeśli średnie obciążenie procesora CPU przekracza 70% przez 5 minut, należy przydzielić dwa kolejne węzły do limitu pięciu. Jeśli obciążenie procesora CPU jest mniejsze niż 30% przez 5 minut, należy zwolnić jeden węzeł, do minimum dwóch.
Pozostaw otwarte okienko konfiguracji. W następnej sekcji określisz inne ustawienia skalowania.
Tworzenie reguły skalowania na podstawie metryk punktu końcowego
W poprzednich sekcjach utworzono reguły skalowania w poziomie lub w oparciu o metryki wdrożenia. Możesz również utworzyć regułę, która ma zastosowanie do punktu końcowego wdrożenia. W tej sekcji dowiesz się, jak przydzielić inny węzeł, gdy opóźnienie żądania jest większe niż średnio 70 milisekund przez 5 minut.
Poniższe kroki umożliwiają kontynuowanie konfiguracji reguły na stronie Niestandardowe skalowanie automatyczne.
W dolnej części strony wybierz link Dodaj warunek skalowania.
Na stronie Warunek skalowania wybierz pozycję Skaluj na podstawie metryki, a następnie wybierz link Dodaj regułę. Zostanie otwarta strona Reguła skalowania.
Na stronie Reguła skalowania skonfiguruj następujące wartości:
Źródło metryki: wybierz pozycję Inny zasób.
Typ zasobu: wybierz pozycję Punkty końcowe online usługi Machine Learning.
Zasób: wybierz punkt końcowy.
Nazwa metryki: wybierz pozycję Opóźnienie żądania.
Operator: ustaw wartość Większe niż.
Próg metryki: ustaw wartość na 70.
Czas trwania (minuty): ustaw wartość na 5.
Statystyka ziarna czasu: wybierz pozycję Średnia.
Operacja: wybierz pozycję Zwiększ liczbę według.
Liczba wystąpień: ustaw wartość na 1.
Wybierz pozycję Dodaj , aby utworzyć regułę:
Znajdowanie identyfikatorów obsługiwanych metryk
Jeśli chcesz użyć innych metryk w kodzie do skonfigurowania reguł skalowania automatycznego przy użyciu interfejsu wiersza polecenia platformy Azure lub zestawu SDK, zobacz tabelę w temacie Dostępne metryki.
Tworzenie reguły skalowania na podstawie harmonogramu
Można również tworzyć reguły, które mają zastosowanie tylko w określonych dniach lub w określonych godzinach. W tej sekcji utworzysz regułę, która ustawia liczbę węzłów na 2 w weekendy.
Poniższe kroki umożliwiają skonfigurowanie reguły z opcjami na stronie Niestandardowe autoskalowanie w programie Studio.
W dolnej części strony wybierz link Dodaj warunek skalowania.
Na stronie Warunek skalowania wybierz pozycję Skaluj do określonej liczby wystąpień, a następnie wybierz link Dodaj regułę. Zostanie otwarta strona Reguła skalowania.
Na stronie Reguła skalowania skonfiguruj następujące wartości:
Liczba wystąpień: ustaw wartość na 2.
Harmonogram: wybierz pozycję Powtórz określone dni.
Ustaw wzorzec harmonogramu: wybierz pozycję Powtarzaj co i sobotę i niedzielę.
Wybierz pozycję Dodaj , aby utworzyć regułę:
Włączanie lub wyłączanie automatycznego skalowania
Możesz włączyć lub wyłączyć określony profil skalowania automatycznego.
Aby wyłączyć profil autoskalowania w użyciu, wybierz pozycję Skalowanie ręczne, a następnie wybierz pozycję Zapisz.
Aby włączyć profil autoskalowania, wybierz pozycję Niestandardowe autoskalowania. Program Studio wyświetla listę wszystkich rozpoznanych profilów skalowania automatycznego dla obszaru roboczego. Wybierz profil, a następnie wybierz pozycję Zapisz , aby włączyć.
Usuwanie zasobów
Jeśli nie zamierzasz używać wdrożeń, usuń zasoby, wykonując następujące kroki.
# 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