Bu makalede, ölçümlere ve zamanlamalara göre otomatik ölçeklendirmeyi yapılandırarak dağıtımdaki kaynak kullanımını yönetmeyi öğreneceksiniz. Otomatik ölçeklendirme işlemi, uygulamanızdaki yükü işlemek için doğru miktarda kaynağı otomatik olarak çalıştırmanıza olanak tanır. Azure Machine Learning'deki çevrimiçi uç noktalar , Azure İzleyici'deki otomatik ölçeklendirme özelliğiyle tümleştirme aracılığıyla otomatik ölçeklendirmeyi destekler.
Azure İzleyici otomatik ölçeklendirme, kuralların koşulları karşılandığında bir veya daha fazla otomatik ölçeklendirme eylemini tetikleyen kurallar ayarlamanıza olanak tanır. Ölçüm tabanlı ölçeklendirmeyi (CPU kullanımı %70'in üzerinde olması gibi), zaman tabanlı ölçeklendirmeyi (yoğun iş saatleri için ölçeklendirme kuralları gibi) veya ikisinin birleşimini yapılandırabilirsiniz. Daha fazla bilgi için bkz . Microsoft Azure'da otomatik ölçeklendirmeye genel bakış.
Şu anda Azure CLI, REST API'leri, Azure Resource Manager, Python SDK'sı veya tarayıcı tabanlı Azure portalını kullanarak otomatik ölçeklendirmeyi yönetebilirsiniz.
Önkoşullar
Dağıtılan uç nokta. Daha fazla bilgi için bkz . Çevrimiçi uç nokta kullanarak makine öğrenmesi modelini dağıtma ve puanlandırma.
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ı.
Azure İzleyici hizmetini yönetmek üzere Python SDK'sını kullanmak için aşağıdaki komutu kullanarak paketi yükleyin azure-mgmt-monitor :
pip install azure-mgmt-monitor
Otomatik ölçeklendirme profilini tanımlama
Çevrimiçi uç nokta için otomatik ölçeklendirmeyi etkinleştirmek için önce bir otomatik ölçeklendirme profili tanımlarsınız. Profil varsayılan, en düşük ve en yüksek ölçek kümesi kapasitesini belirtir. Aşağıdaki örnekte, varsayılan, en düşük ve en yüksek ölçek kapasitesi için sanal makine (VM) örneklerinin sayısını ayarlama işlemi gösterilmektedir.
Azure CLI için varsayılan ayarları henüz ayarlamadıysanız varsayılan ayarlarınızı kaydedin. Aboneliğinizin, çalışma alanınızın ve kaynak grubunuzun değerlerinin birden çok kez geçirilmesini önlemek için şu kodu çalıştırın:
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
Uç nokta ve dağıtım adlarını ayarlayın:
# set your existing endpoint name
ENDPOINT_NAME=your-endpoint-name
DEPLOYMENT_NAME=blue
Dağıtım 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`
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 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 = []
)
]
}
)
Azure Machine Learning stüdyosu'da çalışma alanınıza gidin ve sol menüden Uç Noktalar'ı seçin.
Kullanılabilir uç noktalar listesinde yapılandırılan uç noktayı seçin:
Seçili uç noktanın Ayrıntılar sekmesinde Otomatik ölçeklendirmeyi yapılandır'ı seçin:
Kaynaklarınızın nasıl ölçeklendirileceğini seçin seçeneği için Özel otomatik ölçeklendirme'yi seçerek yapılandırmayı başlatın.
Varsayılan ölçeklendirme koşulu seçeneği için aşağıdaki değerleri yapılandırın:
Ölçek modu: Ölçüme göre ölçeklendir'i seçin.
Örnek sınırları>Minimum: Değeri 2 olarak ayarlayın.
Örnek sınırları>Üst Sınır: Değeri 5 olarak ayarlayın.
Örnek sınırları>Varsayılan: Değeri 2 olarak ayarlayın.
Yapılandırma bölmesini açık bırakın. Sonraki bölümde Kurallar ayarlarını yapılandıracaksınız.
Dağıtım ölçümlerini temel alan ölçek genişletme kuralı oluşturma
Yaygın bir ölçeği genişletme kuralı, ortalama CPU yükü yüksek olduğunda VM örneği sayısını artırmaktır. Aşağıdaki örnekte, CPU ortalama yükü 5 dakika boyunca %70'in üzerindeyse iki düğümün (en fazla) nasıl ayrılacakları gösterilmektedir:
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 ve profilin autoscale-name bölümüyle name eşleşir. Kural condition bağımsız değişkeninin değeri, "VM örnekleri arasındaki ortalama CPU tüketimi 5 dakika boyunca %70'i aştığında" kuralın tetiklediğini gösterir. Koşul karşılandığında iki VM örneği daha ayrılır.
Bu kural , time_windowve time_aggregationbağımsız değişkenlerindeki metric_namedeğerin CPUUtilizationpercentage son 5 dakikalık ortalamasına başvurur. Ölçümün değeri 70'ten threshold büyük olduğunda dağıtım iki vm örneği daha ayırır.
my-scale-settings Profili bu kuralı içerecek şekilde güncelleştirin:
Aşağıdaki adımlar otomatik ölçeklendirme yapılandırmasıyla devam ediyor.
Kurallar seçeneği için Kural ekle bağlantısını seçin. Ölçek kuralı sayfası açılır.
Ölçek kuralı sayfasında aşağıdaki değerleri yapılandırın:
Ölçüm adı: CPU Kullanım Yüzdesi'ne tıklayın.
İşleç: Büyüktür olarak ayarlayın.
Ölçüm eşiği: Değeri 70 olarak ayarlayın.
Süre (dakika): Değeri 5 olarak ayarlayın.
Zaman dilimi istatistiği: Ortalama'ya tıklayın.
İşlem: Sayıyı artırma ölçütü'ne tıklayın.
Örnek sayısı: Değeri 2 olarak ayarlayın.
Kuralı oluşturmak için Ekle'yi seçin:
Yapılandırma bölmesini açık bırakın. Sonraki bölümde Kurallar ayarlarını ayarlarsınız.
Dağıtım ölçümlerini temel alan ölçek daraltma kuralı oluşturma
Ortalama CPU yükü hafif olduğunda, ölçek daraltma kuralı VM örneği sayısını azaltabilir. Aşağıdaki örnek, CPU yükü 5 dakika boyunca %30'un altındaysa tek bir düğümün en az iki düğüme nasıl bırakılmasını gösterir.
Aşağıdaki adımlar Kural yapılandırmasını bir ölçek kuralı destekleyecek şekilde ayarlar.
Kurallar seçeneği için Kural ekle bağlantısını seçin. Ölçek kuralı sayfası açılır.
Ölçek kuralı sayfasında aşağıdaki değerleri yapılandırın:
Ölçüm adı: CPU Kullanım Yüzdesi'ne tıklayın.
İşleç: Küçüktür olarak ayarlayın.
Ölçüm eşiği: Değeri 30 olarak ayarlayın.
Süre (dakika): Değeri 5 olarak ayarlayın.
Zaman dilimi istatistiği: Ortalama'ya tıklayın.
İşlem: Sayıyı azaltma ölçütü'ne tıklayın.
Örnek sayısı: Değeri 1 olarak ayarlayın.
Kuralı oluşturmak için Ekle'yi seçin:
Hem ölçeği genişletme hem de ölçeklendirme kurallarını yapılandırdığınızda, kurallarınız aşağıdaki ekran görüntüsüne benzer. Kurallar, ortalama CPU yükünün 5 dakika boyunca %70'i aşması durumunda beş sınırına kadar iki düğüm daha ayrılması gerektiğini belirtir. CPU yükü 5 dakika boyunca %30'un altındaysa, en az iki düğüme kadar tek bir düğüm serbest bırakılmalıdır.
Yapılandırma bölmesini açık bırakın. Sonraki bölümde, diğer ölçek ayarlarını belirtirsiniz.
Uç nokta ölçümlerini temel alan ölçek kuralı oluşturma
Önceki bölümlerde dağıtım ölçümlerine göre ölçeği daraltmak veya genişletmek için kurallar oluşturdunuz. Dağıtım uç noktası için geçerli olan bir kural da oluşturabilirsiniz. Bu bölümde, istek gecikme süresi 5 dakika boyunca ortalama 70 milisaniyeden uzun olduğunda başka bir düğümü ayırmayı öğreneceksiniz.
Aşağıdaki adımlar Özel otomatik ölçeklendirme sayfasında kural yapılandırmasına devam ediyor.
Sayfanın en altında Ölçek koşulu ekle bağlantısını seçin.
Ölçeklendirme koşulu sayfasında Ölçüme göre ölçeklendir'i ve ardından Kural ekle bağlantısını seçin.Ölçek kuralı sayfası açılır.
Ölçek kuralı sayfasında aşağıdaki değerleri yapılandırın:
Ölçüm kaynağı: Diğer kaynak'ı seçin.
Kaynak türü: Machine Learning çevrimiçi uç noktalarını seçin.
Kaynak: Uç noktanızı seçin.
Ölçüm adı: İstek gecikme süresi'ne tıklayın.
İşleç: Büyüktür olarak ayarlayın.
Ölçüm eşiği: Değeri 70 olarak ayarlayın.
Süre (dakika): Değeri 5 olarak ayarlayın.
Zaman dilimi istatistiği: Ortalama'ya tıklayın.
İşlem: Sayıyı artırma ölçütü'ne tıklayın.
Örnek sayısı: Değeri 1 olarak ayarlayın.
Kuralı oluşturmak için Ekle'yi seçin:
Desteklenen ölçümler için kimlikleri bulma
Azure CLI veya SDK kullanarak otomatik ölçeklendirme kuralları ayarlamak için koddaki diğer ölçümleri kullanmak istiyorsanız Kullanılabilir ölçümler'deki tabloya bakın.
Zamanlamaya göre ölçek kuralı oluşturma
Ayrıca, yalnızca belirli günlerde veya belirli zamanlarda geçerli olan kurallar oluşturabilirsiniz. Bu bölümde, hafta sonları düğüm sayısını 2 olarak ayarlayan bir kural oluşturacaksınız.
Kullanımdaki bir otomatik ölçeklendirme profilini devre dışı bırakmak için El ile ölçeklendirme'yi ve ardından Kaydet'i seçin.
Otomatik ölçeklendirme profilini etkinleştirmek için Özel otomatik ölçeklendirme'yi seçin. Stüdyo, çalışma alanı için tanınan tüm otomatik ölçeklendirme profillerini listeler. Bir profil seçin ve ardından etkinleştirmek için Kaydet'i seçin.
Kaynakları silme
Dağıtımlarınızı kullanmayacaksanız aşağıdaki adımları izleyerek kaynakları silin.
# 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