Melacak model ML dengan MLflow dan Azure Machine Learning
BERLAKU UNTUK: Python SDK azureml v1
Dalam artikel ini, pelajari cara mengaktifkan Pelacakan MLflow untuk menghubungkan Azure Machine Learning sebagai backend eksperimen MLflow Anda.
MLflow adalah pustaka sumber terbuka untuk mengelola siklus hidup eksperimen pembelajaran mesin. Pelacakan MLflow adalah komponen MLflow yang mencatat dan melacak metrik dan artefak model eksekusi pelatihan Anda, apa pun lingkungan eksperimen Anda--secara lokal di komputer Anda, pada target komputasi jarak jauh, mesin virtual, atau kluster Azure Databricks.
Lihat MLflow dan Azure Machine Learning untuk semua fungsi MLflow dan Azure Machine Learning yang didukung termasuk dukungan Proyek MLflow (pratinjau) dan penyebaran modelnya.
Tip
Jika Anda ingin melacak eksperimen yang berjalan di Azure Databricks atau Azure Synapse Analytics, lihat artikel khusus Melacak eksperimen Azure Databricks ML dengan MLflow dan Azure Machine Learning atau Melacak eksperimen Azure Synapse Analytics ML dengan MLflow serta Azure Machine Learning.
Catatan
Informasi dalam dokumen ini terutama untuk ilmuwan data dan pengembang yang ingin memantau proses pelatihan model. Jika Anda adalah seorang administrator yang tertarik untuk memantau penggunaan sumber daya dan peristiwa dari Azure Machine Learning, seperti kuota, tugas pelatihan yang telah diselesaikan, atau penyebaran model yang telah diselesaikan, lihat Memantau Azure Machine Learning.
Prasyarat
Pasang paket
mlflow
.- Anda bisa menggunakan MLflow Skinny yang merupakan paket MLflow ringan tanpa penyimpanan SQL, server, antarmuka pengguna, atau dependensi ilmu data. Ini direkomendasikan untuk pengguna yang terutama membutuhkan kemampuan pelacakan dan pencatatan tanpa mengimpor rangkaian lengkap fitur MLflow termasuk penyebaran.
Pasang paket
azureml-mlflow
.Pasang dan siapkan Azure Machine Learning CLI (v1) dan pastikan Anda memasang ekstensi ml.
Penting
Beberapa perintah CLI Azure dalam artikel ini menggunakan ekstensi
azure-cli-ml
, atau v1, untuk Azure Machine Learning. Dukungan untuk ekstensi v1 akan berakhir pada 30 September 2025. Anda dapat memasang dan menggunakan ekstensi v1 hingga tanggal tersebut.Kami menyarankan agar Anda beralih ke ekstensi
ml
, atau v2 sebelum 30 September 2025. Untuk informasi selengkapnya mengenai ekstensi v2, lihat Ekstensi Azure ML CLI dan Python SDK v2.Menginstal dan menyiapkan SDK Azure Machine Learning untuk Python.
Melacak eksekusi dari mesin lokal Anda atau komputasi jarak jauh
Pelacakan menggunakan MLflow dengan Azure Machine Learning memungkinkan Anda untuk menyimpan metrik dan artefak yang dicatat yang dijalankan pada mesin lokal Anda ke dalam ruang kerja Azure Machine Learning Anda.
Menyiapkan lingkungan pelacakan
Untuk melacak eksekusi yang tidak berjalan pada komputasi Azure Machine Learning (mulai sekarang disebut sebagai "komputasi lokal"), Anda harus mengarahkan komputasi lokal ke URI Pelacakan MLflow Azure Machine Learning.
Catatan
Saat berjalan di Azure Compute (Azure Notebooks, Jupyter Notebooks yang dihosting di Azure Compute Instances atau Compute Clusters), Anda tidak perlu mengonfigurasi URI pelacakan. Ini secara otomatis dikonfigurasi untuk Anda.
- Menggunakan Azure Pembelajaran Mesin SDK
- Menggunakan variabel lingkungan
- Membangun URI pelacakan MLflow
BERLAKU UNTUK: Python SDK azureml v1
Anda bisa mendapatkan URI pelacakan Azure Pembelajaran Mesin MLflow menggunakan Azure Pembelajaran Mesin SDK v1 untuk Python. Pastikan Anda telah menginstal pustaka azureml-sdk
di kluster yang Anda gunakan: Sampel berikut mendapatkan URI pelacakan MLFLow unik yang terkait dengan ruang kerja Anda. Kemudian metode set_tracking_uri()
tersebut mengarahkan URI pelacakan MLflow ke URI tersebut.
Menggunakan file konfigurasi ruang kerja:
from azureml.core import Workspace import mlflow ws = Workspace.from_config() mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())
Tip
Anda dapat mengunduh file konfigurasi ruang kerja dengan:
- Menavigasi ke studio Azure Pembelajaran Mesin
- Klik di sudut kanan atas halaman -> Unduh file konfigurasi.
- Simpan file
config.json
di direktori yang sama tempat Anda bekerja.
Menggunakan ID langganan, nama grup sumber daya, dan nama ruang kerja:
from azureml.core import Workspace import mlflow #Enter details of your Azure Machine Learning workspace subscription_id = '<SUBSCRIPTION_ID>' resource_group = '<RESOURCE_GROUP>' workspace_name = '<AZUREML_WORKSPACE_NAME>' ws = Workspace.get(name=workspace_name, subscription_id=subscription_id, resource_group=resource_group) mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())
Mengatur nama eksperimen
Semua eksekusi MLflow dicatat ke eksperimen aktif. Secara default, eksekusi dicatat ke dalam log eksperimen bernama Default
yang dibuat secara otomatis untuk Anda. Untuk mengonfigurasi eksperimen yang ingin Anda kerjakan, gunakan perintah MLflow mlflow.set_experiment()
.
experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(experiment_name)
Tip
Saat mengirimkan pekerjaan menggunakan Azure Pembelajaran Mesin SDK, Anda dapat mengatur nama eksperimen menggunakan properti experiment_name
saat mengirimkannya. Anda tidak perlu mengonfigurasinya pada skrip pelatihan Anda.
Memulai eksekusi pelatihan
Setelah mengatur nama eksperimen MLflow, Anda dapat memulai eksekusi pelatihan dengan start_run()
. Kemudian gunakan log_metric()
untuk mengaktifkan MLflow logging API dan mulai mencatat metrik eksekusi pelatihan Anda.
import os
from random import random
with mlflow.start_run() as mlflow_run:
mlflow.log_param("hello_param", "world")
mlflow.log_metric("hello_metric", random())
os.system(f"echo 'hello world' > helloworld.txt")
mlflow.log_artifact("helloworld.txt")
Untuk detail tentang cara mencatat metrik, parameter, dan artefak dalam proses menggunakan tampilan MLflow Cara mencatat dan menampilkan metrik.
Melacak eksekusi alur yang berjalan di Azure Machine Learning
BERLAKU UNTUK: Python SDK azureml v1
Eksekusi jarak jauh (pekerjaan) memungkinkan Anda melatih model Anda dengan cara yang lebih kuat dan berulang. Mereka juga bisa memanfaatkan komputasi yang lebih canggih, seperti kluster Komputasi Pembelajaran Mesin. Lihat Menggunakan target komputasi untuk pelatihan model untuk mempelajari tentang berbagai opsi komputasi.
Saat mengirimkan eksekusi, Azure Machine Learning mengonfigurasi MLflow secara otomatis untuk bekerja dengan ruang kerja tempat eksekusi dijalankan. Ini berarti bahwa tidak perlu mengonfigurasi URI pelacakan MLflow. Selain itu, eksperimen secara otomatis diberi nama berdasarkan detail pengiriman eksperimen.
Penting
Saat mengirimkan pekerjaan pelatihan ke Azure Machine Learning, Anda tidak perlu mengonfigurasi URI pelacakan MLflow pada logika pelatihan Anda karena sudah dikonfigurasikan untuk Anda. Tidak perlu mengonfigurasi nama eksperimen dalam rutinitas pelatihan Anda.
Membuat sebuah rutinitas pelatihan
Pertama, Anda harus membuat subdirektori src
dan membuat file dengan kode pelatihan Anda di file train.py
pada subdirektori src
. Semua kode pelatihan Anda akan masuk ke subdirektori src
, termasuk train.py
.
Kode pelatihan diambil dari contoh MLfLow ini di repositori contoh Azure Machine Learning.
Salin kode berikut ke dalam file:
# imports
import os
import mlflow
from random import random
# define functions
def main():
mlflow.log_param("hello_param", "world")
mlflow.log_metric("hello_metric", random())
os.system(f"echo 'hello world' > helloworld.txt")
mlflow.log_artifact("helloworld.txt")
# run functions
if __name__ == "__main__":
# run main function
main()
Mengonfigurasi eksperimen
Anda harus menggunakan Python untuk mengirimkan eksperimen ke Azure Machine Learning. Di buku catatan atau file Python, konfigurasikan lingkungan komputasi dan eksekusi latihan Anda dengan kelas Environment
.
from azureml.core import Environment
from azureml.core.conda_dependencies import CondaDependencies
env = Environment(name="mlflow-env")
# Specify conda dependencies with scikit-learn and temporary pointers to mlflow extensions
cd = CondaDependencies.create(
conda_packages=["scikit-learn", "matplotlib"],
pip_packages=["azureml-mlflow", "pandas", "numpy"]
)
env.python.conda_dependencies = cd
Kemudian, bangun ScriptRunConfig
dengan komputasi jarak jauh Anda sebagai target komputasi.
from azureml.core import ScriptRunConfig
src = ScriptRunConfig(source_directory="src",
script=training_script,
compute_target="<COMPUTE_NAME>",
environment=env)
Dengan konfigurasi komputasi dan eksekusi latihan ini, gunakan metode Experiment.submit()
untuk mengirim eksekusi. Metode ini secara otomatis mengatur URI pelacakan MLflow dan mengarahkan pencatatan dari MLflow ke Ruang Kerja Anda.
from azureml.core import Experiment
from azureml.core import Workspace
ws = Workspace.from_config()
experiment_name = "experiment_with_mlflow"
exp = Experiment(workspace=ws, name=experiment_name)
run = exp.submit(src)
Melihat metrik dan artefak di ruang kerja Anda
Metrik dan artefak dari pengelogan MLflow dilacak di ruang kerja Anda. Untuk melihatnya kapan saja, buka ruang kerja Anda dan temukan eksperimen berdasarkan nama di ruang kerja Anda di studio Azure Machine Learning. Atau jalankan kode di bawah ini.
Ambil metrik eksekusi menggunakan get_run() MLflow.
from mlflow.tracking import MlflowClient
# Use MlFlow to retrieve the run that was just completed
client = MlflowClient()
run_id = mlflow_run.info.run_id
finished_mlflow_run = MlflowClient().get_run(run_id)
metrics = finished_mlflow_run.data.metrics
tags = finished_mlflow_run.data.tags
params = finished_mlflow_run.data.params
print(metrics,tags,params)
Untuk melihat artefak sebuah eksekusi, Anda dapat menggunakan MlFlowClient.list_artifacts()
client.list_artifacts(run_id)
Untuk mengunduh artefak ke direktori saat ini, Anda dapat menggunakan MLFlowClient.download_artifacts()
client.download_artifacts(run_id, "helloworld.txt", ".")
Untuk detail selengkapnya tentang cara mengambil informasi dari eksperimen dan eksekusi di Azure Machine Learning menggunakan tampilan MLflow Kelola eksperimen dan jalankan dengan MLflow.
Membandingkan dan membuat kueri
Bandingkan dan buat kueri untuk semua eksekusi MLflow di ruang kerja Azure Machine Learning Anda dengan kode berikut. Pelajari selengkapnya cara membuat kueri eksekusi dengan MLflow.
from mlflow.entities import ViewType
all_experiments = [exp.experiment_id for exp in MlflowClient().list_experiments()]
query = "metrics.hello_metric > 0"
runs = mlflow.search_runs(experiment_ids=all_experiments, filter_string=query, run_view_type=ViewType.ALL)
runs.head(10)
Pengelogan otomatis
Dengan Azure Machine Learning dan MLFlow, pengguna dapat mencatat metrik, parameter model, dan artefak model secara otomatis saat melatih model. Berbagai pustaka pembelajaran mesin populer didukung.
Untuk mengaktifkan pengelogan otomatis masukkan kode berikut sebelum kode pelatihan Anda:
mlflow.autolog()
Pelajari lebih lanjut Pengelogan otomatis dengan MLflow.
Mengelola model
Daftarkan dan lacak model Anda dengan registri model Azure Machine Learning yang mendukung registri model MLflow. Model Azure Machine Learning selaras dengan skema model MLflow sehingga memudahkan ekspor dan impor model ini di berbagai alur kerja. Metadata terkait MLflow seperti, ID eksekusi juga dilacak dengan model terdaftar untuk keterlacakan. Pengguna dapat mengirim eksekusi pelatihan, mendaftar, dan menyebarkan model yang dihasilkan dari eksekusi MLflow.
Jika Anda ingin menyebarkan dan mendaftarkan model siap produksi Anda dalam satu langkah, lihat Menyebarkan dan mendaftarkan model MLflow.
Untuk mendaftar dan melihat model dari eksekusi, gunakan langkah-langkah berikut:
Setelah eksekusi selesai, panggil metode
register_model()
.# the model folder produced from a run is registered. This includes the MLmodel file, model.pkl and the conda.yaml. model_path = "model" model_uri = 'runs:/{}/{}'.format(run_id, model_path) mlflow.register_model(model_uri,"registered_model_name")
Lihat model terdaftar di ruang kerja Anda dengan studio Azure Machine Learning.
Dalam contoh berikut, model terdaftar
my-model
memiliki metadata pelacakan MLflow yang diberi tag.Pilih tab Artefak untuk melihat semua file model yang selaras dengan skema model MLflow (conda.yaml, MLmodel, model.pkl).
Pilih MLmodel untuk melihat file MLmodel yang dihasilkan oleh eksekusi.
Membersihkan sumber daya
Jika Anda tidak berencana untuk menggunakan metrik dan artefak yang dicatat di ruang kerja Anda, saat ini tidak tersedia kemampuan untuk menghapusnya satu per satu. Sebagai gantinya, hapus grup sumber daya yang berisi akun penyimpanan dan ruang kerja, sehingga Anda tidak dikenakan biaya apa pun:
Dari portal Microsoft Azure, pilih Grup sumber daya dari sisi sebelah kiri.
Dari daftar, pilih grup sumber daya yang Anda buat.
Pilih Hapus grup sumber daya.
Masukkan nama grup sumber daya. Kemudian pilih Hapus.
Contoh buku catatan
MLflow dengan notebook Azure Machine Learning menunjukkan dan memperluas konsep yang disajikan dalam artikel ini. Lihat juga repositori berbasis komunitas, AzureML-Examples.
Langkah berikutnya
- Sebarkan model dengan MLflow.
- Pantau model produksi untuk drift data.
- Melacak Azure Databricks berjalan dengan MLflow.
- Kelola model Anda.