MLflow kullanarak denemeleri ve modelleri izleme

İzleme , denemeler hakkında ilgili bilgileri kaydetme işlemidir. Bu makalede, Azure Machine Learning çalışma alanlarında denemeleri ve çalıştırmaları izlemek için MLflow'un nasıl kullanılacağını öğreneceksiniz.

Azure Machine Learning kullanırken MLflow API'sinde kullanılabilen bazı yöntemler 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. Ayrıca MLflow ve Azure Machine Learning makalesinden Azure Machine Learning'de desteklenen MLflow işlevleri hakkında bilgi edinebilirsiniz.

Uyarı

Önkoşullar

  • MLflow SDK mlflow paketini ve MLflow için Azure Machine Learning azureml-mlflow eklentisini yükleyin:

    pip install mlflow azureml-mlflow
    

    Tavsiye

    SQL depolama, sunucu, kullanıcı arabirimi veya veri bilimi bağımlılıkları olmadan basit bir MLflow paketi olan paketini kullanabilirsiniz mlflow-skinny . Bu paketi öncelikle MLflow izleme ve günlüğe kaydetme özelliklerine ihtiyacı olan ancak dağıtımlar dahil olmak üzere tam özellik paketine ihtiyaç duymayan kullanıcılar için öneririz.

  • Azure Machine Learning çalışma alanı oluşturun. Çalışma alanı oluşturmak için Başlamak için ihtiyacınız olan kaynakları oluşturma bölümüne bakın. Çalışma alanınızda MLflow işlemleri gerçekleştirmek için ihtiyacınız olan erişim izinlerini gözden geçirin.

  • Uzaktan izleme yapmak veya Azure Machine Learning dışında çalışan denemeleri izlemek için 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, günlüğü Varsayılan adlı otomatik olarak oluşturulan bir denemede çalıştırır, ancak hangi denemeyi izleyebileceğinizi 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ırma ayarlarını yapılandırma

Azure Machine Learning, MLflow'un çalıştırmalar olarak adlandırdığı eğitim işleri izler. İşinizin gerçekleştirdiği tüm işlemleri kaydetmek için çalıştırmaları kullanın.

Etkileşimli çalıştığınızda, bir çalışmanın aktif olmasını gerektiren bilgileri günlüğe kaydettiğiniz anda MLflow eğitim sürecinizi izlemeye başlar. Örneğin, MLflow'un otomatik kaydetme işlevi etkinleştirilirse, bir ölçümü veya parametreyi günlüğe kaydettiğinizde veya bir eğitim döngüsü başlattığınızda MLflow izleme başlatılır.

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().

Aşağıdaki kod bir çalıştırmayı el ile başlatır ve not defterinin sonunda sonlandırır:

mlflow.start_run()

# Your code

mlflow.end_run()

Çalıştırmaları el ile başlatmanız en iyisidir, böylece bunları sonlandırmayı unutmayın. Çalıştırmayı sonlandırmayı hatırlamanıza yardımcı olması için bağlam yöneticisi paradigması kullanabilirsiniz.

with mlflow.start_run() as run:
    # Your code

Yeni bir çalıştırma başlatmak için mlflow.start_run() kullandığınızda, run_name parametresini belirtmek yararlı olabilir. Bu parametre daha sonra Azure Machine Learning kullanıcı arabiriminde çalıştırmanın adı olarak çevrilir. Bu uygulama, koşuyu daha hızlı belirlemenize 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 kaydedebilir ve ayrıca MLflow'un otomatik günlüğe kaydetme özelliğine de güvenebilirsiniz. MLflow tarafından desteklenen her makine öğrenmesi çerçevesi, otomatik olarak nelerin izleneceğini belirler.

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

mlflow.autolog()

Çalışma alanlarınızda ölçümleri ve nesneleri görüntüle

MLflow'dan kaydedilen ölçümler ve artefaktlar çalışma alanınızda izlenir. Bunları Azure Machine Learning Studio'da görüntüleyebilir ve bunlara erişebilir veya MLflow SDK'sını kullanarak program aracılığıyla erişebilirsiniz.

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

  1. Çalışma alanınızdaki İşler sayfasında deneme adını seçin.

  2. Deneme ayrıntıları sayfasında Ölçümler sekmesini seçin.

  3. Sayfanın sağ tarafında grafikler görüntü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 yeniden boyutlandırabilir ve yeniden düzenleyebilirsiniz.

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

    Ölçümlerin listesini ve ölçümlerden oluşturulan grafikleri gösteren ölçüm görünümünün ekran görüntüsü.

MLflow SDK'sını kullanarak ölçümlere, parametrelere ve yapıtlara program aracılığıyla 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)

Tavsiye

Yukarıdaki örnek, belirli bir ölçümün yalnızca son değerini döndürür. Belirli bir ölçümün tüm değerlerini almak için yöntemini kullanın mlflow.get_metric_history . Ölçüm 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.