Bagikan melalui


Mengonfigurasi MLflow untuk Azure Machine Learning

Artikel ini menjelaskan cara mengonfigurasi MLflow untuk menyambungkan ke ruang kerja Azure Pembelajaran Mesin untuk pelacakan, manajemen 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, Anda perlu mengonfigurasi MLflow untuk menunjuk ke ruang kerja. Lingkungan yang terpengaruh termasuk komputer lokal Anda, Azure Synapse Analytics, dan Azure Databricks.

Penting

Saat Anda menggunakan infrastruktur komputasi Azure, Anda tidak perlu mengonfigurasi URI pelacakan. Ini secara otomatis dikonfigurasi untuk Anda. Lingkungan dengan konfigurasi otomatis termasuk notebook Azure Pembelajaran Mesin, notebook Jupyter yang dihosting di instans komputasi Azure Pembelajaran Mesin, dan pekerjaan yang berjalan di kluster komputasi Azure Pembelajaran Mesin.

Prasyarat

  • Paket MLflow SDK mlflow dan plugin Azure Pembelajaran Mesin azureml-mlflow untuk MLflow. Anda dapat menggunakan perintah berikut untuk menginstal perangkat lunak ini:

    pip install mlflow azureml-mlflow
    

    Petunjuk / Saran

    Alih-alih mlflow, pertimbangkan untuk menggunakan mlflow-skinny. Paket ini adalah paket MLflow ringan tanpa penyimpanan SQL, server, UI, atau dependensi ilmu data. Disarankan untuk pengguna yang terutama membutuhkan kemampuan pelacakan dan pengelogan MLflow tetapi tidak ingin mengimpor rangkaian fitur lengkap, termasuk penyebaran.

  • Ruang kerja Azure Machine Learning. Untuk membuat ruang kerja, lihat Membuat sumber daya yang Anda butuhkan untuk memulai.

  • Izin akses untuk melakukan operasi MLflow di ruang kerja Anda. Untuk daftar operasi dan izin yang diperlukan, lihat Operasi MLflow.

Mengonfigurasi URI pelacakan MLflow

Untuk melakukan pelacakan jarak jauh, atau melacak eksperimen yang berjalan di luar Azure Pembelajaran Mesin, konfigurasikan MLflow untuk menunjuk ke URI pelacakan ruang kerja Azure Pembelajaran Mesin Anda.

Untuk menyambungkan MLflow ke ruang kerja Azure Pembelajaran Mesin, Anda memerlukan URI pelacakan ruang kerja. Setiap ruang kerja memiliki URI pelacakannya sendiri, yang dimulai dengan 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-ID>
      az configure --defaults workspace=<workspace-name> group=<resource-group-name> location=<location> 
      
    2. Dapatkan URI pelacakan dengan menggunakan az ml workspace perintah :

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

    set_tracking_uri() Gunakan metode untuk mengatur URI pelacakan MLflow ke URI pelacakan ruang kerja Anda.

    import mlflow
    
    mlflow.set_tracking_uri(mlflow_tracking_uri)
    

    Petunjuk / Saran

    Beberapa skenario melibatkan bekerja di lingkungan bersama seperti kluster Azure Databricks atau kluster Azure Synapse Analytics. Dalam kasus ini, berguna untuk mengatur MLFLOW_TRACKING_URI variabel lingkungan di tingkat kluster daripada untuk setiap sesi. Mengatur variabel di tingkat kluster secara otomatis mengonfigurasi URI pelacakan MLflow untuk menunjuk ke Azure Pembelajaran Mesin untuk semua sesi dalam kluster.

Mengonfigurasi autentikasi

Setelah menyiapkan pelacakan, 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. Tetapi plugin juga mendukung beberapa mekanisme autentikasi lainnya. Paket azure-identity menyediakan dukungan ini. Paket ini diinstal sebagai dependensi plugin azureml-mlflow .

Proses autentikasi mencoba metode berikut, satu demi satu, hingga berhasil:

  1. Lingkungan: Informasi akun yang ditentukan melalui variabel lingkungan dibaca dan digunakan untuk autentikasi.
  2. Identitas terkelola: Jika aplikasi disebarkan ke host Azure dengan identitas terkelola diaktifkan, identitas terkelola digunakan untuk autentikasi.
  3. Azure CLI: Jika Anda menggunakan perintah Azure CLI az login untuk masuk, kredensial Anda digunakan untuk autentikasi.
  4. Azure PowerShell: Jika Anda menggunakan perintah Azure PowerShell Connect-AzAccount untuk masuk, kredensial Anda digunakan untuk autentikasi.
  5. Browser interaktif: Pengguna diautentikasi secara interaktif melalui browser default.

Untuk pekerjaan interaktif di mana ada pengguna yang terhubung ke sesi, Anda dapat mengandalkan autentikasi interaktif. Tidak ada tindakan lebih lanjut yang diperlukan.

Peringatan

Autentikasi browser interaktif memblokir eksekusi kode saat meminta kredensial. Pendekatan ini tidak cocok untuk autentikasi di lingkungan tanpa pengawas seperti pekerjaan pelatihan. Kami menyarankan agar Anda mengonfigurasi mode autentikasi yang berbeda di lingkungan tersebut.

Untuk skenario yang memerlukan eksekusi tanpa pengawas, Anda perlu mengonfigurasi perwakilan layanan untuk berkomunikasi dengan Azure Pembelajaran Mesin. Untuk informasi tentang membuat perwakilan layanan, lihat Mengonfigurasi perwakilan layanan.

Gunakan ID penyewa, ID klien, dan rahasia klien perwakilan layanan Anda dalam kode berikut:

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>"

Petunjuk / Saran

Saat Anda bekerja di lingkungan bersama, kami sarankan Anda mengonfigurasi variabel lingkungan ini di tingkat komputasi. Sebagai praktik terbaik, kelola sebagai rahasia dalam instans Azure Key Vault.

Misalnya, dalam konfigurasi kluster Azure Databricks, Anda dapat menggunakan rahasia dalam variabel lingkungan dengan cara berikut: AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}}. Untuk informasi selengkapnya tentang menerapkan pendekatan ini di Azure Databricks, lihat Mereferensikan rahasia dalam variabel lingkungan, atau lihat dokumentasi untuk platform Anda.

Jika Anda lebih suka menggunakan sertifikat daripada rahasia, Anda dapat mengonfigurasi variabel lingkungan berikut:

  • Atur AZURE_CLIENT_CERTIFICATE_PATH ke jalur file yang berisi sertifikat dan pasangan kunci privat dalam format Privacy Enhanced Mail (PEM) atau Public-Key Cryptography Standards 12 (PKCS #12).
  • Atur AZURE_CLIENT_CERTIFICATE_PASSWORD ke kata sandi file sertifikat, jika menggunakan kata sandi.

Mengonfigurasi tingkat otorisasi dan izin

Beberapa peran default seperti AzureML Data Scientist dan Contributor sudah dikonfigurasi untuk melakukan operasi MLflow di ruang kerja Azure Pembelajaran Mesin. Jika Anda 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 melihat cara memberikan akses ke ruang kerja Anda ke perwakilan layanan yang Anda buat atau ke akun pengguna Anda, lihat Memberikan akses.

Memecahkan 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 mengalami 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 eksperimen bernama Default yang secara otomatis dibuat untuk Anda. Anda dapat mengonfigurasi eksperimen yang digunakan untuk pelacakan.

Petunjuk / Saran

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

Gunakan perintah MLflow mlflow.set_experiment() untuk mengonfigurasi eksperimen Anda.

experiment_name = "experiment_with_mlflow"
mlflow.set_experiment(experiment_name)

Mengonfigurasi dukungan untuk cloud Azure 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 AZUREML_CURRENT_CLOUD variabel lingkungan:

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.

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