Mengonfigurasi MLflow untuk Azure Machine Learning
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 Mesinazureml-mlflow
untuk 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. Untuk membuat ruang kerja, lihat tutorial Membuat sumber daya pembelajaran mesin. Tinjau izin akses yang Anda butuhkan untuk melakukan operasi MLflow di ruang kerja Anda.
Jika Anda melakukan pelacakan jarak jauh (yaitu, melacak eksperimen yang berjalan di luar Azure Pembelajaran Mesin), konfigurasikan MLflow untuk mengarahkan 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://
.
Dapatkan URI pelacakan untuk ruang kerja Anda:
BERLAKU UNTUK: Ekstensi ml Azure CLI v2 (saat ini)
Masuk dan konfigurasikan ruang kerja Anda:
az account set --subscription <subscription> az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Anda bisa mendapatkan URI pelacakan menggunakan
az ml workspace
perintah :az ml workspace show --query mlflow_tracking_uri
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:
- Lingkungan: Membaca informasi akun yang ditentukan melalui variabel lingkungan dan menggunakannya untuk mengautentikasi.
- Identitas Terkelola: Jika aplikasi disebarkan ke host Azure dengan Identitas Terkelola diaktifkan, aplikasi akan mengautentikasi dengannya.
- Azure CLI: Jika pengguna masuk melalui perintah Azure CLI
az login
, itu mengautentikasi sebagai pengguna tersebut. - Azure PowerShell: Jika pengguna masuk melalui perintah Azure PowerShell
Connect-AzAccount
, pengguna tersebut akan mengautentikasi sebagai pengguna tersebut. - 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 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.
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, kami sarankan Anda mengonfigurasi variabel lingkungan ini di komputasi. Sebagai praktik terbaik, kelola sebagai rahasia dalam instans Azure Key Vault.
Misalnya, di Azure Databricks Anda dapat menggunakan rahasia dalam variabel lingkungan sebagai berikut dalam konfigurasi kluster: 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 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_CLOUD
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
.
Langkah berikutnya
Sekarang setelah lingkungan Anda terhubung ke ruang kerja Anda di Azure Pembelajaran Mesin, Anda dapat mulai bekerja dengannya.