Menggunakan Identitas terkelola dengan Azure Machine Learning CLI v1

BERLAKU UNTUK:Python SDK azureml v1

BERLAKU UNTUK: Ekstensi ml Azure CLI v1

Identitas terkelola memungkinkan Anda mengonfigurasi ruang kerja dengan izin minimum yang diperlukan untuk mengakses sumber daya.

Saat mengonfigurasi ruang kerja Pembelajaran Mesin Microsoft Azure dengan cara yang dapat dipercaya, penting untuk memastikan bahwa berbagai layanan yang terkait dengan ruang kerja memiliki tingkat akses yang benar. Misalnya, selama alur kerja pembelajaran mesin, ruang kerja memerlukan akses ke Azure Container Registry (ACR) untuk gambar Docker, dan akun penyimpanan untuk data pelatihan.

Selain itu, identitas terkelola memungkinkan kontrol mendetail atas izin, misalnya Anda dapat memberikan atau mencabut akses dari sumber daya komputasi tertentu ke ACR tertentu.

Dalam artikel ini, Anda akan mempelajari cara menggunakan identitas terkelola untuk:

  • Mengonfigurasi dan menggunakan ACR untuk ruang kerja Pembelajaran Mesin Microsoft Azure Anda tanpa harus mengaktifkan akses pengguna admin ke ACR.
  • Mengakses ACR pribadi di luar ruang kerja Anda, untuk menarik gambar dasar untuk pelatihan atau inferensi.
  • Membuat ruang kerja dengan identitas terkelola yang ditetapkan pengguna untuk mengakses sumber daya terkait.

Prasyarat

Mengonfigurasi identitas dikelola

Dalam beberapa situasi, perlu untuk melarang akses pengguna admin ke Azure Container Registry. Misalnya, ACR dapat dibagikan dan Anda perlu melarang akses admin oleh pengguna lain. Atau, membuat ACR dengan pengguna admin yang diaktifkan tidak diizinkan oleh kebijakan tingkat langganan.

Penting

Saat menggunakan Pembelajaran Mesin Microsoft Azure untuk inferensi pada Azure Container Instance (ACI), akses pengguna admin di ACR diperlukan. Jangan nonaktifkan jika Anda berencana menyebarkan model ke ACI untuk inferensi.

Saat Anda membuat ACR tanpa mengaktifkan akses pengguna admin, identitas terkelola digunakan untuk mengakses ACR untuk membangun dan menarik gambar Docker.

Anda dapat membawa ACR Anda sendiri dengan pengguna admin dinonaktifkan saat Anda membuat ruang kerja. Atau, biarkan Pembelajaran Mesin Microsoft Azure membuat ACR ruang kerja dan menonaktifkan pengguna admin setelahnya.

Membawa ACR Anda sendiri

Jika pengguna admin ACR tidak diizinkan oleh kebijakan langganan, Anda harus terlebih dahulu membuat ACR tanpa pengguna admin, lalu mengaitkannya dengan ruang kerja. Selain itu, jika Anda memiliki ACR yang ada dengan pengguna admin yang dinonaktifkan, Anda dapat melampirkannya ke ruang kerja.

Membuat ACR dari Azure CLI tanpa mengatur argumen --admin-enabled, atau dari portal Microsoft Azure tanpa mengaktifkan pengguna admin. Kemudian, saat membuat ruang kerja Pembelajaran Mesin Microsoft Azure, tentukan ID sumber daya Azure ACR. Contoh berikut menunjukkan pembuatan ruang kerja Azure Machine Learning baru yang menggunakan ACR yang sudah ada:

Tip

Untuk mendapatkan nilai parameter --container-registry, gunakan perintah az acr show untuk menampilkan informasi untuk ACR Anda. Bidang id berisi ID sumber daya untuk ACR Anda.

az ml workspace create -w <workspace name> \
-g <workspace resource group> \
-l <region> \
--container-registry /subscriptions/<subscription id>/resourceGroups/<acr resource group>/providers/Microsoft.ContainerRegistry/registries/<acr name>

Membiarkan Azure Machine Learning service membuat ruang kerja ACR

Jika Anda tidak membawa ACR Anda sendiri, Azure Machine Learning service akan membuatnya untuk Anda ketika melakukan operasi yang membutuhkannya. Misalnya, mengirim pelatihan yang dijalankan ke Komputasi Pembelajaran Mesin, membangun lingkungan, atau menerapkan titik akhir layanan web. ACR yang dibuat oleh ruang kerja akan mengaktifkan pengguna admin, dan Anda perlu menonaktifkan pengguna admin secara manual.

  1. Buat ruang kerja baru

    az ml workspace show -n <my workspace> -g <my resource group>
    
  2. Lakukan tindakan yang memerlukan ACR. Misalnya, tutorial tentang pelatihan model.

  3. Dapatkan nama ACR yang dibuat oleh kluster:

    az ml workspace show -w <my workspace> \
    -g <my resource group>
    --query containerRegistry
    

    Perintah ini mengembalikan nilai yang mirip dengan teks berikut. Anda hanya menginginkan bagian terakhir teks, yaitu nama instans ACR:

    /subscriptions/<subscription id>/resourceGroups/<my resource group>/providers/MicrosoftContainerReggistry/registries/<ACR instance name>
    
  4. Perbarui ACR untuk menonaktifkan pengguna admin:

    az acr update --name <ACR instance name> --admin-enabled false
    

Buat komputasi dengan identitas terkelola untuk mengakses gambar Docker untuk pelatihan

Untuk mengakses ACR ruang kerja, buat kluster komputasi pembelajaran mesin dengan identitas terkelola yang ditetapkan sistem diaktifkan. Anda dapat mengaktifkan identitas dari portal Azure atau Studio saat membuat komputasi, atau dari Azure CLI dengan menggunakan parameter berikut ini. Untuk informasi selengkapnya, lihat menggunakan identitas terkelola dengan kluster komputasi.

Saat membuat kluster komputasi dengan AmlComputeProvisioningConfiguration, gunakan parameter identity_type untuk mengatur tipe identitas terkelola.

Identitas terkelola secara otomatis diberikan peran ACRPull pada ACR ruang kerja untuk memungkinkan menarik gambar Docker untuk pelatihan.

Catatan

Jika Anda membuat komputasi terlebih dahulu, sebelum ACR ruang kerja dibuat, Anda harus menetapkan peran ACRPull secara manual.

Mengakses gambar dasar dari ACR pribadi

Secara default, Pembelajaran Mesin Microsoft Azure menggunakan gambar dasar Docker yang berasal dari repositori publik yang dikelola oleh Microsoft. Kemudian, lingkungan pelatihan atau inferensi Anda dibangun pada gambar-gambar tersebut. Untuk informasi selengkapnya, lihat Apa itu lingkungan ML?.

Untuk menggunakan gambar dasar kustom internal ke perusahaan Anda, Anda dapat menggunakan identitas terkelola untuk mengakses ACR pribadi Anda. Ada dua kasus penggunaan:

  • Gunakan gambar dasar untuk pelatihan apa adanya.
  • Bangun gambar terkelola Pembelajaran Mesin Microsoft Azure dengan gambar kustom sebagai dasar.

Tarik gambar dasar Docker ke kluster komputasi pembelajaran mesin untuk pelatihan apa adanya

Buat kluster komputasi pembelajaran mesin dengan identitas terkelola yang ditetapkan sistem diaktifkan seperti yang dijelaskan sebelumnya. Kemudian, tentukan ID pokok identitas dikelola.

BERLAKU UNTUK: Ekstensi ml Azure CLI v1

az ml computetarget amlcompute identity show --name <cluster name> -w <workspace> -g <resource group>

Secara opsional, Anda dapat memperbarui kluster komputasi untuk menetapkan identitas terkelola yang ditetapkan pengguna:

BERLAKU UNTUK: Ekstensi ml Azure CLI v1

az ml computetarget amlcompute identity assign --name <cluster name> \
-w $mlws -g $mlrg --identities <my-identity-id>

Untuk memungkinkan kluster komputasi menarik gambar dasar, berikan peran ACRPull identitas layanan terkelola pada ACR pribadi

az role assignment create --assignee <principal ID> \
--role acrpull \
--scope "/subscriptions/<subscription ID>/resourceGroups/<private ACR resource group>/providers/Microsoft.ContainerRegistry/registries/<private ACR name>"

Terakhir, saat mengirimkan eksekusi pelatihan, tentukan lokasi gambar dasar dalam definisi lingkungan.

BERLAKU UNTUK:Python SDK azureml v1

from azureml.core import Environment
env = Environment(name="private-acr")
env.docker.base_image = "<ACR name>.azurecr.io/<base image repository>/<base image version>"
env.python.user_managed_dependencies = True

Penting

Untuk memastikan bahwa gambar dasar ditarik langsung ke sumber daya komputasi, atur user_managed_dependencies = True dan jangan tentukan Dockerfile. Jika tidak, Azure Machine Learning service akan mencoba membangun gambar Docker baru dan gagal, karena hanya kluster komputasi yang memiliki akses untuk menarik gambar dasar dari ACR.

Bangun lingkungan yang dikelola Pembelajaran Mesin Microsoft Azure menjadi gambar dasar dari ACR pribadi untuk pelatihan atau inferensi

BERLAKU UNTUK: Ekstensi ml Azure CLI v1

Dalam skenario ini, Azure Machine Learning service membangun lingkungan pelatihan atau inferensi di atas gambar dasar yang Anda berikan dari ACR pribadi. Karena tugas membangun gambar terjadi pada ACR ruang kerja menggunakan Tugas ACR, Anda harus melakukan lebih banyak langkah untuk mengizinkan akses.

  1. Buat identitas terkelola yang ditetapkan pengguna dan berikan identitas ACRPull akses ke ACR pribadi.

  2. Berikan peran Operator Identitas Terkelola ke identitas terkelola yang ditetapkan sistem ruang kerja pada identitas terkelola yang ditetapkan pengguna dari langkah sebelumnya. Peran ini memungkinkan ruang kerja untuk menetapkan identitas terkelola yang ditetapkan pengguna ke Tugas ACR untuk membangun lingkungan terkelola.

    1. Dapatkan ID utama identitas terkelola yang ditetapkan sistem ruang kerja:

      az ml workspace show -w <workspace name> -g <resource group> --query identityPrincipalId
      
    2. Berikan peran Operator Identitas Terkelola:

      az role assignment create --assignee <principal ID> --role managedidentityoperator --scope <user-assigned managed identity resource ID>
      

      ID sumber daya identitas terkelola yang ditetapkan pengguna adalah ID sumber daya Azure dari identitas yang ditetapkan pengguna, dalam format /subscriptions/<subscription ID>/resourceGroups/<resource group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned managed identity name>.

  3. Tentukan ACR eksternal dan ID klien identitas terkelola yang ditetapkan pengguna dalam koneksi ruang kerja dengan menggunakan metode Workspace.set_connection:

    BERLAKU UNTUK:Python SDK azureml v1

    workspace.set_connection(
        name="privateAcr", 
        category="ACR", 
        target = "<acr url>", 
        authType = "RegistryConnection", 
        value={"ResourceId": "<user-assigned managed identity resource id>", "ClientId": "<user-assigned managed identity client ID>"})
    
  4. Setelah konfigurasi selesai, Anda dapat menggunakan gambar dasar dari ACR pribadi saat membangun lingkungan untuk pelatihan atau inferensi. Cuplikan kode berikut menunjukkan cara menentukan gambar dasar ACR dan nama gambar dalam definisi lingkungan:

    BERLAKU UNTUK:Python SDK azureml v1

    from azureml.core import Environment
    
    env = Environment(name="my-env")
    env.docker.base_image = "<acr url>/my-repo/my-image:latest"
    

    Secara opsional, Anda dapat menentukan URL sumber daya identitas terkelola dan ID klien dalam definisi lingkungan itu sendiri dengan menggunakan RegistryIdentity. Jika Anda menggunakan identitas registri secara eksplisit, itu akan mengambil alih koneksi ruang kerja yang ditentukan sebelumnya:

    BERLAKU UNTUK:Python SDK azureml v1

    from azureml.core.container_registry import RegistryIdentity
    
    identity = RegistryIdentity()
    identity.resource_id= "<user-assigned managed identity resource ID>"
    identity.client_id="<user-assigned managed identity client ID>"
    env.docker.base_image_registry.registry_identity=identity
    env.docker.base_image = "my-acr.azurecr.io/my-repo/my-image:latest"
    

Menggunakan gambar Docker untuk inferensi

Setelah mengonfigurasi ACR tanpa pengguna admin seperti yang dijelaskan sebelumnya, Anda dapat mengakses gambar Docker untuk inferensi tanpa kunci admin dari Azure Kubernetes Service (AKS). Saat Anda membuat atau melampirkan AKS ke ruang kerja, perwakilan layanan kluster secara otomatis menetapkan akses ACRPull ke ACR ruang kerja.

Catatan

Jika Anda membawa kluster AKS Anda sendiri, kluster harus mengaktifkan perwakilan layanan, bukan identitas terkelola.

Membuat ruang kerja dengan identitas terkelola yang ditetapkan pengguna

Saat membuat ruang kerja, Anda dapat menentukan identitas terkelola yang ditetapkan pengguna yang akan digunakan untuk mengakses sumber daya terkait: ACR, KeyVault, Storage, dan App Insights.

Penting

Saat membuat ruang kerja dengan identitas terkelola yang ditetapkan pengguna, Anda harus membuat sumber daya terkait sendiri, dan memberikan peran identitas terkelola pada sumber daya tersebut. Gunakan templat ARM penetapan peran untuk membuat penugasan.

Kemudian, gunakan Azure CLI atau Python SDK untuk membuat ruang kerja. Saat menggunakan CLI, tentukan ID menggunakan parameter --primary-user-assigned-identity. Saat menggunakan SDK, gunakan primary_user_assigned_identity. Berikut ini adalah contoh penggunaan Azure CLI dan Python untuk membuat ruang kerja baru menggunakan parameter ini:

Azure CLI

BERLAKU UNTUK: Ekstensi ml Azure CLI v1

az ml workspace create -w <workspace name> -g <resource group> --primary-user-assigned-identity <managed identity ARM ID>

Python

BERLAKU UNTUK:Python SDK azureml v1

from azureml.core import Workspace

ws = Workspace.create(name="workspace name", 
    subscription_id="subscription id", 
    resource_group="resource group name",
    primary_user_assigned_identity="managed identity ARM ID")

Anda juga dapat menggunakan templat ARM untuk membuat ruang kerja dengan identitas terkelola yang ditetapkan pengguna.

Untuk ruang kerja dengan kunci yang dikelola pelanggan untuk enkripsi, Anda dapat meneruskan identitas terkelola yang ditetapkan pengguna untuk mengautentikasi dari penyimpanan ke Key Vault. Gunakan argumen user-assigned-identity-for-cmk-encryption (CLI) atau user_assigned_identity_for_cmk_encryption (SDK) untuk meneruskan identitas terkelola. Identitas terkelola ini dapat sama atau berbeda dengan identitas terkelola yang ditetapkan oleh pengguna utama ruang kerja.

Langkah berikutnya