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 için Azure Machine Learningazureml-mlflow
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 dahil olmak üzere tüm özellik paketini içeri aktarmadan öncelikle MLflow izleme ve günlüğe kaydetme özelliklerine ihtiyaç duyan kullanıcılar için önerilir.Azure Machine Learning çalışma alanı. Çalışma alanı oluşturmak için Makine öğrenmesi kaynakları oluşturma öğreticisine bakın. Çalışma alanınızda MLflow işlemlerinizi gerçekleştirmek için ihtiyacınız olan erişim izinlerini gözden geçirin.
Uzaktan izleme gerçekleştirirseniz (yani Azure Machine Learning dışında çalışan denemeleri izleyin), 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 parametresinirun_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:
Çalışma alanınıza gidin.
Denemeyi çalışma alanınızda ada göre bulun.
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.
İ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.
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.