BERLAKU UNTUK:
Ekstensi ML Azure CLI v2 (saat ini)
Python SDK Azure-AI-ML v2 (saat ini)
Dalam artikel ini, Anda belajar mengelola penggunaan sumber daya dalam penyebaran dengan mengonfigurasi penskalaan otomatis berdasarkan metrik dan jadwal. Proses skala otomatis memungkinkan Anda secara otomatis menjalankan jumlah sumber daya yang tepat untuk menangani beban pada aplikasi Anda.
Endpoint online di Azure Machine Learning mendukung penskalaan otomatis melalui integrasi dengan fitur penskalaan otomatis di Azure Monitor. Untuk informasi selengkapnya tentang pengaturan autoscale dari Azure Monitor, lihat Microsoft.Insights autoscalesettings.
Skala otomatis Azure Monitor memungkinkan Anda mengatur aturan yang memicu satu atau beberapa tindakan skala otomatis saat kondisi aturan terpenuhi. Anda dapat mendasarkan penskalaan pada metrik seperti pemanfaatan CPU, jadwal seperti jam kerja puncak, atau kombinasi keduanya. Untuk informasi selengkapnya, lihat Gambaran umum skala otomatis di Microsoft Azure.
Anda dapat mengelola penskalakan otomatis dengan menggunakan REST API, Azure Resource Manager, Azure CLI v2, Python SDK v2, atau portal Microsoft Azure melalui studio Azure Machine Learning.
Prasyarat
- Ruang kerja Azure Machine Learning dengan endpoint yang disebarkan. Untuk informasi selengkapnya, lihat Menyebarkan dan menilai model pembelajaran mesin dengan menggunakan titik akhir online.
- Paket Python SDK
azure-mgmt-monitor diinstal dengan menggunakan pip install azure-mgmt-monitor.
- Izin
microsoft.insights/autoscalesettings/write yang ditetapkan ke identitas yang mengelola penskalaan otomatis, melalui peran bawaan atau kustom apa pun yang memungkinkan tindakan ini. Untuk informasi selengkapnya, lihat Mengelola pengguna dan peran.
Menentukan profil skala otomatis
Untuk menerapkan skala otomatis untuk titik akhir online, Anda mengaktifkan pengaturan skala otomatis lalu menentukan profil skala otomatis default yang menentukan kapasitas set skala minimum, maksimum, dan default. Prosedur berikut memungkinkan penskalaan otomatis dan mengatur jumlah instans komputer virtual (VM) untuk kapasitas skala minimum, maksimum, dan default.
Jika Anda belum mengatur default untuk Azure CLI, jalankan perintah berikut untuk menghindari penetapan nilai berulang kali untuk langganan, ruang kerja, dan grup sumber daya Anda.
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
Atur titik akhir dan nama penyebaran:
# set your existing endpoint name
ENDPOINT_NAME=your-endpoint-name
DEPLOYMENT_NAME=blue
Dapatkan ID Azure Resource Manager dari penyebaran dan titik akhir:
# 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`
Buat profil skala otomatis:
az monitor autoscale create \
--name $AUTOSCALE_SETTINGS_NAME \
--resource $DEPLOYMENT_RESOURCE_ID \
--min-count 2 --max-count 5 --count 2
Untuk informasi selengkapnya, lihat referensi az monitor autoscale.
Impor modul yang diperlukan:
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential
from azure.mgmt.monitor import MonitorManagementClient
from azure.mgmt.monitor.models import AutoscaleProfile, ScaleRule, MetricTrigger, ScaleAction, Recurrence, RecurrentSchedule
import random
import datetime
Menentukan variabel untuk ruang kerja, titik akhir, dan penyebaran:
subscription_id = "<YOUR-SUBSCRIPTION-ID>"
resource_group = "<YOUR-RESOURCE-GROUP>"
workspace = "<YOUR-WORKSPACE>"
endpoint_name = "<YOUR-ENDPOINT-NAME>"
deployment_name = "blue"
Dapatkan klien Azure Pembelajaran Mesin dan Azure Monitor:
try:
credential = DefaultAzureCredential()
credential.get_token("https://management.azure.com/.default")
except Exception:
credential = InteractiveBrowserCredential()
ml_client = MLClient(
credential, subscription_id, resource_group, workspace
)
mon_client = MonitorManagementClient(
credential, subscription_id
)
Mendapatkan titik akhir dan objek penyebaran:
deployment = ml_client.online_deployments.get(
deployment_name, endpoint_name
)
endpoint = ml_client.online_endpoints.get(
endpoint_name
)
Buat pengaturan skala otomatis dan profil bernama my_scale_settings:
# 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 = []
)
]
}
)
Di ruang kerja Anda di studio Azure Machine Learning, pilih Titik akhir dari menu sebelah kiri.
Pilih titik akhir untuk dikonfigurasi dari daftar titik akhir yang tersedia.
Pada tab Detail untuk titik akhir yang dipilih, gulir ke bawah dan pilih tautan Konfigurasikan penskalaan otomatis di bawah Penskalaan.
Halaman Penskalaan portal Microsoft Azure untuk penyebaran terbuka. Pada halaman ini, pilih Skala otomatis kustom di bawah Pilih cara menskalakan sumber daya Anda.
Di panel Profil default , pilih Skala berdasarkan metrik.
Di bawah Batas instans, atur Minimum ke 2, Maksimum ke 5, dan Default ke 2.
Pilih Simpan di bagian atas halaman.
Membuat aturan peluasan skala berdasarkan metrik penyebaran
Aturan peluasan skala umum meningkatkan jumlah instans VM ketika beban CPU rata-rata tinggi. Contoh berikut menunjukkan cara mengalokasikan dua simpul lagi, hingga maksimum, jika beban rata-rata CPU lebih besar dari 70% selama lima menit.
az monitor autoscale rule create \
--autoscale-name $AUTOSCALE_SETTINGS_NAME \
--condition "CpuUtilizationPercentage > 70 avg 5m" \
--scale out 2
Aturan adalah bagian my-scale-settings dari profil, di mana autoscale-name cocok dengan name bagian profil. Nilai condition argumen menunjukkan bahwa aturan memicu ketika konsumsi CPU rata-rata di antara instans VM melebihi 70% selama lima menit. Autoscaling mengalokasikan dua instans VM tambahan ketika kondisi terpenuhi.
Untuk informasi selengkapnya, lihat referensi sintaks Azure CLI az monitor autoscale.
Membuat definisi aturan:
rule_scale_out = ScaleRule(
metric_trigger = MetricTrigger(
metric_name="CpuUtilizationPercentage",
metric_resource_uri = deployment.id,
time_grain = datetime.timedelta(minutes = 1),
statistic = "Average",
operator = "GreaterThan",
time_aggregation = "Last",
time_window = datetime.timedelta(minutes = 5),
threshold = 70
),
scale_action = ScaleAction(
direction = "Increase",
type = "ChangeCount",
value = 2,
cooldown = datetime.timedelta(hours = 1)
)
)
Aturan ini mengacu pada rata-rata 5 menit terakhir dari nilai CPUUtilizationpercentage dari argumen metric_name, time_window, dan time_aggregation. Ketika nilai metrik lebih besar dari threshold 70, penyebaran akan mengalokasikan dua instans VM tambahan.
my-scale-settings Perbarui profil untuk menyertakan aturan ini.
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 = [
rule_scale_out
]
)
]
}
)
Pada halaman Penskalakan Profil default , pilih tautan Tambahkan aturan di bagian Aturan .
Pada halaman Aturan skala, konfigurasikan nilai berikut ini:
-
Nama metrik: Pilih Persentase Pemanfaatan CPU.
-
Operator: Pilih Lebih Besar dari.
-
Ambang batas metrik: Atur ke 70.
-
Durasi (menit): Atur ke 5.
-
Statistik tingkat pencacahan waktu: Pilih Rata-rata.
-
Operasi: Pilih Tambah jumlah dengan.
-
Jumlah instans: Atur ke 2.
Pilih Tambahkan.
Pada halaman Penskalakan , pilih Simpan.
Membuat aturan penyempurnaan berdasarkan metrik penyebaran
Aturan pengurangan skala dapat mengurangi jumlah instans VM saat beban CPU rata-rata ringan. Contoh berikut menunjukkan cara merilis satu simpul, hingga minimal dua, jika beban CPU kurang dari 30% selama lima menit.
az monitor autoscale rule create \
--autoscale-name $AUTOSCALE_SETTINGS_NAME \
--condition "CpuUtilizationPercentage < 25 avg 5m" \
--scale in 1
Buat definisi aturan.
rule_scale_in = ScaleRule(
metric_trigger = MetricTrigger(
metric_name="CpuUtilizationPercentage",
metric_resource_uri = deployment.id,
time_grain = datetime.timedelta(minutes = 1),
statistic = "Average",
operator = "LessThan",
time_aggregation = "Last",
time_window = datetime.timedelta(minutes = 5),
threshold = 30
),
scale_action = ScaleAction(
direction = "Decrease",
type = "ChangeCount",
value = 1,
cooldown = datetime.timedelta(hours = 1)
)
)
my-scale-settings Perbarui profil untuk menyertakan aturan ini.
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 = [
rule_scale_out,
rule_scale_in
]
)
]
}
)
Langkah-langkah berikut menyesuaikan konfigurasi Aturan untuk mendukung aturan skala.
Pada halaman Penskalakan portal Microsoft Azure dengan Skala otomatis kustom dipilih, pilih Skalakan berdasarkan metrik, lalu pilih tautan Tambahkan aturan .
Pada halaman Aturan skala, konfigurasikan nilai berikut ini:
-
Nama metrik: Pilih Persentase Pemanfaatan CPU.
-
Operator: Ditetapkan menjadi Kurang dari.
-
Ambang batas metrik: Atur ke 30.
-
Durasi (menit): Atur ke 5.
-
Statistik tingkat pencacahan waktu: Pilih Rata-rata.
-
Operasi: Pilih Kurangi hitungan sebesar.
-
Jumlah instans: Atur ke 1.
Pilih Tambahkan.
Pada halaman Penskalakan , pilih Simpan.
Jika Anda mengonfigurasi aturan peluasan skala dan penyusutan skala, Aturan Anda untuk profil Default terlihat mirip dengan cuplikan layar berikut. Aturan menentukan bahwa jika beban CPU rata-rata melebihi 70% selama 5 menit, dua simpul lagi harus dialokasikan, hingga batas lima. Jika beban CPU kurang dari 30% selama 5 menit, satu node harus dilepaskan, hingga minimal dua.
Membuat aturan skala berdasarkan metrik titik akhir
Di bagian sebelumnya, Anda membuat aturan untuk menskalakan masuk atau keluar berdasarkan metrik penyebaran. Anda juga dapat membuat aturan yang berlaku untuk metrik titik akhir penyebaran. Misalnya, Anda dapat mengalokasikan simpul lain ketika latensi permintaan lebih besar dari rata-rata 70 milidetik selama lima menit.
az monitor autoscale rule create \
--autoscale-name $AUTOSCALE_SETTINGS_NAME \
--condition "RequestLatency > 70 avg 5m" \
--scale out 1 \
--resource $ENDPOINT_RESOURCE_ID
Membuat definisi aturan:
rule_scale_out_endpoint = ScaleRule(
metric_trigger = MetricTrigger(
metric_name="RequestLatency",
metric_resource_uri = endpoint.id,
time_grain = datetime.timedelta(minutes = 1),
statistic = "Average",
operator = "GreaterThan",
time_aggregation = "Last",
time_window = datetime.timedelta(minutes = 5),
threshold = 70
),
scale_action = ScaleAction(
direction = "Increase",
type = "ChangeCount",
value = 1,
cooldown = datetime.timedelta(hours = 1)
)
)
Bidang metric_resource_uri aturan ini kini merujuk pada titik akhir bukan implementasi.
my-scale-settings Perbarui profil untuk menyertakan aturan ini.
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 = [
rule_scale_out,
rule_scale_in,
rule_scale_out_endpoint
]
)
]
}
)
Di bagian bawah halaman Penskalaan portal Microsoft Azure dengan Skala otomatis kustom dipilih, pilih tautan Tambahkan kondisi skala .
Di bagian Profil , pilih Skalakan berdasarkan metrik lalu pilih tautan Tambahkan aturan .
Pada halaman Aturan skala, konfigurasikan nilai berikut ini:
-
Sumber metrik: Pilih Sumber daya lain.
-
Jenis sumber daya: Pilih titik akhir online pembelajaran mesin.
-
Sumber Daya: Pilih titik akhir Anda.
-
Nama metrik: Pilih Latensi permintaan.
-
Operator: Atur ke Lebih Besar dari.
-
Ambang batas metrik: Atur ke 70.
-
Durasi (menit): Atur ke 5.
-
Statistik tingkat pencacahan waktu: Pilih Rata-rata.
-
Operasi: Pilih Tambah jumlah dengan.
-
Jumlah instans: Atur ke 1.
Pilih Tambahkan.
Pada halaman Penskalakan , pilih Simpan.
Menemukan metrik lain yang didukung
Anda dapat menggunakan metrik lain saat menyiapkan aturan skala otomatis.
Membuat aturan skala berdasarkan jadwal
Anda dapat membuat aturan skala otomatis yang hanya berlaku pada hari-hari tertentu atau pada waktu tertentu. Misalnya, Anda dapat membuat aturan yang menetapkan jumlah simpul menjadi dua pada akhir pekan.
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"
mon_client.autoscale_settings.create_or_update(
resource_group,
autoscale_settings_name,
parameters = {
"location" : endpoint.location,
"target_resource_uri" : deployment.id,
"profiles" : [
AutoscaleProfile(
name="Default",
capacity={
"minimum" : 2,
"maximum" : 2,
"default" : 2
},
rules=[],
recurrence = Recurrence(
frequency = "Week",
schedule = RecurrentSchedule(
time_zone = "Pacific Standard Time",
days = ["Saturday", "Sunday"],
hours = ["0"],
minutes = ["0"]
)
)
)
]
}
)
Di bagian bawah halaman Penskalaan portal Microsoft Azure dengan Skala otomatis kustom dipilih, pilih Tambahkan kondisi skala.
Di bagian Profil , pilih Skalakan ke jumlah instans tertentu.
Atur Jumlah instans ke 2.
Untuk Jadwal, pilih Ulangi hari tertentu.
Untuk Ulangi setiap, pilih Sabtu dan Minggu.
Pilih Simpan di bagian atas halaman Penskalaan .
Mengaktifkan atau menonaktifkan skala otomatis
Anda dapat mengaktifkan atau menonaktifkan profil skala otomatis tertentu.
az monitor autoscale update \
--autoscale-name $AUTOSCALE_SETTINGS_NAME \
--enabled false
mon_client.autoscale_settings.create_or_update(
resource_group,
autoscale_settings_name,
parameters = {
"location" : endpoint.location,
"target_resource_uri" : deployment.id,
"enabled" : False
}
)
Pada halaman Penskalakan portal Microsoft Azure:
- Untuk menonaktifkan profil skala otomatis yang digunakan, pilih Skala manual, lalu pilih Simpan.
- Untuk mengaktifkan kembali profil skala otomatis, pilih Skala otomatis kustom, lalu pilih Simpan
Menghapus sumber daya
Perintah berikut menghapus profil autoscaling dan titik akhir.
# 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
mon_client.autoscale_settings.delete(
resource_group,
autoscale_settings_name
)
ml_client.online_endpoints.begin_delete(endpoint_name)
Konten terkait