Menyebarkan ekstensi Azure Pembelajaran Mesin pada kluster AKS atau Arc Kubernetes
Untuk mengaktifkan kluster AKS atau Arc Kubernetes untuk menjalankan pekerjaan pelatihan atau beban kerja inferensi, Anda harus terlebih dahulu menyebarkan ekstensi Azure Pembelajaran Mesin pada kluster AKS atau Arc Kubernetes. Ekstensi Azure Pembelajaran Mesin dibangun pada ekstensi kluster untuk ekstensi AKS dan kluster atau Arc Kubernetes, dan siklus hidupnya dapat dikelola dengan mudah dengan ekstensi k8s Azure CLI.
Dalam artikel ini, Anda dapat mempelajari cara:
- Prasyarat
- Pembatasan
- Meninjau pengaturan konfigurasi ekstensi Azure Pembelajaran Mesin
- Skenario penyebaran ekstensi Azure Pembelajaran Mesin
- Memverifikasi penyebaran ekstensi Azure Pembelajaran Mesin
- Meninjau komponen ekstensi Azure Pembelajaran Mesin
- Mengelola ekstensi Azure Pembelajaran Mesin
Prasyarat
- Kluster AKS yang berjalan di Azure. Jika sebelumnya Anda belum menggunakan ekstensi kluster, Anda perlu mendaftarkan penyedia layanan KubernetesConfiguration.
- Atau kluster Arc Kubernetes sedang aktif dan berjalan. Ikuti petunjuk dalam menyambungkan kluster Kubernetes yang ada ke Azure Arc.
- Jika kluster adalah kluster Azure RedHat OpenShift Service (ARO) atau kluster OpenShift Container Platform (OCP), Anda harus memenuhi langkah-langkah prasyarat lainnya seperti yang didokumenkan dalam artikel Referensi untuk mengonfigurasi kluster Kube.
- Untuk tujuan produksi, kluster Kubernetes harus memiliki minimal 4 core vCPU dan memori 14 GB. Untuk informasi selengkapnya tentang detail sumber daya dan rekomendasi ukuran kluster, lihat Perencanaan sumber daya yang direkomendasikan.
- Kluster yang berjalan di belakang server proksi keluar atau firewall memerlukan konfigurasi jaringan tambahan.
- Pasang atau tingkatkan Azure CLI ke versi 2.24.0 atau yang lebih baru.
- Pasang atau tingkatkan ekstensi
k8s-extension
Azure CLI ke versi 1.2.3 atau yang lebih baru.
Pembatasan
- Penggunaan perwakilan layanan dengan AKStidak didukung oleh Azure Machine Learning. Kluster AKS harus menggunakan identitas terkelola sebagai gantinya. Identitas terkelola yang ditetapkan sistem dan identitas terkelola yang ditetapkan pengguna didukung. Untuk informasi selengkapnya, lihat Menggunakan identitas terkelola di Azure Kubernetes Service.
- Ketika kluster AKS Anda menggunakan prinsipal layanan dikonversi untuk menggunakan Identitas Terkelola, sebelum menginstal ekstensi, semua kumpulan node perlu dihapus dan dibuat ulang, bukan diperbarui secara langsung.
- Penonaktifan akun lokal untuk AKS tidak didukung oleh Azure Machine Learning. Saat Kluster AKS disebarkan, akun lokal diaktifkan secara default.
- Jika kluster AKS Anda memiliki rentang IP Resmi yang diaktifkan untuk mengakses server API, aktifkan rentang IP sarana kontrol Azure Pembelajaran Mesin untuk kluster AKS. Sarana kontrol Azure Machine Learning disebarkan di beberapa wilayah yang dipasangkan. Tanpa akses ke server API, pod pembelajaran mesin tidak dapat disebarkan. Gunakan rentang IP untuk kedua wilayah berpasangan saat mengaktifkan rentang IP dalam kluster AKS.
- Azure Pembelajaran Mesin tidak mendukung melampirkan langganan silang kluster AKS. Jika Anda memiliki kluster AKS dalam langganan yang berbeda, Anda harus terlebih dahulu menyambungkannya ke Azure-Arc dan menentukan dalam langganan yang sama dengan ruang kerja Azure Pembelajaran Mesin Anda.
- Azure Pembelajaran Mesin tidak menjamin dukungan untuk semua fitur tahap pratinjau di AKS. Misalnya, identitas pod Microsoft Entra tidak didukung.
- Jika Anda telah mengikuti langkah-langkah dari dokumen Azure Pembelajaran Mesin AKS v1 untuk membuat atau melampirkan AKS Anda sebagai kluster inferensi, gunakan tautan berikut untuk membersihkan sumber daya terkait azureml-fe warisan sebelum Anda melanjutkan langkah berikutnya.
Meninjau pengaturan konfigurasi ekstensi Azure Machine Learning
Anda dapat menggunakan perintah k8s-extension create
Azure Pembelajaran Mesin CLI untuk menyebarkan ekstensi Azure Pembelajaran Mesin. k8s-extension create
CLI memungkinkan Anda menentukan set pengaturan konfigurasi dalam format key=value
menggunakan parameter --config
atau --config-protected
. Berikut ini adalah daftar pengaturan konfigurasi yang tersedia untuk ditentukan selama penyebaran ekstensi Azure Pembelajaran Mesin.
Nama Kunci Pengaturan Konfigurasi | Deskripsi | Pelatihan | Inferensi | Pelatihan dan Inferensi |
---|---|---|---|---|
enableTraining |
True atau False , default False . Harus diatur ke True untuk penyebaran ekstensi Azure Pembelajaran Mesin dengan pelatihan model Pembelajaran Mesin dan dukungan penilaian batch. |
✓ | T/A | ✓ |
enableInference |
True atau False , default False . Harus diatur ke True untuk penyebaran ekstensi Azure Pembelajaran Mesin dengan dukungan inferensi Pembelajaran Mesin. |
T/A | ✓ | ✓ |
allowInsecureConnections |
True atau False , default False . Harus diatur ke True guna menggunakan titik akhir HTTP inferensi untuk tujuan pengembangan atau pengujian. |
T/A | Opsional | Opsional |
inferenceRouterServiceType |
loadBalancer , nodePort atau clusterIP . Diperlukan jika enableInference=True . |
T/A | ✓ | ✓ |
internalLoadBalancerProvider |
Konfigurasi ini hanya berlaku untuk kluster Azure Kubernetes Service (AKS) sekarang. Atur ke azure diatur ke untuk mengizinkan router inferensi menggunakan load balancer internal. |
T/A | Opsional | Opsional |
sslSecret |
Nama rahasia Kubernetes di azureml namespace. Konfigurasi ini digunakan untuk menyimpan cert.pem (sertifikat TLS/SSL yang dikodekan PEM) dan key.pem (kunci TLS/SSL yang dikodekan PEM), yang diperlukan untuk dukungan titik akhir HTTPS inferensi ketika allowInsecureConnections diatur ke False . Untuk contoh definisi YAML , sslSecret lihat Mengonfigurasi sslSecret. Gunakan konfigurasi ini atau kombinasi pengaturan sslCertPemFile konfigurasi yang dilindungi dan sslKeyPemFile . |
T/A | Opsional | Opsional |
sslCname |
CNAME TLS/SSL digunakan oleh titik akhir HTTPS inferensi. Diperlukan jika allowInsecureConnections=False |
T/A | Opsional | Opsional |
inferenceRouterHA |
True atau False , default True . Secara default, ekstensi Azure Pembelajaran Mesin menyebarkan tiga replika router inferensi untuk ketersediaan tinggi, yang memerlukan setidaknya tiga simpul pekerja dalam kluster. Atur ke False jika kluster Anda memiliki kurang dari tiga node pekerja, dalam hal ini hanya satu layanan router inferensi yang akan disebarkan. |
T/A | Opsional | Opsional |
nodeSelector |
Secara default, sumber daya kubernetes yang disebarkan dan beban kerja pembelajaran mesin Anda disebarkan secara acak ke satu atau beberapa simpul kluster, dan sumber daya DaemonSet disebarkan ke SEMUA simpul. Jika Anda ingin membatasi penyebaran ekstensi dan beban kerja pelatihan/inferensi Anda ke simpul tertentu dengan label key1=value1 dan key2=value2 , gunakan nodeSelector.key1=value1 , nodeSelector.key2=value2 secara sesuai. |
Opsional | Opsional | Opsional |
installNvidiaDevicePlugin |
True atau False , default False . Plugin Perangkat NVIDIA diperlukan untuk beban kerja ML pada perangkat keras GPU NVIDIA. Secara default, penyebaran ekstensi Azure Pembelajaran Mesin tidak akan menginstal Plugin Perangkat NVIDIA terlepas dari kluster Kubernetes memiliki perangkat keras GPU atau tidak. Pengguna dapat menentukan pengaturan ini ke True , untuk menginstalnya, tetapi pastikan untuk memenuhi Prasyarat. |
Opsional | Opsional | Opsional |
installPromOp |
True atau False , default True . Ekstensi Azure Pembelajaran Mesin membutuhkan operator prometheus untuk mengelola prometheus. Atur ke False untuk menggunakan kembali operator prometheus yang ada. Untuk informasi selengkapnya tentang menggunakan kembali operator prometheus yang ada, lihat menggunakan kembali operator prometheus |
Opsional | Opsional | Opsional |
installVolcano |
True atau False , default True . Ekstensi Azure Pembelajaran Mesin memerlukan penjadwal gunung berapi untuk menjadwalkan pekerjaan. Setel ke False untuk menggunakan kembali penjadwal gunung berapi yang ada. Untuk informasi selengkapnya tentang menggunakan kembali penjadwal gunung berapi yang ada, lihat menggunakan kembali penjadwal gunung berapi |
Opsional | T/A | Opsional |
installDcgmExporter |
True atau False , default False . Pengekspor Dcgm dapat mengekspos metrik GPU untuk beban kerja Azure Pembelajaran Mesin, yang dapat dipantau dalam portal Azure. Atur installDcgmExporter ke True untuk menginstal dcgm-exporter. Tetapi jika Anda ingin menggunakan dcgm-exporter Anda sendiri, lihat pengekspor DCGM |
Opsional | Opsional | Opsional |
Nama Kunci Pengaturan yang Dilindungi Konfigurasi | Deskripsi | Pelatihan | Inferensi | Pelatihan dan Inferensi |
---|---|---|---|---|
sslCertPemFile , sslKeyPemFile |
Jalur ke sertifikat TLS/SSL dan file kunci (dikodekan PEM), diperlukan untuk penyebaran ekstensi Azure Pembelajaran Mesin dengan dukungan titik akhir HTTPS inferensi, ketika allowInsecureConnections diatur ke False. Catatan File PEM dengan frase sandi yang dilindungi tidak didukung |
T/A | Opsional | Opsional |
Seperti yang Anda lihat dari tabel pengaturan konfigurasi, kombinasi pengaturan konfigurasi yang berbeda memungkinkan Anda menyebarkan ekstensi Azure Pembelajaran Mesin untuk skenario beban kerja ML yang berbeda:
- Untuk pekerjaan pelatihan dan beban kerja inferensi batch, tentukan
enableTraining=True
- Hanya untuk beban kerja inferensi, tentukan
enableInference=True
- Untuk semua jenis beban kerja ML, tentukan
enableTraining=True
danenableInference=True
Jika Anda berencana untuk menyebarkan ekstensi Azure Pembelajaran Mesin untuk beban kerja inferensi real time dan ingin menentukan enableInference=True
, perhatikan pengaturan konfigurasi berikut yang terkait dengan beban kerja inferensi real time:
azureml-fe
layanan router diperlukan untuk dukungan inferensi real time dan Anda perlu menentukaninferenceRouterServiceType
pengaturan konfigurasi untukazureml-fe
.azureml-fe
dapat disebarkan dengan salah satu hal berikutinferenceRouterServiceType
:- Ketik
LoadBalancer
. Mengeksposazureml-fe
secara eksternal menggunakan penyeimbang beban penyedia cloud. Untuk menentukan nilai ini, pastikan kluster Anda mendukung provisi penyeimbang beban. Perhatikan bahwa sebagian besar kluster Kubernetes lokal mungkin tidak mendukung penyeimbang beban eksternal. - Ketik
NodePort
. Mengeksposazureml-fe
pada setiap IP Node di port statis. Anda dapat menghubungiazureml-fe
, dari luar kluster, dengan meminta<NodeIP>:<NodePort>
. MenggunakanNodePort
juga memungkinkan Anda untuk menyiapkan solusi penyeimbangan beban Anda sendiri dan penghentian TLS/SSL untukazureml-fe
. - Ketik
ClusterIP
. Mengeksposazureml-fe
pada IP internal kluster, dan membuatazureml-fe
hanya dapat dijangkau dari dalam kluster. Agarazureml-fe
dapat melayani permintaan inferensi yang datang dari luar kluster, Anda harus menyiapkan solusi penyeimbangan beban Anda sendiri dan penghentian TLS/SSL untukazureml-fe
.
- Ketik
- Untuk memastikan ketersediaan
azureml-fe
layanan perutean yang tinggi, penyebaran ekstensi Azure Pembelajaran Mesin secara default membuat tiga replikaazureml-fe
untuk kluster yang memiliki tiga simpul atau lebih. Jika kluster Anda memiliki kurang dari 3 node, setelinferenceRouterHA=False
. - Anda juga ingin mempertimbangkan untuk menggunakan HTTPS untuk membatasi akses ke titik akhir model dan mengamankan data yang dikirimkan klien. Untuk tujuan ini, Anda perlu menentukan
sslSecret
setelan konfigurasi atau kombinasi pengaturan yang dilindungi konfigurasisslKeyPemFile
dansslCertPemFile
. - Secara default, penyebaran ekstensi Azure Pembelajaran Mesin mengharapkan pengaturan konfigurasi untuk dukungan HTTPS. Untuk tujuan pengembangan atau pengujian, dukungan HTTP tersedia melalui pengaturan konfigurasi
allowInsecureConnections=True
.
Penyebaran ekstensi Azure Machine Learning - Contoh CLI dan portal Azure
Untuk menyebarkan ekstensi Azure Pembelajaran Mesin dengan CLI, gunakan az k8s-extension create
perintah yang meneruskan nilai untuk parameter wajib.
Kami mencantumkan empat skenario penyebaran ekstensi umum untuk referensi. Untuk menyebarkan ekstensi untuk penggunaan produksi Anda, baca dengan cermat daftar lengkap pengaturan konfigurasi.
Gunakan kluster AKS di Azure untuk memperoleh bukti konsep secara cepat untuk menjalankan semua jenis beban kerja ML, misalnya, untuk menjalankan pekerjaan pelatihan atau untuk menyebarkan model sebagai titik akhir online/batch
Untuk penyebaran ekstensi Azure Pembelajaran Mesin pada kluster AKS, pastikan untuk menentukan
managedClusters
nilai untuk--cluster-type
parameter. Jalankan perintah Azure CLI berikut untuk menyebarkan ekstensi Azure Pembelajaran Mesin:az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True enableInference=True inferenceRouterServiceType=LoadBalancer allowInsecureConnections=True InferenceRouterHA=False --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
Gunakan kluster Arc Kubernetes di luar Azure untuk memperoleh bukti konsep secara cepat, untuk menjalankan pekerjaan pelatihan saja
Untuk penyebaran ekstensi Azure Pembelajaran Mesin pada kluster Arc Kubernetes, Anda harus menentukan
connectedClusters
nilai untuk--cluster-type
parameter. Jalankan perintah Azure CLI berikut untuk menyebarkan ekstensi Azure Pembelajaran Mesin:az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <your-RG-name> --scope cluster
Aktifkan kluster AKS di Azure untuk pelatihan produksi dan beban kerja inferensi untuk penyebaran ekstensi Azure Pembelajaran Mesin di AKS, pastikan untuk menentukan
managedClusters
nilai untuk--cluster-type
parameter. Dengan asumsi kluster Anda memiliki lebih dari tiga node, dan Anda menggunakan load balancer publik Azure dan HTTPS untuk dukungan beban kerja inferensi. Jalankan perintah Azure CLI berikut untuk menyebarkan ekstensi Azure Pembelajaran Mesin:az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True enableInference=True inferenceRouterServiceType=LoadBalancer sslCname=<ssl cname> --config-protected sslCertPemFile=<file-path-to-cert-PEM> sslKeyPemFile=<file-path-to-cert-KEY> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
Aktifkan kluster Arc Kubernetes yang terhubung di mana saja untuk pelatihan produksi dan beban kerja inferensi menggunakan GPU NVIDIA
Untuk penyebaran ekstensi Azure Pembelajaran Mesin pada kluster Arc Kubernetes, pastikan untuk menentukan
connectedClusters
nilai untuk--cluster-type
parameter. Dengan asumsi kluster Anda memiliki lebih dari tiga node, Anda menggunakan jenis layanan NodePort dan HTTPS untuk dukungan beban kerja inferensi, jalankan perintah Azure CLI berikut untuk menyebarkan ekstensi Azure Pembelajaran Mesin:az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True enableInference=True inferenceRouterServiceType=NodePort sslCname=<ssl cname> installNvidiaDevicePlugin=True installDcgmExporter=True --config-protected sslCertPemFile=<file-path-to-cert-PEM> sslKeyPemFile=<file-path-to-cert-KEY> --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <your-RG-name> --scope cluster
Memverifikasi penyebaran ekstensi Azure Pembelajaran Mesin
Jalankan perintah CLI berikut untuk memeriksa detail ekstensi Azure Pembelajaran Mesin:
az k8s-extension show --name <extension-name> --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <resource-group>
Dalam responsnya, cari "nama" dan "provisioningState": "Berhasil". Perhatikan bahwa ini mungkin menampilkan "provisioningState": "Pending" untuk beberapa menit pertama.
Jika provisioningState menunjukkan Berhasil, jalankan perintah berikut di komputer Anda dengan file kubeconfig yang diarahkan ke kluster Anda untuk memeriksa apakah semua pod di bawah namespace "azureml" berada dalam status 'Berjalan':
kubectl get pods -n azureml
Meninjau komponen ekstensi Azure Machine Learning
Setelah penyebaran ekstensi Azure Pembelajaran Mesin selesai, Anda dapat menggunakan kubectl get deployments -n azureml
untuk melihat daftar sumber daya yang dibuat di kluster. Biasanya terdiri dari subset sumber daya berikut per pengaturan konfigurasi yang ditentukan.
Nama sumber daya | Jenis Sumber Daya | Pelatihan | Inferensi | Pelatihan dan Inferensi | Deskripsi | Komunikasi dengan cloud |
---|---|---|---|---|---|---|
relayserver | Penyebaran Kubernetes | ✓ | ✓ | ✓ | Server relai hanya dibuat untuk kluster Arc Kubernetes, dan bukan di kluster AKS. Server relai bekerja dengan Azure Relay untuk berkomunikasi dengan layanan cloud. | Menerima permintaan penciptaan pekerjaan, penyebaran model dari layanan cloud; sinkronkan status pekerjaan dengan layanan cloud. |
gateway | Penyebaran Kubernetes | ✓ | ✓ | ✓ | Gateway digunakan untuk berkomunikasi serta mengirim data bolak-balik. | Kirim node dan informasi sumber daya kluster ke layanan cloud. |
aml-operator | Penyebaran Kubernetes | ✓ | T/A | ✓ | Kelola siklus hidup pekerjaan pelatihan. | Pertukaran token dengan layanan token cloud untuk autentikasi serta otorisasi Azure Container Registry yang digunakan oleh pekerjaan pelatihan. |
metrics-controller-manager | Penyebaran Kubernetes | ✓ | ✓ | ✓ | Mengelola konfigurasi untuk Prometheus | T/A |
{EXTENSION-NAME}-kube-state-metrics | Penyebaran Kubernetes | ✓ | ✓ | ✓ | Ekspor metrik terkait kluster ke Prometheus. | T/A |
{EXTENSION-NAME}-prometheus-operator | Penyebaran Kubernetes | Opsional | Opsional | Opsional | Menyediakan penyebaran asli Kubernetes dan manajemen Prometheus dan komponen pemantauan terkait. | T/A |
amlarc-identity-controller | Penyebaran Kubernetes | T/A | ✓ | ✓ | Minta dan perbarui token Azure Blob/Azure Container Registry melalui identitas terkelola. | Pertukaran token dengan layanan token cloud bagi autentikasi dan otorisasi Azure Container Registry dan Azure Blob yang digunakan oleh inferensi/penyebaran model. |
amlarc-identity-proxy | Penyebaran Kubernetes | T/A | ✓ | ✓ | Minta dan perbarui token Azure Blob/Azure Container Registry melalui identitas terkelola. | Pertukaran token dengan layanan token cloud bagi autentikasi dan otorisasi Azure Container Registry dan Azure Blob yang digunakan oleh inferensi/penyebaran model. |
azureml-fe-v2 | Penyebaran Kubernetes | T/A | ✓ | ✓ | Komponen front-end yang merutekan permintaan inferensi masuk ke layanan yang disebarkan. | Kirimkan log layanan ke Azure Blob. |
inference-operator-controller-manager | Penyebaran Kubernetes | T/A | ✓ | ✓ | Kelola siklus hidup titik akhir inferensi. | T/A |
masuk gunung berapi | Penyebaran Kubernetes | Opsional | T/A | Opsional | Webhook masuk gunung berapi. | T/A |
pengontrol gunung berapi | Penyebaran Kubernetes | Opsional | T/A | Opsional | Kelola siklus hidup pod pekerjaan pelatihan Azure Machine Learning. | T/A |
gunung-penjadwal | Penyebaran Kubernetes | Opsional | T/A | Opsional | Digunakan untuk melakukan penjadwalan pekerjaan di dalam kluster. | T/A |
fluent-bit | Daemonset Kubernetes | ✓ | ✓ | ✓ | Kumpulkan log sistem komponen. | Unggah log sistem komponen ke cloud. |
{EXTENSION-NAME}-dcgm-exporter | Daemonset Kubernetes | Opsional | Opsional | Opsional | dcgm-exporter akan mengekspos metrik GPU untuk Prometheus. | T/A |
nvidia-device-plugin-daemonset | Daemonset Kubernetes | Opsional | Opsional | Opsional | nvidia-device-plugin-daemonset akan mengekspos GPU pada setiap simpul kluster Anda | T/A |
prometheus-prom-prometheus | Statefulset Kubernetes | ✓ | ✓ | ✓ | Kumpulkan dan kirim metrik pekerjaan ke cloud. | Kirim metrik pekerjaan seperti penggunaan cpu/gpu/memori ke cloud. |
Penting
- Sumber daya Azure Relay akan dibuat di bawah Grup Sumber Daya yang sama dengan kluster Arc. Sumber daya ini digunakan untuk berkomunikasi dengan kluster Kubernetes. Mengubahnya akan merusak target komputasi yang terpasang.
- Secara default, sumber daya penyebaran Kubernetes yang disebarkan akan disebarkan secara acak ke 1 atau beberapa simpul pada kluster, dan sumber daya daemonset disebarkan ke SEMUA simpul. Jika Anda ingin membatasi penyebaran ekstensi ke simpul tertentu, gunakan
nodeSelector
pengaturan konfigurasi yang dijelaskan dalam tabel pengaturan konfigurasi.
Catatan
- {EXTENSION-NAME}: adalah nama ekstensi yang ditentukan dengan perintah
az k8s-extension create --name
CLI.
Mengelola ekstensi Azure Pembelajaran Mesin
Memperbarui, mencantumkan, menampilkan, dan menghapus ekstensi Azure Pembelajaran Mesin.
- Untuk kluster AKS tanpa Azure Arc tersambung, lihat Menyebarkan dan mengelola ekstensi kluster.
- Untuk Kubernetes dengan dukungan Azure Arc, lihat Menyebarkan dan mengelola ekstensi kluster Kubernetes dengan dukungan Azure Arc.