Mengonfigurasi MLflow untuk Azure Pembelajaran Mesin

Artikel ini menjelaskan cara mengonfigurasi MLflow untuk menyambungkan ke ruang kerja Azure Pembelajaran Mesin untuk pelacakan, registri, dan penyebaran.

Ruang kerja Azure Pembelajaran Mesin kompatibel dengan MLflow, yang berarti ruang kerja tersebut dapat bertindak sebagai server MLflow tanpa konfigurasi tambahan. Setiap ruang kerja memiliki URI pelacakan MLflow yang dapat digunakan MLflow untuk menyambungkan ke ruang kerja. Ruang kerja Azure Pembelajaran Mesin sudah dikonfigurasi untuk bekerja dengan MLflow sehingga tidak diperlukan konfigurasi tambahan.

Namun, jika Anda bekerja di luar Azure Pembelajaran Mesin (seperti komputer lokal, Azure Synapse Analytics, atau Azure Databricks), Anda perlu mengonfigurasi MLflow untuk menunjuk ke ruang kerja.

Penting

Saat berjalan di Azure Compute (Azure Pembelajaran Mesin Notebooks, notebook Jupyter yang dihosting di instans komputasi Azure Pembelajaran Mesin, atau pekerjaan yang berjalan di Azure Pembelajaran Mesin kluster komputasi), Anda tidak perlu mengonfigurasi URI pelacakan. Ini secara otomatis dikonfigurasi untuk Anda.

Prasyarat

Anda memerlukan prasyarat berikut untuk mengikuti tutorial ini:

  • Instal paket mlflow MLflow SDK dan plug-in Azure Pembelajaran Mesin untuk MLflow azureml-mlflow.

    pip install mlflow azureml-mlflow
    

    Tip

    Anda dapat menggunakan mlflow-skinny paket, yang merupakan paket MLflow ringan tanpa penyimpanan SQL, server, UI, atau dependensi ilmu data. mlflow-skinny disarankan untuk pengguna yang terutama membutuhkan kemampuan pelacakan dan pengelogan MLflow tanpa mengimpor rangkaian fitur lengkap termasuk penyebaran.

  • Ruang kerja Azure Machine Learning. Anda dapat membuatnya dengan mengikuti tutorial Membuat sumber daya pembelajaran mesin.

  • Jika Anda melakukan pelacakan jarak jauh (yaitu, melacak eksperimen yang berjalan di luar Azure Pembelajaran Mesin), konfigurasikan MLflow untuk mengarah ke URI pelacakan ruang kerja Azure Pembelajaran Mesin Anda. Untuk informasi selengkapnya tentang cara menyambungkan MLflow ke ruang kerja Anda, lihat Mengonfigurasi MLflow untuk Azure Pembelajaran Mesin.

Mengonfigurasi URI pelacakan MLflow

Untuk menyambungkan MLflow ke ruang kerja Azure Pembelajaran Mesin, Anda memerlukan URI pelacakan untuk ruang kerja. Setiap ruang kerja memiliki URI pelacakannya sendiri dan memiliki protokol azureml://.

  1. Dapatkan URI pelacakan untuk ruang kerja Anda:

    BERLAKU UNTUK:ekstensi ml Azure CLI v2 (saat ini)

    1. Masuk dan konfigurasikan ruang kerja Anda:

      az account set --subscription <subscription>
      az configure --defaults workspace=<workspace> group=<resource-group> location=<location> 
      
    2. Anda bisa mendapatkan URI pelacakan menggunakan az ml workspace perintah :

      az ml workspace show --query mlflow_tracking_uri
      
  2. Mengonfigurasi URI pelacakan:

    Kemudian metode set_tracking_uri() tersebut mengarahkan URI pelacakan MLflow ke URI tersebut.

    import mlflow
    
    mlflow.set_tracking_uri(mlflow_tracking_uri)
    

    Tip

    Saat mengerjakan lingkungan bersama, seperti kluster Azure Databricks, kluster Azure Synapse Analytics, atau sejenisnya, berguna untuk mengatur variabel MLFLOW_TRACKING_URI lingkungan di tingkat kluster untuk secara otomatis mengonfigurasi URI pelacakan MLflow untuk menunjuk ke Azure Pembelajaran Mesin untuk semua sesi yang berjalan di kluster daripada melakukannya per sesi.

Mengonfigurasi autentikasi

Setelah pelacakan diatur, Anda juga perlu mengonfigurasi metode autentikasi untuk ruang kerja terkait. Secara default, plugin Azure Pembelajaran Mesin untuk MLflow melakukan autentikasi interaktif dengan membuka browser default untuk meminta kredensial.

Plugin Azure Pembelajaran Mesin untuk MLflow mendukung beberapa mekanisme autentikasi melalui paket azure-identity, yang diinstal sebagai dependensi untuk plugin azureml-mlflow. Metode autentikasi berikut dicoba satu per satu hingga salah satunya berhasil:

  1. Lingkungan: Membaca informasi akun yang ditentukan melalui variabel lingkungan dan menggunakannya untuk mengautentikasi.
  2. Identitas Terkelola: Jika aplikasi disebarkan ke host Azure dengan Identitas Terkelola diaktifkan, aplikasi akan mengautentikasi dengannya.
  3. Azure CLI: Jika pengguna masuk melalui perintah Azure CLI az login , itu mengautentikasi sebagai pengguna tersebut.
  4. Azure PowerShell: Jika pengguna masuk melalui perintah Azure PowerShell Connect-AzAccount , pengguna tersebut akan mengautentikasi sebagai pengguna tersebut.
  5. Browser interaktif: Mengautentikasi pengguna secara interaktif melalui browser default.

Untuk pekerjaan interaktif di mana ada pengguna yang terhubung ke sesi, Anda dapat mengandalkan Autentikasi Interaktif dan karenanya tidak ada tindakan lebih lanjut yang diperlukan.

Peringatan

Autentikasi browser interaktif akan memblokir eksekusi kode saat meminta kredensial. Ini bukan opsi yang cocok untuk autentikasi di lingkungan tanpa pengawas seperti pekerjaan pelatihan. Sebaiknya konfigurasikan mode autentikasi lainnya.

Untuk skenario di mana eksekusi tanpa pengawas diperlukan, Anda harus mengonfigurasi perwakilan layanan untuk berkomunikasi dengan Azure Pembelajaran Mesin.

import os

os.environ["AZURE_TENANT_ID"] = "<AZURE_TENANT_ID>"
os.environ["AZURE_CLIENT_ID"] = "<AZURE_CLIENT_ID>"
os.environ["AZURE_CLIENT_SECRET"] = "<AZURE_CLIENT_SECRET>"

Tip

Saat bekerja pada lingkungan bersama, disarankan untuk mengonfigurasi variabel lingkungan ini di komputasi. Sebagai praktik terbaik, kelola sebagai rahasia dalam instans Azure Key Vault jika memungkinkan. Misalnya, di Azure Databricks Anda dapat menggunakan rahasia dalam variabel lingkungan sebagai berikut dalam konfigurasi kluster: AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}}. Lihat Mereferensikan rahasia dalam variabel lingkungan untuk cara melakukannya di Azure Databricks atau lihat dokumentasi serupa di platform Anda.

Jika Anda lebih suka menggunakan sertifikat alih-alih rahasia, Anda dapat mengonfigurasi variabel AZURE_CLIENT_CERTIFICATE_PATH lingkungan ke jalur ke PEM file sertifikat atau PKCS12 (termasuk kunci privat) dan AZURE_CLIENT_CERTIFICATE_PASSWORD dengan kata sandi file sertifikat, jika ada.

Mengonfigurasi tingkat otorisasi dan izin

Beberapa peran default seperti AzureML Data Scientist atau Contributor sudah dikonfigurasi untuk melakukan operasi MLflow di ruang kerja Azure Pembelajaran Mesin. Jika menggunakan peran kustom, Anda memerlukan izin berikut:

  • Untuk menggunakan pelacakan MLflow:

    • Microsoft.MachineLearningServices/workspaces/experiments/*
    • Microsoft.MachineLearningServices/workspaces/jobs/*
  • Untuk menggunakan registri model MLflow:

    • Microsoft.MachineLearningServices/workspaces/models/*/*

Untuk mempelajari cara memberikan akses untuk perwakilan layanan yang Anda buat atau akun pengguna ke ruang kerja Anda, lihat Memberikan akses.

Pemecahan masalah autentikasi

MLflow mencoba mengautentikasi ke Azure Pembelajaran Mesin pada operasi pertama yang berinteraksi dengan layanan, seperti mlflow.set_experiment() atau mlflow.start_run(). Jika Anda menemukan masalah atau permintaan autentikasi yang tidak terduga selama proses, Anda dapat meningkatkan tingkat pengelogan untuk mendapatkan detail selengkapnya tentang kesalahan:

import logging

logging.getLogger("azure").setLevel(logging.DEBUG)

Atur nama eksperimen (opsional)

Semua eksekusi MLflow dicatat ke eksperimen aktif. Secara default, eksekusi dicatat ke dalam log eksperimen bernama Default yang dibuat secara otomatis untuk Anda. Anda dapat mengonfigurasi eksperimen tempat pelacakan terjadi.

Tip

Saat mengirimkan pekerjaan menggunakan Azure Pembelajaran Mesin CLI v2, Anda dapat mengatur nama eksperimen menggunakan properti experiment_name dalam definisi YAML pekerjaan. Anda tidak perlu mengonfigurasinya pada skrip pelatihan Anda. Lihat YAML: nama tampilan, nama eksperimen, deskripsi, dan tag untuk detailnya.

Konfigurasikan eksperimen Anda dengan menggunakan perintah mlflow.set_experiment()MLflow .

experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(experiment_name)

Dukungan Azure Clouds nonpublik

Plugin Azure Pembelajaran Mesin untuk MLflow dikonfigurasi secara default untuk bekerja dengan cloud Azure global. Namun, Anda dapat mengonfigurasi cloud Azure yang Anda gunakan dengan mengatur variabel AZUREML_CURRENT_CLOUDlingkungan .

import os

os.environ["AZUREML_CURRENT_CLOUD"] = "AzureChinaCloud"

Anda dapat mengidentifikasi cloud yang Anda gunakan dengan perintah Azure CLI berikut:

az cloud list

Cloud saat ini memiliki nilai IsActive yang diatur ke True.

Langkah berikutnya

Sekarang setelah lingkungan Anda terhubung ke ruang kerja Anda di Azure Pembelajaran Mesin, Anda dapat mulai bekerja dengannya.