Melihat hasil pelatihan dengan run MLflow

Artikel ini menjelaskan cara menggunakan eksekusi MLflow untuk melihat dan menganalisis hasil eksperimen pelatihan model, dan cara mengelola dan mengatur eksekusi. Untuk informasi selengkapnya tentang eksperimen MLflow, lihat Mengatur eksekusi pelatihan dengan eksperimen MLflow.

Run MLflow berkaitan dengan satu eksekusi kode model. Pada setiap run, mencatat informasi seperti notebook yang meluncurkan run, model yang dibuat oleh run, parameter model dan metrik yang disimpan sebagai pasangan kunci-nilai, tag untuk metadata run, dan artefak atau file output yang dibuat oleh run.

Semua eksekusi MLflow dicatat ke eksperimen aktif. Jika Anda belum secara eksplisit menetapkan eksperimen sebagai eksperimen aktif, eksekusi akan dicatat ke eksperimen notebook.

Lihat detail jalankan

Anda dapat mengakses eksekusi baik dari halaman detail eksperimennya atau langsung dari buku catatan yang membuat eksekusi.

Dari halaman detail eksperimen , klik nama percobaan dalam tabel percobaan.

Buka eksperimen yang dijalankan dari halaman detail eksperimen.

Dari buku catatan, klik nama eksekusi di bilah samping Eksekusi Eksperimen.

Buka eksperimen yang dijalankan dari notebook.

Layar eksekusi memperlihatkan ID eksekusi, parameter yang digunakan untuk eksekusi, metrik yang dihasilkan dari eksekusi, dan detail tentang eksekusi termasuk tautan ke buku catatan sumber. Artefak yang disimpan dari proses eksekusi tersedia di tab Artefak.

Lihat jalankan

Cuplikan kode untuk prediksi

Jika Anda melog model dari suatu proses, model tersebut muncul di tab Artefak, bersama dengan cuplikan kode yang menunjukkan cara memuat dan menggunakan model untuk membuat prediksi pada Spark dan Pandas DataFrames. Di MLflow 3, model sekarang adalah objek kelas pertama yang terpisah, bukan lagi dicatat sebagai artefak eksekusi. Untuk informasi selengkapnya, lihat Mulai menggunakan MLflow 3 untuk model.

memprediksi cuplikan kode

Menampilkan buku catatan yang digunakan untuk menjalankan

Untuk melihat versi notebook yang membuat eksekusi:

  • Pada halaman detail eksperimen, klik tautan di kolom Sumber .
  • Pada halaman eksekusi, klik link di samping Sumber.
  • Dari buku catatan, di bilah samping Eksperimen Berjalan, klik ikon Versi Notebook ikon Buku Catatan di kotak untuk Eksperimen Berjalan.

Versi notebook yang terkait dengan eksekusi muncul di jendela utama dengan bilah sorotan yang menunjukkan tanggal dan waktu eksekusi.

Menambahkan tag ke sebuah proses

Tags adalah pasangan nilai-kunci yang dapat Anda buat dan gunakan nanti untuk mencari proses.

  1. Di tabel Detail pada halaman jalankan, klik Tambahkan tag di samping Tag.

    Tombol Tag pada halaman Detail

  2. Dialog Tambahkan/Edit tag terbuka. Di bidang Kunci , masukkan nama untuk kunci, dan klik Tambahkan tag.

    Tambahkan tag.

  3. Di bidang Nilai , masukkan nilai untuk tag.

  4. Klik tanda plus untuk menyimpan pasangan kunci-nilai yang baru saja Anda masukkan.

    Tanda plus untuk menyimpan pasangan kunci-nilai.

  5. Untuk menambahkan tag tambahan, ulangi langkah 2 hingga 4.

  6. Setelah selesai, klik Simpan tag.

Mengedit atau menghapus tag untuk menjalankan tugas

  1. Di tabel Detail pada halaman jalankan, klik ikon Pensil. di samping tag yang ada.

    tabel tag

  2. Dialog Tambahkan/Edit tag terbuka.

    1. Untuk menghapus tag, klik X pada tag tersebut.

      Menghapus tag.

    2. Untuk mengedit tag, pilih kunci dari menu drop-down, dan edit nilai di bidang Nilai. Klik tanda plus untuk menyimpan perubahan Anda.

      Sunting sebuah tag.

  3. Setelah selesai, klik Simpan tag.

Mereproduksi lingkungan perangkat lunak eksekusi

Anda dapat mereproduksi lingkungan perangkat lunak yang tepat untuk eksekusi dengan mengklik Reproduksi Jalankan di kanan atas halaman eksekusi. Dialog berikut muncul:

mereproduksi dialog untuk menjalankan

Dengan pengaturan default, saat Anda mengklik Konfirmasi:

  • Notebook dikloning ke lokasi yang ditampilkan dalam dialog.
  • Jika kluster asli masih ada, notebook kloning dilampirkan ke kluster asli dan kluster dimulai.
  • Jika kluster asli tidak ada lagi, kluster baru dengan konfigurasi yang sama, termasuk setiap pustaka yang diinstal, akan dibuat dan dimulai. Notebook dilampirkan ke kluster baru.

Anda dapat memilih lokasi lain untuk notebook kloning dan memeriksa konfigurasi kluster dan pustaka yang diinstal:

  • Untuk memilih folder lain untuk menyimpan notebook kloning, klik Edit Folder.
  • Untuk melihat spesifikasi kluster, klik Tampilkan Spesifikasi. Untuk mengkloning notebook saja dan bukan kluster, hapus centang opsi ini.
  • Jika kluster asli tidak ada lagi, Anda dapat melihat pustaka yang diinstal pada kluster asli dengan mengklik Lihat Pustaka. Jika kluster asli masih ada, bagian ini berwarna abu-abu.

Mengganti nama eksekusi

Untuk mengganti nama sesi, klik ikon menu kebab di sudut kanan atas halaman sesi (di samping tombol Izin) dan pilih Ganti Nama.

Ganti nama proses dari halaman tersebut.

Pilih kolom untuk ditampilkan

Untuk mengontrol kolom yang ditampilkan dalam tabel eksekusi pada halaman detail eksperimen, klik Kolom dan pilih dari menu drop-down.

Filter eksekusi

Anda dapat mencari eksekusi dalam tabel di halaman detail eksperimen berdasarkan nilai parameter atau metrik. Anda juga dapat mencari proses berdasarkan tag.

  • Untuk mencari eksekusi yang cocok dengan ekspresi yang berisi nilai parameter dan metrik, masukkan kueri di bidang pencarian dan tekan Enter. Beberapa contoh sintaks kueri adalah:

    metrics.r2 > 0.3

    params.elasticNetParam = 0.5

    params.elasticNetParam = 0.5 AND metrics.avg_areaUnderROC > 0.3

    MIN(metrics.rmse) <= 1

    MAX(metrics.memUsage) > 0.9

    LATEST(metrics.memUsage) = 0 AND MIN(metrics.rmse) <= 1

    Secara default, nilai metrik difilter berdasarkan nilai terakhir yang dicatat. Menggunakan MIN atau MAX memungkinkan Anda mencari eksekusi berdasarkan nilai metrik minimum atau maksimum. Hanya berjalan yang dicatat setelah Agustus 2024 yang memiliki nilai metrik minimum dan maksimum.

  • Untuk mencari eksekusi berdasarkan tag, masukkan tag dalam format: tags.<key>="<value>". Nilai string harus diapit dalam tanda kutip seperti yang ditunjukkan.

    tags.estimator_name="RandomForestRegressor"

    tags.color="blue" AND tags.size=5

    Kedua kunci dan nilai boleh berisi spasi. Jika kunci menyertakan spasi, Anda harus melampirkannya dengan tanda petik terbalik seperti yang ditunjukkan.

    tags.`my custom tag` = "my value"
    

Anda juga dapat memfilter eksekusi berdasarkan statusnya (Aktif atau Dihapus), saat eksekusi dibuat, dan himpunan data apa yang digunakan. Untuk melakukan ini, buat pilihan Anda dari menu tarik turun Waktu yang dibuat, Status, atau Himpunan Data.

Jalankan filter

Mengunduh eksekusi

Anda dapat mengunduh eksekusi dari halaman Detail eksperimen sebagai berikut:

  1. Klik ikon menu Kebab. untuk membuka menu kebab.

    menu Kebab dengan opsi unduhan di halaman Eksperimen.

  2. Untuk mengunduh file dalam format CSV yang berisi semua eksekusi yang ditampilkan (hingga maksimum 100), pilih Unduh <n> eksekusi. MLflow membuat dan mengunduh file dengan satu eksekusi per baris, yang berisi bidang berikut untuk setiap eksekusi:

    Start Time, Duration, Run ID, Name, Source Type, Source Name, User, Status, <parameter1>, <parameter2>, ..., <metric1>, <metric2>, ...
    
  3. Jika Anda ingin mengunduh lebih dari 100 eksekusi atau ingin mengunduh eksekusi secara terprogram, pilih Unduh semua eksekusi. Dialog terbuka memperlihatkan cuplikan kode yang bisa Anda salin atau buka di buku catatan. Setelah Anda menjalankan kode ini dalam sel buku catatan, pilih Unduh semua baris dari output sel.

Menghapus proses

Anda dapat menghapus eksekusi dari halaman detail eksperimen dengan mengikuti langkah-langkah berikut:

  1. Dalam percobaan, pilih satu atau beberapa pengujian dengan mengklik kotak di sebelah kiri pengujian.
  2. Klik Hapus.
  3. Jika eksekusi merupakan eksekusi induk, putuskan apakah Anda juga ingin menghapus eksekusi turunan. Opsi ini dipilih untuk Anda secara default.
  4. Klik Hapus untuk mengonfirmasi. Eksekusi yang dihapus disimpan selama 30 hari. Untuk menampilkan eksekusi yang dihapus, pilih Dihapus di bidang Status.

Penghapusan massal berjalan berdasarkan waktu pembuatan

Anda dapat menggunakan Python untuk menghapus eksekusi eksperimen massal yang dibuat sebelum atau pada tanda waktu UNIX. Dengan menggunakan Databricks Runtime 14.1 atau yang lebih baru, Anda dapat memanggil mlflow.delete_runs API untuk menghapus eksekusi dan mengembalikan jumlah eksekusi yang dihapus.

Berikut ini adalah parameternya mlflow.delete_runs :

  • experiment_id: ID eksperimen yang berisi pengujian yang akan dihapus.
  • max_timestamp_millis: Tanda waktu pembuatan maksimum dalam milidetik sejak zaman UNIX untuk menghapus eksekusi. Hanya jalinan yang dibuat sebelum atau pada cap waktu ini yang dihapus.
  • max_runs: Opsional. Bilangan bulat positif yang menunjukkan jumlah maksimum pengulangan yang akan dihapus. Nilai maksimum yang diizinkan untuk max_runs adalah 10000. Jika tidak ditentukan, max_runs bernilai bawaan 10000.
import mlflow

# Replace <experiment_id>, <max_timestamp_ms>, and <max_runs> with your values.
runs_deleted = mlflow.delete_runs(
  experiment_id=<experiment_id>,
  max_timestamp_millis=<max_timestamp_ms>,
  max_runs=<max_runs>
)
# Example:
runs_deleted = mlflow.delete_runs(
  experiment_id="4183847697906956",
  max_timestamp_millis=1711990504000,
  max_runs=10
)

Menggunakan Databricks Runtime 13.3 LTS atau yang lebih lama, Anda dapat menjalankan kode klien berikut di Notebook Azure Databricks.

from typing import Optional

def delete_runs(experiment_id: str,
                max_timestamp_millis: int,
                max_runs: Optional[int] = None) -> int:
    """
    Bulk delete runs in an experiment that were created prior to or at the specified timestamp.
    Deletes at most max_runs per request.

    :param experiment_id: The ID of the experiment containing the runs to delete.
    :param max_timestamp_millis: The maximum creation timestamp in milliseconds
                                 since the UNIX epoch for deleting runs. Only runs
                                 created prior to or at this timestamp are deleted.
    :param max_runs: Optional. A positive integer indicating the maximum number
                     of runs to delete. The maximum allowed value for max_runs
                     is 10000. If not specified, max_runs defaults to 10000.
    :return: The number of runs deleted.
    """
    from mlflow.utils.databricks_utils import get_databricks_host_creds
    from mlflow.utils.request_utils import augmented_raise_for_status
    from mlflow.utils.rest_utils import http_request

    json_body = {"experiment_id": experiment_id, "max_timestamp_millis": max_timestamp_millis}
    if max_runs is not None:
        json_body["max_runs"] = max_runs
    response = http_request(
        host_creds=get_databricks_host_creds(),
        endpoint="/api/2.0/mlflow/databricks/runs/delete-runs",
        method="POST",
        json=json_body,
    )
    augmented_raise_for_status(response)
    return response.json()["runs_deleted"]

Lihat dokumentasi API Eksperimen Azure Databricks untuk parameter dan spesifikasi nilai pengembalian untuk menghapus eksekusi berdasarkan waktu pembuatan.

Pemulihan proses

Anda dapat memulihkan eksekusi yang dihapus sebelumnya dari UI sebagai berikut:

  1. Pada halaman Eksperimen, di kolom Status, pilih Dihapus untuk menampilkan proses yang dihapus.
  2. Pilih satu atau beberapa eksekusi dengan mengklik di kotak centang di sebelah kiri eksekusi.
  3. Klik Pulihkan.
  4. Klik Pulihkan untuk mengonfirmasi. Eksekusi yang dipulihkan sekarang muncul saat Anda memilih Active di bidang Status.

Pemulihan data secara massal dilakukan berdasarkan waktu penghapusan

Anda juga dapat menggunakan Python untuk memulihkan eksekusi eksperimen massal yang dihapus pada atau setelah tanda waktu UNIX. Dengan menggunakan Databricks Runtime 14.1 atau yang lebih baru, Anda dapat memanggil mlflow.restore_runs API untuk memulihkan eksekusi dan mengembalikan jumlah eksekusi yang dipulihkan.

Berikut ini adalah parameternya mlflow.restore_runs :

  • experiment_id: ID eksperimen yang berisi eksekusi untuk dipulihkan.
  • min_timestamp_millis: Batas waktu minimum penghapusan dalam milidetik sejak zaman UNIX untuk memulihkan proses. Hanya jalinan yang dihapus pada atau setelah tanda waktu ini dipulihkan.
  • max_runs: Opsional. Bilangan bulat positif yang menunjukkan jumlah maksimum eksekusi untuk dipulihkan. Nilai maksimum yang diizinkan untuk max_runs adalah 10000. Jika tidak ditentukan, max_runs default ke 10000.
import mlflow

# Replace <experiment_id>, <min_timestamp_ms>, and <max_runs> with your values.
runs_restored = mlflow.restore_runs(
  experiment_id=<experiment_id>,
  min_timestamp_millis=<min_timestamp_ms>,
  max_runs=<max_runs>
)
# Example:
runs_restored = mlflow.restore_runs(
  experiment_id="4183847697906956",
  min_timestamp_millis=1711990504000,
  max_runs=10
)

Menggunakan Databricks Runtime 13.3 LTS atau yang lebih lama, Anda dapat menjalankan kode klien berikut di Notebook Azure Databricks.

from typing import Optional

def restore_runs(experiment_id: str,
                 min_timestamp_millis: int,
                 max_runs: Optional[int] = None) -> int:
    """
    Bulk restore runs in an experiment that were deleted at or after the specified timestamp.
    Restores at most max_runs per request.

    :param experiment_id: The ID of the experiment containing the runs to restore.
    :param min_timestamp_millis: The minimum deletion timestamp in milliseconds
                                 since the UNIX epoch for restoring runs. Only runs
                                 deleted at or after this timestamp are restored.
    :param max_runs: Optional. A positive integer indicating the maximum number
                     of runs to restore. The maximum allowed value for max_runs
                     is 10000. If not specified, max_runs defaults to 10000.
    :return: The number of runs restored.
    """
    from mlflow.utils.databricks_utils import get_databricks_host_creds
    from mlflow.utils.request_utils import augmented_raise_for_status
    from mlflow.utils.rest_utils import http_request
    json_body = {"experiment_id": experiment_id, "min_timestamp_millis": min_timestamp_millis}
    if max_runs is not None:
        json_body["max_runs"] = max_runs
    response = http_request(
        host_creds=get_databricks_host_creds(),
        endpoint="/api/2.0/mlflow/databricks/runs/restore-runs",
        method="POST",
        json=json_body,
    )
    augmented_raise_for_status(response)
    return response.json()["runs_restored"]

Lihat dokumentasi API Eksperimen Azure Databricks untuk parameter dan spesifikasi nilai pengembalian untuk memulihkan jalannya proses berdasarkan waktu penghapusan.

Membandingkan eksekusi

Anda dapat membandingkan proses dari satu eksperimen atau dari beberapa eksperimen. Halaman Membandingkan Eksekusi menyajikan informasi tentang eksekusi yang dipilih dalam format tabular. Anda juga dapat membuat visualisasi hasil eksekusi dan tabel informasi eksekusi, parameter eksekusi, dan metrik. Lihat Membandingkan eksekusi dan model MLflow menggunakan grafik dan bagan.

Tabel Parameter dan Metrik menampilkan parameter proses dan metrik dari semua proses yang dipilih. Kolom dalam tabel ini diidentifikasi oleh tabel Detail run tepat di atasnya. Untuk kesederhanaan, Anda dapat menyembunyikan parameter dan metrik yang identik dalam semua pengoperasian yang dipilih dengan mengaktifkan Tombol .

membandingkan tabel halaman eksekusi

Membandingkan perulangan dari satu eksperimen

  1. Pada halaman detail eksperimen , pilih dua atau beberapa eksekusi dengan mengklik di kotak centang di sebelah kiri eksekusi, atau pilih semua eksekusi dengan mencentang kotak di bagian atas kolom.
  2. Klik Bandingkan. Layar Membandingkan <N> Pelaksanaan muncul.

Membandingkan pelaksanaan dari beberapa eksperimen

  1. Pada halaman eksperimen, pilih eksperimen yang ingin Anda bandingkan dengan mengeklik kotak di sebelah kiri nama eksperimen.
  2. Klik Bandingkan (n) (n adalah jumlah eksperimen yang Anda pilih). Sebuah layar muncul yang menunjukkan semua proses dari eksperimen yang Anda pilih.
  3. Pilih dua atau lebih proses dengan mencentang kotak di sebelah kiri proses, atau pilih semua proses dengan mencentang kotak di bagian atas kolom.
  4. Klik Bandingkan. Layar Membandingkan Jalankan <N> muncul.

Membandingkan eksekusi menggunakan tabel sistem

Metadata MLflow untuk eksperimen dan eksekusi juga tersedia dalam tabel sistem, di mana Anda dapat memanfaatkan Databricks SQL dan semua alat lakehouse yang ditawarkan Databricks untuk menganalisis data eksperimen Anda. Untuk detail selengkapnya, lihat Referensi tabel sistem MLflow.

Proses penyalinan dijalankan di antara ruang kerja

Untuk mengimpor atau mengekspor eksekusi MLflow ke atau dari ruang kerja Databricks, Anda bisa menggunakan proyek berbasis komunitas sumber terbuka Ekspor-Impor MLflow.