Deneme izleme ve gözlemlenebilirlik

Önemli

Bu özellik Genel Önizleme aşamasındadır.

AI Runtime, deney takibi ve gözlemlenebilirlik sağlamak için MLflow ile entegre olur. MLflow, ister bir not defterinde geliştirin, ister databricks air CLI ile bir iş yükü gönderin ya da bir iş zamanlayın, bir çalışmanın parametreleri, metrikleri, GPU sistem metrikleri, günlükleri ve artefaktları için tek bir yer sağlar.

MLflow Ne Sağlar

Bir MLflow deneyi, ilgili eğitim run'larını gruplar ve her run eğitim yapılandırması ile sonuçlarının kalıcı bir kaydını sağlar.

  • Metrikler ve parametreler: Eğitim kaybını, değerlendirme metriklerini, öğrenme oranlarını ve hiperparametreleri kaydedin, ardından bunları çalıştırmalar arasında karşılaştırın.
  • Sistem metrikleri: Yönetilen çalışmalar için GPU, CPU ve bellek kullanımını Sistem metrikleri sekmesinden görüntüleyin.
  • Logs: İş destekli bir iş yükü için sürücü çıkışını çalıştırmanın Logs sekmesinde görüntüleyin.
  • Yapılar ve modeller: Model dosyalarını, yapılandırmaları ve diğer çıktıları çalıştırma ile birlikte depolayın. Büyük veya dayanıklı eserler için Unity Kataloğu birimini kullanın.
  • Paylaşım ve iş birliği: Bir deneye erişim izni verin ki diğer çalışma alanı kullanıcıları çalıştırmalarını görüp karşılaştırabilsin. Bkz. MLflow denemeleriyle eğitim çalıştırmalarını düzenleme.
  • Framework entegrasyonları: Hugging Face Transformers, PyTorch Lightning ve diğer desteklenen kütüphanelerle MLflow entegrasyonlarını kullanın.

İş tarafından desteklenen iş yükleri için, örneğin databricks air run ile gönderilen iş yükleri gibi, Azure Databricks iş çalıştırması, MLflow'u tamamlayarak yürütme durumu, hesaplama, denemeler ve sürücü çıktısını kaydeder.

MLflow runları nasıl oluşturulur?

MLflow koşusuna nasıl başlayacağınız veya katılacağınız iş yükünü nasıl başlattığınıza bağlıdır:

İş yükünü nasıl çalıştırırsınız MLflow çalıştırması nasıl başlatılır Deney nasıl seçilir?
Databricks CLI (databricks air run) Her deneme otomatik olarak bir run oluşturur. experiment_name öğesini iş yükü YAML dosyasına ekleyin.
Databricks AI Runtime SDK'sına sahip Notebook (.distributed()) Her çağrı otomatik olarak bir run oluşturur. MLFLOW_EXPERIMENT_NAME öncesinde mlflow.set_experiment() çağırın veya .distributed() ayarlayın.
Kod doğrudan bağlı bir not defterinde çalıştırılır Otomatik olarak bir çalıştırma oluşturulmuyor. mlflow.start_run() veya otomatik günlüğe kaydetmeyi kullanın. Not defterinde mlflow.set_experiment() çağırın.
Zamanlanmış ai_runtime_task Görev otomatik olarak bir run yaratır. Görev yapılandırmasında experiment ayarlayın. AI Runtime görevine bakınız.

Kodunuz doğru çalıştırmayı başlattıktan veya buna katıldıktan sonra, özel eğitim verilerini kaydetmek için MLflow izleme API'sini kullanın. Desteklenen çerçeveler için, bireysel kayıt çağrıları eklemek yerine otomatik loglama kullanabilirsiniz. Derin öğrenme kalıpları için MLflow 3 derin öğrenme iş akışı'na bakınız.

MLflow takibini yapılandırırken aşağıdaki uygulamaları kullanın:

  • step öğesini anlamlı bir değere ayarlayın, örneğin küresel parti veya dönem. Her parti yerine belirli aralıklarla günlüğe kaydedin. MLflow, çalıştırma başına metrik adım sayısını sınırlar. Bkz. Kaynak sınırları.
  • Dağıtık eğitim için, her değerin bir kez kaydedilmesi amacıyla yalnızca rank 0'dan bir metrik günlüğe kaydedin.
  • Notebook iş akışları için, örneğin /Users/<username>/my-experiment veya /Workspace/Shared/<team>/my-experiment gibi mutlak experiment yolları kullanın. Paylaşmak istediğiniz deneyleri paylaşılan bir çalışma alanı klasörüne koyun.
  • Büyük ve dayanıklı kontrol noktalarını Unity Kataloğu biriminde depolayın. Kontrol noktası kalıpları için bkz. AI Runtime'da eğitim performansını ve dayanıklılığını iyileştirme.

Note

Bu sayfadaki örnekler için MLflow 3.7 ve üzerini kullanın.

Databricks CLI iş yüklerini takip et

Bir iş yükünü databricks air run ile gönderdiğinizde, AI Runtime, yürütme ayrıntıları için bir Azure Databricks iş çalıştırması ve deney verileri için bir MLflow çalıştırması oluşturur. Orijinal gönderim ve tekrar denemeleri bir iş çalıştırmasını paylaşırken, her deneme aynı deneyde ayrı bir MLflow çalıştırımı oluşturur ki denemeleri karşılaştırabilesiniz.

GPU, CPU ve bellek sistemi metrikleri her yönetilen çalışma için otomatik olarak kaydedilir ve MLflow Sistem metrikleri sekmesinde görünür.

GPU, CPU ve bellek metriklerini gösteren bir MLflow çalıştırmasının sistem metrikleri sekmesi.

Yapılandırın ve çalıştırma günlüğüne kaydedin

Deneyi seçmek ve isteğe bağlı olarak çalıştırma adını ile artefakt konumunu yapılandırmak için iş yükü YAML dosyasını kullanın. Aşağıdaki örnek yalnızca MLflow alanlarını gösterir:

experiment_name: my-training
mlflow_run_name: baseline-lr3e5
mlflow_artifact_location: /Volumes/main/default/mlflow-artifacts/my-training

Alan gereksinimleri, varsayılan değerler ve desteklenen değerler için Workload YAML referansına bakınız.

AI Çalışma Zamanı, yönetilen çalışma kimliğini MLFLOW_RUN_ID aracılığıyla açığa çıkarır. Kendi parametrelerinizi, metriklerinizi ve artefaktlarınızı bu çalıştırmaya kaydetmek için, MLflow Tracking API'sini kullanarak yeniden açın:

import os

import mlflow

# Log from rank 0 only because 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)

Çalıştırmaları ve logları bulun

Loglar hem Databricks CLI hem de MLflow çalıştırma sayfası üzerinden erişilebilir. İş yüklerini bulmak, bir iş yükünü incelemek ve günlükleri akış olarak izlemek veya indirmek için aşağıdaki komutları kullanın:

databricks air list --all-status
databricks air get <job-run-id>
databricks air logs <job-run-id>
databricks air logs <job-run-id> --node 2
databricks air logs <job-run-id> --download-to ./logs/

Defter iş yüklerini izleyin

Bir not defterinden, ekli oturumda doğrudan kod çalıştırabilir veya Databricks AI Runtime SDK'dan @distributed dekoratörü aracılığıyla dağıtık eğitim çalıştırabilirsiniz.

Kodu doğrudan bir not defterinde çalıştırın

Ekli bir notebook'ta doğrudan çalıştırılan kod, otomatik olarak bir MLflow çalıştırması oluşturmaz. Bir deney seçin, ardından bir çalıştırma başlatın veya otomatik günlüğe kaydetmeyi etkinleştirin:

import mlflow

mlflow.set_experiment("/Users/<username>/my-experiment")

with mlflow.start_run(run_name="baseline"):
    train()

PyTorch Lightning otomatik loglamasını etkinleştirmek için aşağıdaki deseni kullanın:

mlflow.pytorch.autolog()

with mlflow.start_run(run_name="lightning-baseline"):
    trainer.fit(model, datamodule=datamodule)

Hugging Face Transformers için TrainingArguments öğesini aşağıdaki gibi yapılandırın:

from transformers import TrainingArguments

args = TrainingArguments(
    output_dir="/Volumes/<catalog>/<schema>/<volume>/checkpoints",
    report_to="mlflow",
    run_name="llama7b-sft-lr3e5",
    logging_steps=50,
)

Databricks AI Runtime SDK'sını kullanın

Bir not defterinden dağıtık eğitim için Databricks AI Runtime SDK'sındaki @distributed dekoratörünü kullanın (databricks-sdk-air). SDK, GPU ortamı sürüm 6 ve üzerinde serverless_gpu ad alanı altında veya GPU ortamı sürüm 5 ve altında databricks.air olarak mevcuttur.

from databricks.air import distributed

@distributed()
def train():
    # Training code
    ...

train.distributed()

Her .distributed() çağrı otomatik olarak bir MLflow çalıştırma oluşturur. Varsayılan deney ./Users/{WORKSPACE_USER}/{notebook-name} Başka bir deney seçmek için, .distributed() çağırmadan önce bunu ayarlayın:

mlflow.set_experiment("/Users/<username>/my-experiment")
train.distributed()

Aktif bir çalıştırma içinde çağrı .distributed() yaptığınızda, AI Runtime iç içe bir çocuk çalıştırma oluşturur:

with mlflow.start_run() as parent_run:
    train.distributed()

Önceki bir çalıştırmaya devam etmek için, .distributed() öğesini MLFLOW_RUN_ID öğesinden önce ayarlayın:

import os

os.environ["MLFLOW_RUN_ID"] = "<previous-run-id>"
train.distributed()

Hücre çıkışındaki çalıştırma bağlantısını veya notebook Experiment panelini kullanarak MLflow çalıştırmasını açın.

Günlükleri görüntüleyin

  • Notebook çıktısı: Standart çıktı ve eğitim kodundan gelen hata çıktıları notebook hücresi çıktısında görünür.
  • MLflow günlükleri: örneğin .distributed(remote=True) çağrıları gibi iş tarafından desteklenen not defteri iş yükleri için, MLflow Logs sekmesi ilgili iş çalıştırmadan çıktıyı gösterir.

Canlı GPU kaynaklarını izleyin

Notebook GPU kaynakları paneli, tek ve çok düğümlü iş yükleri için canlı GPU kullanımı, bellek ve sıcaklığı gösterir. Bir koşuya bağlı kalıcı bir kayıt ihtiyacınız olduğunda MLflow System metrics sekmesini kullanın.

Paneli açmak için notebook'u AI Runtime'a bağlayın, ardından sağ taraftaki bölmede Çip simgesine tıklayın.GPU kaynakları seçeneğine tıklayın.

Her GPU için kullanım, bellek ve sıcaklık ölçümlerini gösteren GPU kaynakları bölmesi.

Bölme, ölçümleri her 10 saniyede bir sorgular ve 2 saate kadar olan geçmişi saklar. Yenile simgesine tıklayın. En son değerleri almak için Yenile. 5 dakikalık hareketsizlikten sonra bölme duraklatılır. İzlemeye devam etmek için tekrar açın.

Loglara erişim sorunlarını giderme

MLflow çalıştırma sayfasındaki Logs sekmesi, ilgili Azure Databricks iş çalıştırmasından çıktıyı akış halinde gösterir. MLflow deneyine erişim, işe erişim anlamına gelmez.

Sekmede Bu loglara erişiminiz yok ifadesi görüntüleniyorsa, Can Manage iznine sahip bir kullanıcıdan veya bir çalışma alanı yöneticisinden size iş için en az Can View izni vermesini iste. Bkz. İşe erişimi denetleme.

Azure Databricks'da genel sınırlar

Bkz. Kaynak sınırları.