Melacak eksekusi dengan MLflow dan halaman eksekusi Pekerjaan

Penting

Fitur ini ada di Pratinjau Umum.

Setiap beban kerja yang Anda kirimkan melalui air run sekaligus merupakan eksekusi tugas Databricks dan eksekusi MLflow:

  • Proses eksekusi pekerjaan (terlihat di halaman ruang kerja Jobs & Pipelines) melacak detail eksekusi: status, sumber daya komputasi, percobaan ulang, dan output driver.
  • Run MLflow mencatat eksperimen: parameter, metrik, metrik sistem, dan artefak.

Satu pengajuan menghasilkan satu eksekusi pekerjaan dan satu eksekusi MLflow. Percobaan ulang membuat run MLflow baru.

Eksperimen dan eksekusi

Dua kolom YAML pada workload menentukan bagaimana run ditampilkan di MLflow:

experiment_name: my-training # Creates or appends to this MLflow experiment
mlflow_run_name: baseline-lr3e5 # Names the MLflow run for this submission
compute:
  num_accelerators: 8
  accelerator_type: GPU_8xH100
command: torchrun --nproc_per_node=8 train.py
max_retries: 2
  • experiment_name (Wajib): Membuat eksperimen MLflow dengan nama ini jika tidak ada, atau menambahkan eksekusi baru ke eksperimen yang ada. Sebuah eksperimen memiliki banyak eksekusi.
  • mlflow_run_name (Opsional): Mengatur nama proses. Jika dihilangkan, nama proses akan menggunakan nama eksperimen sebagai default (experiment_name).
  • max_retries (Opsional): Setiap upaya coba lagi adalah eksekusi MLflow baru dalam eksperimen yang sama, sehingga Anda dapat membandingkan upaya. Pengiriman asli dan percobaan ulang berbagi satu eksekusi pekerjaan.

Halaman run MLflow yang menampilkan metrik

Anda dapat mengakses run dari tiga tempat:

  • Pekerjaan: Halaman eksekusi Pekerjaan menampilkan daftar eksekusi Anda, dan setiap eksekusi ditautkan ke eksekusi dan eksperimen MLflow yang sesuai.
  • MLflow: Halaman Eksperimen mencantumkan eksperimen MLflow Anda.
  • Beban kerja sebelumnya: air get run <job-run-id> menampilkan tautan yang dapat diklik untuk job, eksperimen, dan run MLflow dari run tersebut. air list runs mencantumkan eksekusi sebelumnya dan memungkinkan Anda memfilter untuk menemukan eksekusi tertentu.
air get run <job-run-id> # Links to the job, experiment, and MLflow run
air list runs # List previous runs; filter to find a specific run

Metrik sistem

Metrik GPU, CPU, dan sistem memori diambil secara otomatis untuk setiap proses. Tidak diperlukan konfigurasi. Lihat metrik tersebut pada tab metrik sistem di eksekusi MLflow.

Tab metrik sistem pada run MLflow (GPU/CPU/memori)

Mencatat metrik kustom

Platform ini membuat MLflow berjalan dan mengekspos ID-nya ke proses pelatihan Anda melalui MLFLOW_RUN_ID variabel lingkungan. Gunakan API pelacakan MLflow untuk mencatat parameter, metrik, dan artefak Anda sendiri untuk eksekusi tersebut.

Pada beban kerja terdistribusi (multi-simpul), setiap simpul berbagi eksekusi MLflow yang sama. Log hanya dari proses peringkat-0, sehingga setiap metrik direkam sekali:

import os

import mlflow

# Log from rank 0 only; all nodes share the same MLFLOW_RUN_ID.
if os.environ.get("RANK", "0") == "0":
    with mlflow.start_run(run_id=os.environ["MLFLOW_RUN_ID"]):
        mlflow.log_param("learning_rate", 3e-4)
        for step, loss in enumerate(training_losses):
            mlflow.log_metric("train_loss", loss, step=step)

Log dan artefak

Lakukan streaming atau unduh log eksekusi dengan air logs:

air logs <job-run-id> # Stream logs from node 0
air logs <job-run-id> --node 2 # Logs from a specific node
air logs <job-run-id> --download-to ./logs/ # Download instead of streaming

Log juga tersedia sebagai artefak pada eksekusi MLflow. Untuk menyimpan checkpoint model secara persisten, tuliskan checkpoint tersebut ke volume Unity Catalog. Untuk pola titik pemeriksaan dan mengelola volume, lihat Pelacakan eksperimen dan pengamatan.

Sumber daya tambahan