MLflow ile ML denemelerini ve modellerini izleme

Bu makalede, Azure Machine Learning çalışma alanlarında denemelerinizi ve çalıştırmalarınızı izlemek için MLflow kullanmayı öğreneceksiniz.

İzleme , çalıştırdığınız denemeler hakkında ilgili bilgileri kaydetme işlemidir. Kaydedilen bilgiler (meta veriler) projenize göre değişir ve şunları içerebilir:

  • Kod
  • Ortam ayrıntıları (işletim sistemi sürümü, Python paketleri gibi)
  • Giriş verileri
  • Parametre yapılandırmaları
  • Modeller
  • Değerlendirme ölçümleri
  • Değerlendirme görselleştirmeleri (karışıklık matrisleri, önem çizimleri gibi)
  • Değerlendirme sonuçları (bazı değerlendirme tahminleri dahil)

Azure Machine Learning'de işlerle çalışırken, Azure Machine Learning denemelerinizle ilgili kod, ortam, giriş ve çıkış verileri gibi bazı bilgileri otomatik olarak izler. Ancak model, parametre ve ölçüm gibi diğer kullanıcılar için, model oluşturucusunun belirli senaryoya özgü oldukları için izlemelerini yapılandırması gerekir.

Not

Azure Databricks üzerinde çalışan denemeleri izlemek istiyorsanız bkz . MLflow ve Azure Machine Learning ile Azure Databricks ML denemelerini izleme. Azure Synapse Analytics'te çalışan izleme denemeleri hakkında bilgi edinmek için bkz . MLflow ve Azure Machine Learning ile Azure Synapse Analytics ML denemelerini izleme.

Denemeleri izlemenin avantajları

İster Azure Machine Learning'deki işlerle eğitim ister not defterlerinde etkileşimli eğitim olsun, makine öğrenmesi uygulayıcılarının denemeleri izlemesini kesinlikle öneririz. Deneme izleme şunları yapmanızı sağlar:

  • Tüm makine öğrenmesi denemelerinizi tek bir yerde düzenleyin. Daha sonra denemeleri arayabilir, filtreleyebilir ve daha önce çalıştırdığınız denemelerle ilgili ayrıntıları görmek için detaya gidebilirsiniz.
  • Çok az ek çalışmayla denemeleri karşılaştırın, sonuçları analiz edin ve model eğitiminde hata ayıklayın.
  • Sonuçları doğrulamak için denemeleri yeniden oluşturun veya yeniden çalıştırın.
  • Diğer ekip arkadaşlarınızın ne yaptığını görebildiğiniz, deneme sonuçlarını paylaşabileceğiniz ve deneme verilerine program aracılığıyla erişebildiğiniz için işbirliğini geliştirin.

Denemeleri izlemek için neden MLflow kullanmalısınız?

Azure Machine Learning çalışma alanları MLflow uyumlu olduğundan, Azure Machine Learning çalışma alanlarınızdaki çalıştırmaları, ölçümleri, parametreleri ve yapıtları izlemek için MLflow kullanabilirsiniz. İzleme için MLflow kullanmanın en önemli avantajlarından biri, Azure Machine Learning ile çalışmak veya buluta özgü söz dizimi eklemek için eğitim yordamlarınızı değiştirmeniz gerekmeyecek olmasıdır.

Desteklenen tüm MLflow ve Azure Machine Learning işlevleri hakkında daha fazla bilgi için bkz . MLflow ve Azure Machine Learning.

Sınırlamalar

MLflow API'sinde kullanılabilen bazı yöntemler Azure Machine Learning'e bağlanıldığında kullanılamayabilir. Desteklenen ve desteklenmeyen işlemler hakkında ayrıntılı bilgi için bkz . Çalıştırmaları ve denemeleri sorgulamaya yönelik destek matrisi.

Önkoşullar

  • Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun. Azure Machine Learning'in ücretsiz veya ücretli sürümünü deneyin.
  • MLflow SDK paketini mlflow ve MLflow azureml-mlflowiçin Azure Machine Learning eklentisini yükleyin.

    pip install mlflow azureml-mlflow
    

    İpucu

    SQL depolama, sunucu, kullanıcı arabirimi veya veri bilimi bağımlılıkları olmadan basit bir MLflow paketi olan paketini kullanabilirsiniz mlflow-skinny . mlflow-skinny dağıtımlar da dahil olmak üzere tüm özellik paketini içeri aktarmadan öncelikle MLflow'un izleme ve günlüğe kaydetme özelliklerine ihtiyaç duyan kullanıcılar için önerilir.

  • Azure Machine Learning çalışma alanı. Makine öğrenmesi kaynakları oluşturma öğreticisini izleyerek bir tane oluşturabilirsiniz.

  • Uzaktan izleme (yani Azure Machine Learning dışında çalışan izleme denemeleri) gerçekleştiriyorsanız, MLflow'ı Azure Machine Learning çalışma alanınızın izleme URI'sine işaret eden şekilde yapılandırın. MLflow'u çalışma alanınıza bağlama hakkında daha fazla bilgi için bkz . Azure Machine Learning için MLflow'u yapılandırma.

Denemeyi yapılandırma

MLflow, denemelerdeki ve çalıştırmalardaki bilgileri düzenler (çalıştırmalar Azure Machine Learning'de işler olarak adlandırılır). Varsayılan olarak, çalıştırmalar sizin için otomatik olarak oluşturulan Varsayılan adlı bir denemede günlüğe kaydedilir. İzlemenin gerçekleştiği denemeyi yapılandırabilirsiniz.

Jupyter not defteri gibi etkileşimli eğitimler için MLflow komutunu mlflow.set_experiment()kullanın. Örneğin, aşağıdaki kod parçacığı bir denemeyi yapılandırıyor:

experiment_name = 'hello-world-example'
mlflow.set_experiment(experiment_name)

Çalıştırmayı yapılandırma

Azure Machine Learning, MLflow'un çalıştırma olarak çağıran eğitim işlerini izler. İşinizin gerçekleştirdiği tüm işlemleri yakalamak için çalıştırmaları kullanın.

Etkileşimli olarak çalışırken, etkin bir çalıştırma gerektiren bilgileri günlüğe kaydetmeye çalıştığınızda MLflow eğitim yordamınızı izlemeye başlar. Örneğin, MLflow izlemesi bir ölçümü, parametreyi günlüğe kaydettiğinizde veya bir eğitim döngüsü başlattığınızda başlar ve Mlflow'un otomatik kaydetme işlevi etkinleştirilir. Ancak, özellikle Denemenizin toplam süresini Süre alanında yakalamak istiyorsanız, çalıştırmayı açıkça başlatmak genellikle yararlı olur. Çalıştırmayı açıkça başlatmak için kullanın mlflow.start_run().

Çalıştırmayı el ile başlatsanız da başlatmasanız da, MLflow'un deneme çalıştırmanızın tamamlandığını bilmesi ve çalıştırmanın durumunu Tamamlandı olarak işaretlemesi için çalıştırmayı durdurmanız gerekir. Çalıştırmayı durdurmak için kullanın mlflow.end_run().

Not defterlerinde çalışırken bunları sonlandırmayı unutmamak için çalıştırmaları el ile başlatmanızı kesinlikle öneririz.

  • Bir çalıştırmayı el ile başlatmak ve not defterinde çalışmayı bitirdiğinizde sonlandırmak için:

    mlflow.start_run()
    
    # Your code
    
    mlflow.end_run()
    
  • Çalıştırmayı sonlandırmayı hatırlamanıza yardımcı olması için bağlam yöneticisi paradigması kullanmak genellikle yararlıdır:

    with mlflow.start_run() as run:
        # Your code
    
  • ile mlflow.start_run()yeni bir çalıştırma başlattığınızda parametresini run_name belirtmek yararlı olabilir. Bu parametre daha sonra Azure Machine Learning kullanıcı arabirimindeki çalıştırmanın adına çevrilir ve çalıştırmayı daha hızlı tanımlamanıza yardımcı olur:

    with mlflow.start_run(run_name="hello-world-example") as run:
        # Your code
    

MLflow otomatik kaydetmeyi etkinleştirme

Ölçümleri, parametreleri ve dosyaları MLflow ile el ile günlüğe kaydedebilirsiniz. Ancak, MLflow'un otomatik günlüğe kaydetme özelliğine de güvenebilirsiniz. MLflow tarafından desteklenen her makine öğrenmesi çerçevesi, sizin için otomatik olarak nelerin izlendiğine karar verir.

Otomatik günlüğü etkinleştirmek için eğitim kodunuzun önüne aşağıdaki kodu ekleyin:

mlflow.autolog()

Çalışma alanınızdaki ölçümleri ve yapıtları görüntüleme

MLflow günlüğündeki ölçümler ve yapıtlar çalışma alanınızda izlenir. Bunları istediğiniz zaman stüdyoda görüntüleyebilir ve bunlara erişebilir veya MLflow SDK'sı aracılığıyla program aracılığıyla erişebilirsiniz.

Stüdyodaki ölçümleri ve yapıtları görüntülemek için:

  1. Azure Machine Learning stüdyosu'a gidin.

  2. Çalışma alanınıza gidin.

  3. Denemeyi çalışma alanınızda ada göre bulun.

  4. Grafikleri sağ tarafta işlemek için günlüğe kaydedilen ölçümleri seçin. Tek bir grafikte düzeltme uygulayarak, rengi değiştirerek veya birden çok ölçüm çizerek grafikleri özelleştirebilirsiniz. Ayrıca düzeni istediğiniz gibi yeniden boyutlandırabilir ve yeniden düzenleyebilirsiniz.

  5. İstediğiniz görünümü oluşturduktan sonra, doğrudan bağlantı kullanarak daha sonra kullanmak üzere kaydedin ve ekip arkadaşlarınızla paylaşın.

    Ölçümler görünümünün ekran görüntüsü.

MLflow SDK'sı aracılığıyla ölçümlere, parametrelere ve yapıtlara programlı olarak erişmek veya bunları sorgulamak için mlflow.get_run() kullanın.

import mlflow

run = mlflow.get_run("<RUN_ID>")

metrics = run.data.metrics
params = run.data.params
tags = run.data.tags

print(metrics, params, tags)

İpucu

Ölçümler için, önceki örnek kod yalnızca belirli bir ölçümün son değerini döndürür. Belirli bir ölçümün tüm değerlerini almak istiyorsanız yöntemini kullanın mlflow.get_metric_history . Bir ölçümün değerlerini alma hakkında daha fazla bilgi için bkz . Çalıştırmadan parametreleri ve ölçümleri alma.

Dosyalar ve modeller gibi günlüğe kaydettiğiniz yapıtları indirmek için mlflow.artifacts.download_artifacts() kullanın.

mlflow.artifacts.download_artifacts(run_id="<RUN_ID>", artifact_path="helloworld.txt")

MLflow kullanarak Azure Machine Learning'de denemelerden ve çalıştırmalardan bilgi alma veya karşılaştırma hakkında daha fazla bilgi için bkz. MLflow ile denemeleri ve çalıştırmaları sorgulama ve karşılaştırma.