Bagikan melalui


Membuat kluster komputasi Azure Machine Learning dengan CLI v1

BERLAKU UNTUK:Ekstensi ml Azure CLI v1Python SDK azureml v1

Pelajari cara membuat dan mengelola klaster komputasi di ruang kerja Azure Machine Learning Anda.

Anda dapat menggunakan klaster komputasi Azure Machine Learning untuk mendistribusikan pelatihan atau proses inferensi batch di seluruh klaster simpul komputasi CPU atau GPU di cloud. Untuk informasi selengkapnya tentang ukuran VM yang menyertakan GPU, lihat ukuran komputer virtual yang dioptimalkan GPU.

Dalam artikel ini, pelajari cara:

  • Membuat kluster komputasi
  • Turunkan biaya klaster komputasi Anda
  • Menyiapkan identitas terkelola untuk klaster

Prasyarat

Apa itu klaster komputasi?

Klaster komputasi Azure Machine Learning adalah infrastruktur komputasi terkelola yang memungkinkan Anda membuat komputasi satu atau multi-simpul dengan mudah. Kluster komputasi adalah sumber daya yang dapat dibagikan dengan pengguna lain di ruang kerja Anda. Komputasi akan diskalakan secara otomatis saat pekerjaan dikirimkan, dan dapat dimasukkan ke dalam Jaringan Virtual Azure. Kluster komputasi tidak mendukung penyebaran IP publik juga di jaringan virtual. Komputasi dijalankan dalam lingkungan terkontainer dan mengemas dependensi model Anda dalam kontainer Docker.

Klaster komputasi dapat menjalankan pekerjaan dengan aman di lingkungan jaringan virtual, tanpa mengharuskan perusahaan untuk membuka port SSH. Pekerjaan dijalankan dalam lingkungan ter-kontainer dan mengemas dependensi model Anda dalam kontainer Docker.

Batasan

  • Kluster komputasi dapat dibuat di wilayah dan VNet yang berbeda dari ruang kerja Anda. Namun, fungsionalitas ini hanya tersedia menggunakan SDK v2, CLI v2, atau studio. Untuk informasi selengkapnya, lihat versi v2 lingkungan pelatihan yang aman.

  • Saat ini kami hanya mendukung pembuatan (dan tidak memperbarui) klaster melalui templat ARM. Untuk memperbarui komputasi, sebaiknya gunakan SDK, CLI, atau UX untuk saat ini.

  • Azure Machine Learning Compute memiliki batas default, seperti jumlah core yang dapat dialokasikan. Untuk informasi selengkapnya, lihat Mengelola dan meminta kuota untuk sumber daya Azure.

  • Azure memungkinkan Anda untuk mengunci sumber daya, sehingga tidak dapat dihapus atau dibaca saja. Jangan terapkan kunci sumber daya ke grup sumber daya yang berisi ruang kerja Anda. Menerapkan kunci ke grup sumber daya yang berisi ruang kerja Anda akan mencegah operasi penskalaan untuk azure Pembelajaran Mesin kluster komputasi. Untuk informasi selengkapnya tentang mengunci sumber daya, lihat Mengunci sumber daya untuk mencegah perubahan tak terduga.

Tip

Klaster umumnya dapat menskalakan hingga 100 simpul selama Anda memiliki kuota yang cukup untuk jumlah inti yang diperlukan. Secara default klaster diatur dengan komunikasi antar-simpul diaktifkan antara simpul klaster untuk mendukung pekerjaan MPI misalnya. Namun Anda dapat menskalakan klaster Anda ke 1000-an simpul hanya dengan menaikkan tiket dukungan, dan meminta untuk mengizinkan daftar langganan Anda, atau ruang kerja, atau klaster tertentu untuk menonaktifkan komunikasi antar-simpul.

Buat

Perkiraan waktu: Sekitar 5 menit.

Azure Machine Learning Compute dapat digunakan kembali di seluruh eksekusi. Komputasi dapat dibagikan dengan pengguna lain di ruang kerja dan dipertahankan di antara run, secara otomatis menskalakan simpul ke atas atau ke bawah berdasarkan jumlah yang dijalankan yang dikirimkan, dan max_nodes diatur pada klaster Anda. Pengaturan min_nodes mengontrol simpul minimum yang tersedia.

Inti khusus per wilayah per kuota keluarga VM dan total kuota regional, yang berlaku untuk pembuatan klaster komputasi, bersatu dan dibagikan dengan kuota instans komputasi pelatihan Azure Machine Learning.

Penting

Untuk menghindari biaya saat tidak ada pekerjaan yang berjalan, atur simpul minimum ke 0. Pengaturan ini memungkinkan Azure Machine Learning untuk membatalkan alokasi simpul saat tidak digunakan. Nilai apa pun yang lebih besar dari 0 akan membuat jumlah simpul tetap berjalan, meskipun tidak digunakan.

Komputasi otomatis turun ke nol simpul ketika tidak digunakan. VM khusus dibuat untuk menjalankan pekerjaan Anda sesuai kebutuhan.

Untuk membuat sumber daya Azure Machine Learning Compute persisten di Python, tentukan vm_size dan max_nodes properti. Azure Machine Learning kemudian menggunakan default cerdas untuk properti lain.

  • vm_size: Keluarga VM dari simpul yang dibuat oleh Azure Machine Learning Compute.
  • max_nodes:Jumlah simpul maksimum untuk diskalakan secara otomatis hingga saat Anda menjalankan pekerjaan di Azure Machine Learning Compute.

BERLAKU UNTUK:SDK Python azureml v1

from azureml.core.compute import ComputeTarget, AmlCompute
from azureml.core.compute_target import ComputeTargetException

# Choose a name for your CPU cluster
cpu_cluster_name = "cpucluster"

# Verify that cluster does not exist already
try:
    cpu_cluster = ComputeTarget(workspace=ws, name=cpu_cluster_name)
    print('Found existing cluster, use it.')
except ComputeTargetException:
    # To use a different region for the compute, add a location='<region>' parameter
    compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                           max_nodes=4)
    cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)

cpu_cluster.wait_for_completion(show_output=True)

Anda juga dapat mengonfigurasi beberapa properti tingkat lanjut saat membuat Azure Machine Learning Compute. Properti memungkinkan Anda membuat klaster persisten dengan ukuran tetap, atau dalam Azure Virtual Network yang ada di langganan Anda. Lihat kelas AmlCompute untuk detailnya.

Peringatan

Saat mengatur parameter location, jika itu adalah wilayah yang berbeda dari ruang kerja atau penyimpanan data Anda, Anda mungkin melihat peningkatan latensi jaringan dan biaya transfer data. Latensi dan biaya dapat terjadi saat membuat kluster, dan saat menjalankan tugas di dalamnya.

Turunkan biaya klaster komputasi Anda

Anda juga dapat memilih untuk menggunakan VM berprioritas rendah untuk menjalankan beberapa atau semua beban kerja Anda. VM ini tidak memiliki ketersediaan yang dijamin dan dapat diasingkan saat digunakan. Anda harus memulai ulang pekerjaan yang telah diasingkan.

BERLAKU UNTUK:SDK Python azureml v1

compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                            vm_priority='lowpriority',
                                                            max_nodes=4)

Menyiapkan identitas terkelola

Klaster komputasi Azure Machine Learning juga mendukung identitas terkelola untuk mengautentikasi akses ke sumber daya Azure tanpa menyertakan kredensial dalam kode Anda. Ada dua jenis identitas terkelola:

  • Identitas terkelola yang ditetapkan sistem diaktifkan langsung di kluster komputasi dan instans komputasi Azure Pembelajaran Mesin. Siklus hidup identitas yang ditetapkan sistem secara langsung terkait dengan kluster atau instans komputasi. Jika kluster atau instans komputasi dihapus, Azure secara otomatis membersihkan kredensial dan identitas di ID Microsoft Entra.
  • Identitas terkelola yang ditetapkan pengguna adalah sumber daya Azure mandiri yang disediakan melalui layanan Azure Managed Identity. Anda dapat menetapkan identitas terkelola yang ditetapkan pengguna ke beberapa sumber daya, dan itu bertahan selama yang Anda inginkan. Identitas terkelola ini perlu dibuat sebelumnya dan kemudian diteruskan sebagai identity_id sebagai parameter yang diperlukan.

BERLAKU UNTUK:SDK Python azureml v1

  • Mengonfigurasi identitas terkelola dalam konfigurasi penyediaan Anda:

    • Sistem menetapkan identitas terkelola yang dibuat di ruang kerja bernama ws

      # configure cluster with a system-assigned managed identity
      compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                              max_nodes=5,
                                                              identity_type="SystemAssigned",
                                                              )
      cpu_cluster_name = "cpu-cluster"
      cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)
      
    • Identitas terkelola yang ditetapkan pengguna dibuat di ruang kerja bernama ws

      # configure cluster with a user-assigned managed identity
      compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                              max_nodes=5,
                                                              identity_type="UserAssigned",
                                                              identity_id=['/subscriptions/<subcription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user_assigned_identity>'])
      
      cpu_cluster_name = "cpu-cluster"
      cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)
      
  • Menambahkan identitas terkelola ke klaster komputasi yang sudah ada bernama cpu_cluster

    • Identitas terkelola yang ditetapkan sistem:

      # add a system-assigned managed identity
      cpu_cluster.add_identity(identity_type="SystemAssigned")
      
    • Identitas terkelola yang ditetapkan pengguna:

      # add a user-assigned managed identity
      cpu_cluster.add_identity(identity_type="UserAssigned", 
                                  identity_id=['/subscriptions/<subcription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user_assigned_identity>'])
      

Catatan

Klaster komputasi Azure Machine Learning hanya mendukung satu identitas yang ditetapkan sistem atau beberapa identitas yang ditetapkan pengguna, tidak keduanya secara bersamaan.

Penggunaan identitas terkelola

Identitas terkelola default adalah identitas terkelola yang ditetapkan sistem atau identitas terkelola pertama yang ditetapkan pengguna.

Selama menjalankan ada dua aplikasi identitas:

  1. Sistem ini menggunakan identitas untuk mengatur dudukan penyimpanan pengguna, registri kontainer, dan toko data.

    • Dalam hal ini, sistem akan menggunakan identitas yang dikelola secara default.
  2. Pengguna menerapkan identitas untuk mengakses sumber daya dari dalam kode untuk menjalankan yang dikirimkan

    • Dalam hal ini, berikan client_id sesuai dengan identitas terkelola yang ingin Anda gunakan untuk mengambil kredensial.
    • Atau, dapatkan ID klien identitas yang ditetapkan pengguna melalui variabel DEFAULT_IDENTITY_CLIENT_ID lingkungan.

    Misalnya, untuk mengambil token untuk toko data dengan identitas yang dikelola default:

    client_id = os.environ.get('DEFAULT_IDENTITY_CLIENT_ID')
    credential = ManagedIdentityCredential(client_id=client_id)
    token = credential.get_token('https://storage.azure.com/')
    

Pemecahan Masalah

Ada kemungkinan bahwa beberapa pengguna yang membuat ruang kerja Azure Machine Learning mereka dari portal Microsoft Azure sebelum rilis GA mungkin tidak dapat membuat AmlCompute di ruang kerja itu. Anda dapat menaikkan permintaan dukungan terhadap layanan atau membuat ruang kerja baru melalui portal atau SDK untuk segera membuka blokir diri Anda.

Macet dalam mengubah ukuran

Jika kluster komputasi Azure Machine Learning Anda terlihat macet saat mengubah ukuran (0 -> 0) untuk status node, ini mungkin disebabkan oleh kunci sumber daya Azure.

Azure memungkinkan Anda untuk mengunci sumber daya, sehingga tidak dapat dihapus atau dibaca saja. Mengunci sumber daya dapat menyebabkan hasil yang tidak terduga. Beberapa operasi yang tampaknya tidak memodifikasi sumber daya sebenarnya memerlukan tindakan yang diblokir oleh penguncian.

Dengan Azure Machine Learning, menerapkan kunci hapus ke grup sumber daya ke ruang kerja Anda akan mencegah operasi penskalaan untuk kluster komputasi ML Azure. Untuk mengatasi masalah ini, sebaiknya hapus kunci dari grup sumber daya dan menerapkannya ke item individual dalam grup.

Penting

Jangan menerapkan kunci ke sumber daya berikut:

Nama sumber daya Jenis Sumber Daya
<GUID>-azurebatch-cloudservicenetworksecurityggroup Grup keamanan jaringan
<GUID>-azurebatch-cloudservicepublicip Alamat IP publik
<GUID>-azurebatch-cloudserviceloadbalancer Load Balancer

Sumber daya ini digunakan untuk berkomunikasi dan melakukan operasi seperti penskalaan, kluster komputasi. Menghapus kunci sumber daya dari sumber daya ini akan memungkinkan penskalaan otomatis untuk kluster komputasi Anda.

Untuk informasi selengkapnya tentang penguncian sumber daya, lihat Mengunci sumber daya untuk mencegah perubahan tak terduga.

Langkah berikutnya

Gunakan klaster komputasi Anda untuk: