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 , sslSecretlihat 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 dan enableInference=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 menentukan inferenceRouterServiceType pengaturan konfigurasi untuk azureml-fe. azureml-fe dapat disebarkan dengan salah satu hal berikut inferenceRouterServiceType:
    • Ketik LoadBalancer. Mengekspos azureml-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. Mengekspos azureml-fe pada setiap IP Node di port statis. Anda dapat menghubungi azureml-fe, dari luar kluster, dengan meminta <NodeIP>:<NodePort>. Menggunakan NodePort juga memungkinkan Anda untuk menyiapkan solusi penyeimbangan beban Anda sendiri dan penghentian TLS/SSL untuk azureml-fe.
    • Ketik ClusterIP. Mengekspos azureml-fe pada IP internal kluster, dan membuat azureml-fe hanya dapat dijangkau dari dalam kluster. Agar azureml-fe dapat melayani permintaan inferensi yang datang dari luar kluster, Anda harus menyiapkan solusi penyeimbangan beban Anda sendiri dan penghentian TLS/SSL untuk azureml-fe.
  • Untuk memastikan ketersediaan azureml-fe layanan perutean yang tinggi, penyebaran ekstensi Azure Pembelajaran Mesin secara default membuat tiga replika azureml-fe untuk kluster yang memiliki tiga simpul atau lebih. Jika kluster Anda memiliki kurang dari 3 node, setel inferenceRouterHA=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 konfigurasi sslKeyPemFile dan sslCertPemFile.
  • 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

  1. 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>
    
  2. Dalam responsnya, cari "nama" dan "provisioningState": "Berhasil". Perhatikan bahwa ini mungkin menampilkan "provisioningState": "Pending" untuk beberapa menit pertama.

  3. 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.

Langkah berikutnya