Günlük & ölçümleri ve günlük dosyalarını görüntüleme v1
ŞUNUN IÇIN GEÇERLIDIR:Python SDK azureml v1
Hem varsayılan Python günlük paketi hem de Azure Machine Learning Python SDK'sı'na özgü işlevselliği kullanarak gerçek zamanlı bilgileri günlüğe kaydetme. Günlükleri yerel olarak kaydedebilir ve portaldaki çalışma alanınıza gönderebilirsiniz.
Günlükler; hataları ve uyarıları tanılamanıza veya parametreler ve model performansı gibi performans ölçümlerini takip etmenize yardımcı olabilir. Bu makalede aşağıdaki senaryolarda günlüğe kaydetmeyi nasıl etkinleştirebileceğinizi öğreneceksiniz:
- Günlük çalıştırması ölçümleri
- Etkileşimli eğitim oturumları
- ScriptRunConfig kullanarak eğitim işi gönderme
- Python'daki yerel
logging
ayarları - Ek kaynaklardan günlüğe kaydetme
İpucu
Bu makalede model eğitim sürecini nasıl izleyebileceğiniz gösterilmiştir. Azure Machine Learning'den gelen kotalar, tamamlanmış eğitim çalıştırmaları veya tamamlanmış model dağıtımları gibi kaynak kullanımını ve olaylarını izlemek istiyorsanız bkz . Azure Machine Learning'i izleme.
Veri türleri
Skaler değerler, listeler, tablolar, görüntüler ve dizinler gibi birçok farklı veri türünü günlüğe kaydedebilirsiniz. Farklı veri türleri hakkında daha fazla bilgi edinmek ve Python kodu örneklerini görmek için bkz. Çalıştırma sınıfı başvuru sayfası.
Çalıştırma ölçümlerini günlüğe kaydetme
Ölçüm görselleştirmelerini etkilemek için günlük API'lerinde aşağıdaki yöntemleri kullanın. Günlüğe kaydedilen bu ölçümler için hizmet sınırlarını not edin.
Günlüğe Kaydedilen Değer | Örnek kod | Portalda biçimlendirme |
---|---|---|
Sayısal değer dizisini günlüğe kaydetme | run.log_list(name='Fibonacci', value=[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]) |
tek değişkenli çizgi grafik |
Aynı ölçüm adıyla tek bir sayısal değeri art arda günlüğe kaydetme (for döngüsünün içinden olduğu gibi) | for i in tqdm(range(-10, 10)): run.log(name='Sigmoid', value=1 / (1 + np.exp(-i))) angle = i / 2.0 |
Tek değişkenli çizgi grafik |
2 sayısal sütun içeren bir satırı art arda günlüğe kaydetme | run.log_row(name='Cosine Wave', angle=angle, cos=np.cos(angle)) sines['angle'].append(angle) sines['sine'].append(np.sin(angle)) |
İki değişkenli çizgi grafik |
2 sayısal sütun içeren günlük tablosu | run.log_table(name='Sine Wave', value=sines) |
İki değişkenli çizgi grafik |
Günlük görüntüsü | run.log_image(name='food', path='./breadpudding.jpg', plot=None, description='desert') |
Bir görüntü dosyasını veya matplotlib çizimini çalıştırmaya kaydetmek için bu yöntemi kullanın. Bu görüntüler çalıştırma kaydında görünür ve karşılaştırılabilir |
MLflow ile günlüğe kaydetme
Modellerinizi, ölçümlerinizi ve yapıtlarınızı açık kaynak ve yerel moddan buluta taşınabilirliği desteklediği için MLflow ile günlüğe kaydetmenizi öneririz. Aşağıdaki tablo ve kod örnekleri, eğitim çalıştırmalarınızdaki ölçümleri ve yapıtları günlüğe kaydetmek için MLflow'un nasıl kullanılacağını gösterir. MLflow'un günlük yöntemleri ve tasarım desenleri hakkında daha fazla bilgi edinin.
ve azureml-mlflow
pip paketlerini çalışma alanınıza yüklediğinizden mlflow
emin olun.
pip install mlflow
pip install azureml-mlflow
Ölçümlerinizin ve yapıtlarınızın çalışma alanınızda günlüğe kaydedildiğinden emin olmak için MLflow izleme URI'sini Azure Machine Learning arka ucuna işaret eder şekilde ayarlayın.
from azureml.core import Workspace
import mlflow
from mlflow.tracking import MlflowClient
ws = Workspace.from_config()
mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())
mlflow.create_experiment("mlflow-experiment")
mlflow.set_experiment("mlflow-experiment")
mlflow_run = mlflow.start_run()
Günlüğe Kaydedilen Değer | Örnek kod | Notlar |
---|---|---|
Sayısal bir değeri günlüğe kaydetme (int veya float) | mlflow.log_metric('my_metric', 1) |
|
Boole değerini günlüğe kaydetme | mlflow.log_metric('my_metric', 0) |
0 = Doğru, 1 = Yanlış |
Dizeyi günlüğe kaydetme | mlflow.log_text('foo', 'my_string') |
Yapıt olarak günlüğe kaydedildi |
Numpy ölçümlerini veya PIL görüntüsü nesnelerini günlüğe kaydetme | mlflow.log_image(img, 'figure.png') |
|
Günlük matlotlib çizimi veya görüntü dosyası | mlflow.log_figure(fig, "figure.png") |
SDK aracılığıyla çalıştırma ölçümlerini görüntüleme
kullanarak run.get_metrics()
eğitilmiş modelin ölçümlerini görüntüleyebilirsiniz.
from azureml.core import Run
run = Run.get_context()
run.log('metric-name', metric_value)
metrics = run.get_metrics()
# metrics is of type Dict[str, List[float]] mapping metric names
# to a list of the values for that metric in the given run.
metrics.get('metric-name')
# list of metrics in the order they were recorded
Çalıştırma nesnesinin veri ve bilgi özellikleri aracılığıyla MLflow kullanarak çalıştırma bilgilerine de erişebilirsiniz. Daha fazla bilgi için MLflow.entities.Run nesnesi belgelerine bakın.
Çalıştırma tamamlandıktan sonra MlFlowClient() kullanarak alabilirsiniz.
from mlflow.tracking import MlflowClient
# Use MlFlow to retrieve the run that was just completed
client = MlflowClient()
finished_mlflow_run = MlflowClient().get_run(mlflow_run.info.run_id)
Çalıştırmanın ölçümlerini, parametrelerini ve etiketlerini çalıştırma nesnesinin veri alanında görüntüleyebilirsiniz.
metrics = finished_mlflow_run.data.metrics
tags = finished_mlflow_run.data.tags
params = finished_mlflow_run.data.params
Not
altındaki mlflow.entities.Run.data.metrics
ölçüm sözlüğü yalnızca belirli bir ölçüm adı için en son günlüğe kaydedilen değeri döndürür. Örneğin, sırasıyla 1, sonra 2, sonra 3 ve ardından 4'te adlı sample_metric
bir metrikte günlüğe kaydederseniz, için ölçüm sözlüğünde sample_metric
yalnızca 4 bulunur.
Belirli bir ölçüm adı için günlüğe kaydedilen tüm ölçümleri almak için kullanabilirsiniz MlFlowClient.get_metric_history()
.
Çalışma ölçümlerini stüdyo kullanıcı arabiriminde görüntüleme
Azure Machine Learning stüdyosu günlüğe kaydedilen ölçümler de dahil olmak üzere tamamlanmış çalıştırma kayıtlarına göz atabilirsiniz.
Denemeler sekmesine gidin. Denemeler arasında Çalışma Alanınızdaki tüm çalıştırmalarınızı görüntülemek için Tüm çalıştırmalar sekmesini seçin. Üst menü çubuğundaki Deneme filtresini uygulayarak belirli Denemeler için çalıştırmalarda detaya gidebilirsiniz.
Tek tek Deneme görünümü için Tüm denemeler sekmesini seçin. Deneme çalıştırması panosunda, her çalıştırma için izlenen ölçümleri ve günlükleri görebilirsiniz.
Ayrıca, çalıştırma listesi tablosunu düzenleyerek birden çok çalıştırma seçebilir ve çalıştırmalarınız için en son, en düşük veya en fazla günlüğe kaydedilen değeri görüntüleyebilirsiniz. Birden çok çalıştırmada günlüğe kaydedilen ölçüm değerlerini ve toplamlarını karşılaştırmak için grafiklerinizi özelleştirin. Grafiğinizin y eksenine birden çok ölçüm çizebilir ve x ekseninizi özelleştirerek günlüğe kaydedilen ölçümlerinizi çizebilirsiniz.
Çalıştırmanın günlük dosyalarını görüntüleme ve indirme
Günlük dosyaları, Azure Machine Learning iş yüklerinde hata ayıklamak için temel bir kaynaktır. Eğitim işini gönderdikten sonra, günlüklerini ve çıkışlarını görüntülemek için belirli bir çalıştırmanın detayına gidin:
- Denemeler sekmesine gidin.
- Belirli bir çalıştırma için runID'yi seçin.
- Sayfanın üst kısmındaki Çıkışlar ve günlükler'i seçin.
- Tüm günlüklerinizi bir zip klasörüne indirmek için Tümünü indir'i seçin.
- Günlük dosyasını seçip İndir'i seçerek tek tek günlük dosyalarını da indirebilirsiniz
user_logs klasörü
Bu klasör, kullanıcı tarafından oluşturulan günlükler hakkında bilgi içerir. Bu klasör varsayılan olarak açıktır ve std_log.txt günlüğü seçilidir. std_log.txt, kodunuzun günlüklerinin (örneğin, yazdırma deyimleri) göründüğü yerdir. Bu dosya, denetim betiğinizden ve stderr
eğitim betiğinizden günlükleri ve işlem başına birer günlük içerirstdout
. Çoğu durumda günlükleri burada izlersiniz.
system_logs klasörü
Bu klasör, Azure Machine Learning tarafından oluşturulan günlükleri içerir ve varsayılan olarak kapatılır. Sistem tarafından oluşturulan günlükler, çalışma zamanındaki işin aşamasına göre farklı klasörler halinde gruplandırılır.
Diğer klasörler
Çoklu işlem kümeleri üzerinde iş eğitimi için her düğüm IP'sinde günlükler bulunur. Her düğümün yapısı tek düğüm işleri ile aynıdır. Genel yürütme, stderr ve stdout günlükleri için bir günlük klasörü daha vardır.
Azure Machine Learning, eğitim sırasında AutoML veya eğitim işini çalıştıran Docker kapsayıcısı gibi çeşitli kaynaklardan gelen bilgileri günlüğe kaydeder. Bu günlüklerin çoğu belgelenmemiştir. Sorunlarla karşılaşır ve Microsoft desteğine başvurursanız, sorun giderme sırasında bu günlükleri kullanabilirler.
Etkileşimli günlüğe kaydetme oturumu
Etkileşimli günlüğe kaydetme oturumları genellikle not defteri ortamlarında kullanılır. Experiment.start_logging() yöntemi etkileşimli günlüğe kaydetme oturumu başlatır. Oturum sırasında günlüğe kaydedilen ölçümler, denemedeki çalıştırma kaydına eklenir. run.complete() yöntemi oturumları sonlandırır ve çalıştırmayı tamamlandı olarak işaretler.
ScriptRun günlükleri
Bu bölümde ScriptConfig ile yapılandırıldığında oluşturulan çalıştırmalara günlüğe kaydetme kodu eklemeyi öğreneceksiniz. ScriptRunConfig sınıfını kullanarak yinelenebilir çalıştırmalar için betikleri ve ortamları kapsülleyebilirsiniz. Bu seçeneği ayrıca izleme amacıyla görsel bir Jupyter Notebook pencere öğesi göstermek için de kullanabilirsiniz.
Bu örnek, run.log() yöntemini kullanarak alfa değerleri üzerinde parametre tarama işlemi gerçekleştirir ve sonuçları yakalar.
Günlüğe kaydetme mantığını içeren bir eğitim betiği oluşturun:
train.py
.# Copyright (c) Microsoft. All rights reserved. # Licensed under the MIT license. from sklearn.datasets import load_diabetes from sklearn.linear_model import Ridge from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split from azureml.core.run import Run import os import numpy as np import mylib # sklearn.externals.joblib is removed in 0.23 try: from sklearn.externals import joblib except ImportError: import joblib os.makedirs('./outputs', exist_ok=True) X, y = load_diabetes(return_X_y=True) run = Run.get_context() X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) data = {"train": {"X": X_train, "y": y_train}, "test": {"X": X_test, "y": y_test}} # list of numbers from 0.0 to 1.0 with a 0.05 interval alphas = mylib.get_alphas() for alpha in alphas: # Use Ridge algorithm to create a regression model reg = Ridge(alpha=alpha) reg.fit(data["train"]["X"], data["train"]["y"]) preds = reg.predict(data["test"]["X"]) mse = mean_squared_error(preds, data["test"]["y"]) run.log('alpha', alpha) run.log('mse', mse) model_file_name = 'ridge_{0:.2f}.pkl'.format(alpha) # save model in the outputs folder so it automatically get uploaded with open(model_file_name, "wb") as file: joblib.dump(value=reg, filename=os.path.join('./outputs/', model_file_name)) print('alpha is {0:.2f}, and mse is {1:0.2f}'.format(alpha, mse))
train.py
betiğini kullanıcı tarafından yönetilen bir ortamda çalıştırılmak üzere gönderin. Betik klasörünün tamamı eğitim için gönderilir.from azureml.core import ScriptRunConfig src = ScriptRunConfig(source_directory='./scripts', script='train.py', environment=user_managed_env)
run = exp.submit(src)
show_output
parametresi, eğitim sürecinin ayrıntılarına ek olarak uzak kaynaklar veya işlem hedefleri hakkındaki bilgileri görmenizi sağlayan ayrıntılı günlüğe kaydetme özelliğini etkinleştirir. Denemeyi gönderdiğinizde ayrıntılı günlüğe kaydetme özelliğini açmak için aşağıdaki kodu kullanın.run = exp.submit(src, show_output=True)
İsterseniz aynı parametreyi sonuç çalıştırmasındaki
wait_for_completion
işlevde de kullanabilirsiniz.run.wait_for_completion(show_output=True)
Yerel Python günlüğü
SDK'daki bazı günlüklerde günlük kaydı düzeyini DEBUG olarak ayarlamanızı isteyen hatalar bulunabilir. Günlük kaydı düzeyini ayarlamak için aşağıdaki kodu betiğinize ekleyin.
import logging
logging.basicConfig(level=logging.DEBUG)
Diğer günlük kaynakları
Azure Machine Learning; eğitim sırasında otomatik makine öğrenmesi çalıştırmaları veya işleri çalıştıran Docker kapsayıcıları gibi farklı kaynaklardan alınan günlük bilgilerini de kullanabilir. Bu günlük kayıtları belge halinde sunulmaz ancak karşılaştığınız sorunlar için Microsoft destek ekibiyle iletişime geçerseniz sorun giderme aşamasında bu günlükler kullanılabilir.
Azure Machine Learning tasarımcısında ölçümleri günlüğe kaydetme hakkında daha fazla bilgi için bkz. Tasarımcıda ölçümleri günlüğe kaydetme
Örnek not defterleri
Aşağıdaki not defterlerinde bu makaledeki kavramlar gösterilmiştir:
- how-to-use-azureml/training/train-on-local
- how-to-use-azureml/track-and-monitor-experiments/logging-api
Not defterlerini çalıştırmayı öğrenmek için bkz. Hizmeti keşfetmek için Jupyter not defterlerini kullanma.
Sonraki adımlar
Azure Machine Learning'i kullanma hakkında daha fazla bilgi edinmek için şu makaleleri inceleyin:
- En iyi modeli kaydetme ve dağıtma öğreticisi için bkz. Azure Machine Learning ile görüntü sınıflandırma modeli eğitme.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin