Otomatik ölçeklendirme uygulamanızdaki yükü işlemek için tam olarak doğru miktarda kaynak çalıştırır. Çevrimiçi uç noktalar , Azure İzleyici otomatik ölçeklendirme özelliğiyle tümleştirme aracılığıyla otomatik ölçeklendirmeyi destekler.
Azure İzleyici otomatik ölçeklendirme, zengin bir kural kümesini destekler. Ölçüm tabanlı ölçeklendirmeyi (örneğin, CPU kullanımı >%70), zamanlama tabanlı ölçeklendirmeyi (örneğin, yoğun iş saatleri için ölçeklendirme kuralları) veya bir bileşimi yapılandırabilirsiniz. Daha fazla bilgi için bkz. Microsoft Azure'da otomatik ölçeklendirmeye genel bakış.
Bugün Azure CLI, REST, ARM veya tarayıcı tabanlı Azure portal kullanarak otomatik ölçeklendirmeyi yönetebilirsiniz. Python SDK'sı gibi diğer Azure Machine Learning SDK'ları zaman içinde destek ekleyecektir.
Otomatik ölçeklendirmeyi kullanmak için rolün microsoft.insights/autoscalesettings/write otomatik ölçeklendirmeyi yöneten kimliğe atanması gerekir. Bu eyleme izin veren yerleşik veya özel rolleri kullanabilirsiniz. Azure Machine Learning rollerini yönetme hakkında genel yönergeler için bkz. Kullanıcıları ve rolleri yönetme. Azure İzleyici'den otomatik ölçeklendirme ayarları hakkında daha fazla bilgi için bkz. Microsoft.Insights otomatik ölçeklendirme ayarları.
Otomatik ölçeklendirme profilini tanımlama
Bir uç nokta için otomatik ölçeklendirmeyi etkinleştirmek için önce bir otomatik ölçeklendirme profili tanımlarsınız. Bu profil varsayılan, en düşük ve en yüksek ölçek kümesi kapasitesini tanımlar. Aşağıdaki örnek, varsayılan ve en düşük kapasiteyi iki VM örneği, maksimum kapasiteyi ise beş olarak ayarlar:
Aşağıdaki kod parçacığı uç nokta ve dağıtım adlarını ayarlar:
# set your existing endpoint name
ENDPOINT_NAME=your-endpoint-name
DEPLOYMENT_NAME=blue
Ardından, dağıtımın ve uç noktanın Azure Resource Manager kimliğini alın:
# 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`
Aşağıdaki kod parçacığı otomatik ölçeklendirme profilini oluşturur:
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
Çalışma alanı, uç nokta ve dağıtım için değişkenleri tanımlayın:
# 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 = []
)
]
}
)
Azure Machine Learning stüdyosu'da çalışma alanınızı seçin ve ardından sayfanın sol tarafından Uç Noktalar'ı seçin. Uç noktalar listelendikten sonra yapılandırmak istediğiniz uç noktayı seçin.
Uç noktanın Ayrıntılar sekmesinde Otomatik ölçeklendirmeyi yapılandır'ı seçin.
Yapılandırmayı başlatmak için Kaynaklarınızın nasıl ölçeklendirileceğini seçin'in altında Özel otomatik ölçeklendirme'yi seçin. Varsayılan ölçek koşulu için aşağıdaki değerleri kullanın:
Ölçek modunuölçüme göre ölçeklendirin olarak ayarlayın.
Minimum değerini 2 olarak ayarlayın.
En Fazla'yı5 olarak ayarlayın.
Varsayılan'ı2 olarak ayarlayın.
Ölçümleri kullanarak ölçeği genişletmek için bir kural oluşturma
Yaygın bir ölçeği genişletme kuralı, ortalama CPU yükü yüksek olduğunda VM örneklerinin sayısını artıran kuraldır. Aşağıdaki örnek, CPU beş dakika boyunca %70'in üzerinde bir yük ortalaması elde ederse iki düğüm daha ayırır (en yüksek değere kadar):
az monitor autoscale rule create \
--autoscale-name $AUTOSCALE_SETTINGS_NAME \
--condition "CpuUtilizationPercentage > 70 avg 5m" \
--scale out 2
Kural profilin my-scale-settings bir parçasıdır (autoscale-name profilin değeriyle name eşleşir). Bağımsız değişkeninin condition değeri, kuralın "VM örnekleri arasındaki ortalama CPU tüketimi beş dakika boyunca %70'i aştığında" tetiklenmesi gerektiğini söyler. Bu koşul karşılandığında iki vm örneği daha ayrılır.
Bu kural, time_window ve time_aggregationbağımsız değişkenlerinin CPUUtilizationpercentagemetric_nameson 5 dakikalık ortalamasına başvurur. Ölçümün değeri 70'ten threshold büyük olduğunda iki vm örneği daha ayrılır.
my-scale-settings Profili bu kuralı içerecek şekilde güncelleştirin:
Kurallar bölümünde Kural ekle'yi seçin. Ölçek kuralı sayfası görüntülenir. Bu sayfadaki alanları doldurmak için aşağıdaki bilgileri kullanın:
Ölçüm adınıCPU Kullanım Yüzdesi olarak ayarlayın.
İşleç değerini Büyüktür ve Ölçüm eşiğini70 olarak ayarlayın.
Süre (dakika) değerini 5 olarak ayarlayın. Zaman dilimi istatistiğiniOrtalama olarak bırakın.
İşlemiSaymayı artırma ölçütü olarak ayarlayın ve Örnek sayısını2 olarak ayarlayın.
Son olarak, kuralı oluşturmak için Ekle düğmesini seçin.
Ölçümleri kullanarak ölçeklendirilecek bir kural oluşturma
Yük az olduğunda, bir ölçeklendirme kuralı VM örneği sayısını azaltabilir. Aşağıdaki örnek, CPU yükü 5 dakika boyunca %30'un altındaysa en az 2'ye kadar olan tek bir düğümü serbest bırakır:
Kurallar bölümünde Kural ekle'yi seçin. Ölçek kuralı sayfası görüntülenir. Bu sayfadaki alanları doldurmak için aşağıdaki bilgileri kullanın:
Ölçüm adınıCPU Kullanım Yüzdesi olarak ayarlayın.
İşleçdeğerini Küçüktür ve Ölçüm eşiğini30 olarak ayarlayın.
Süre (dakika) değerini 5 olarak ayarlayın.
İşlemiSayıyı azaltma ölçütü olarak ayarlayın ve Örnek sayısını1 olarak ayarlayın.
Son olarak, kuralı oluşturmak için Ekle düğmesini seçin.
Hem ölçeği genişleten hem de daraltan kurallarınız varsa, kurallarınız aşağıdaki ekran görüntüsüne benzer olacaktır. Ortalama CPU yükü 5 dakika boyunca %70'i aşarsa 5 sınırına kadar 2 düğüm daha ayrılması gerektiğini belirttiniz. CPU yükü 5 dakika boyunca %30'dan azsa, en az 2 olan tek bir düğüm serbest bırakılmalıdır.
Uç nokta ölçümlerini temel alan bir ölçeklendirme kuralı oluşturma
Dağıtıma uygulanan önceki kurallar. Şimdi uç nokta için geçerli olan bir kural ekleyin. Bu örnekte, istek gecikme süresi 5 dakika boyunca ortalama 70 milisaniyeden uzunsa başka bir düğüm ayırın.
Sayfanın alt kısmında + Ölçek koşulu ekle'yi seçin.
Ölçüme göre ölçeklendir'i ve ardından Kural ekle'yi seçin. Ölçek kuralı sayfası görüntülenir. Bu sayfadaki alanları doldurmak için aşağıdaki bilgileri kullanın:
Ölçüm kaynağınıDiğer kaynak olarak ayarlayın.
Kaynak türünüMachine Learning çevrimiçi uç noktaları olarak ayarlayın.
Kaynağı uç noktanıza ayarlayın.
Ölçüm adınıİstek gecikmesi olarak ayarlayın.
İşleç değerini Büyüktür ve Ölçüm eşiğini70 olarak ayarlayın.
Süre (dakika) değerini 5 olarak ayarlayın.
İşlemiSaymayı artırma ölçütü olarak ayarlayın ve Örnek sayısını 1 olarak ayarlayın
Zamanlamaya göre ölçeklendirme kuralları oluşturma
Ayrıca yalnızca belirli günlerde veya belirli zamanlarda geçerli olan kurallar da oluşturabilirsiniz. Bu örnekte düğüm sayısı hafta sonu 2 olarak ayarlanmıştır.
# 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