Metrik tampilan & log dan file log v1
BERLAKU UNTUK: Python SDK azureml v1
Catat informasi real time menggunakan paket pengelogan Python default dan fungsi khusus SDK Python Azure Machine Learning. Anda dapat mencatat secara lokal dan mengirim log ke ruang kerja di portal.
Log dapat membantu Anda mendiagnosis kesalahan dan peringatan, atau melacak metrik performa seperti parameter dan kinerja model. Pada artikel ini, Anda mempelajari cara mengaktifkan pengelogan dalam skenario berikut:
- Metrik proses log
- Sesi pelatihan interaktif
- Mengirimkan tugas pelatihan menggunakan ScriptRunConfig
- Pengaturan
logging
asli Python - Pengelogan dari sumber lain
Tip
Artikel ini menunjukkan cara memantau proses pelatihan model. Jika Anda tertarik untuk memantau penggunaan sumber daya dan peristiwa dari Azure Pembelajaran Mesin, seperti kuota, eksekusi pelatihan yang selesai, atau penyebaran model yang selesai, lihat Memantau Azure Pembelajaran Mesin.
Jenis data
Anda dapat mencatat beberapa jenis data termasuk nilai skalar, daftar, tabel, gambar, direktori, dan banyak lagi. Untuk informasi selengkapnya, dan contoh kode Python untuk jenis data yang berbeda, lihat Halaman referensi kelas proses.
Metrik proses pengelogan
Gunakan metode berikut di API pengelogan untuk memengaruhi visualisasi metrik. Perhatikan batas layanan untuk metrik yang dicatat ini.
Nilai Tercatat | Contoh kode | Format di portal |
---|---|---|
Mencatat array nilai numerik | run.log_list(name='Fibonacci', value=[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]) |
diagram garis dengan satu variabel |
Mencatat satu nilai numerik dengan nama metrik sama yang sudah digunakan berulang kali (seperti dari dalam for loop) | for i in tqdm(range(-10, 10)): run.log(name='Sigmoid', value=1 / (1 + np.exp(-i))) angle = i / 2.0 |
Diagram garis dengan satu variabel |
Mencatat baris dengan 2 kolom numerik berulang kali | run.log_row(name='Cosine Wave', angle=angle, cos=np.cos(angle)) sines['angle'].append(angle) sines['sine'].append(np.sin(angle)) |
Diagram garis dengan dua variabel |
Tabel log dengan 2 kolom numerik | run.log_table(name='Sine Wave', value=sines) |
Diagram garis dengan dua variabel |
Gambar log | run.log_image(name='food', path='./breadpudding.jpg', plot=None, description='desert') |
Gunakan metode ini untuk mencatat file gambar atau plot matplotlib ke eksekusi. Gambar-gambar ini akan terlihat dan dapat dibandingkan di catatan proses |
Masuk dengan MLflow
Kami sarankan untuk mencatat model, metrik, dan artefak Anda dengan MLflow karena sumber terbuka dan mendukung mode lokal ke portabilitas cloud. Contoh tabel dan kode berikut menunjukkan cara menggunakan MLflow untuk mencatat metrik dan artefak dari pelatihan Anda. Pelajari lebih lanjut tentang metode pengelogan dan pola desain MLflow.
Pastikan untuk memasang paket pip mlflow
and azureml-mlflow
ke ruang kerja Anda.
pip install mlflow
pip install azureml-mlflow
Atur pelacakan MLflow URI ke titik di backend Azure Machine Learning untuk memastikan bahwa metrik dan artefak Anda dicatat ke ruang kerja Anda.
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()
Nilai Tercatat | Contoh kode | Catatan |
---|---|---|
Mencatat nilai numerik (int atau float) | mlflow.log_metric('my_metric', 1) |
|
Log nilai boolean | mlflow.log_metric('my_metric', 0) |
0 = Benar, 1 = Salah |
Log untai (karakter) | mlflow.log_text('foo', 'my_string') |
Dicatat sebagai artefak |
Log numpy metrik atau objek gambar PIL | mlflow.log_image(img, 'figure.png') |
|
Log plot matlotlib atau file gambar | mlflow.log_figure(fig, "figure.png") |
Menampilkan metrik yang dijalankan melalui SDK
Anda dapat melihat metrik model yang dilatih menggunakan run.get_metrics()
.
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
Anda juga dapat mengakses informasi yang dijalankan menggunakan MLflow melalui properti data dan info objek yang dijalankan. Lihat dokumentasi objek MLflow.entities.Run untuk informasi selengkapnya.
Setelah menjalankan selesai, Anda dapat mengambilnya menggunakan MlFlowClient().
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)
Anda dapat melihat metrik, parameter, dan tag untuk dijalankan di bidang data objek yang dijalankan.
metrics = finished_mlflow_run.data.metrics
tags = finished_mlflow_run.data.tags
params = finished_mlflow_run.data.params
Catatan
Kamus metrik di bawah mlflow.entities.Run.data.metrics
ini hanya mengembalikan nilai yang paling baru dicatat untuk nama metrik tertentu. Misalnya, jika Anda log, dalam urutan, 1, kemudian 2, maka 3, maka 4 untuk metrik yang disebut sample_metric
, hanya 4 yang hadir dalam kamus metrik untuk sample_metric
.
Untuk mendapatkan semua metrik yang dicatat untuk nama metrik tertentu, Anda dapat menggunakan MlFlowClient.get_metric_history()
.
Lihat metrik eksekusi di studio antarmuka pengguna
Anda dapat menelusuri catatan proses yang telah diselesaikan, termasuk metrik yang dicatat, di studio Azure Machine Learning.
Buka tab Eksperimen. Untuk melihat semua proses Anda di Ruang Kerja di seluruh Eksperimen, pilih tab Semua proses. Anda dapat menelusuri proses untuk Eksperimen tertentu dengan menerapkan filter Eksperimen di bilah menu atas.
Untuk tampilan Eksperimen individu, pilih tab Semua eksperimen. Di dasbor percobaan yang dijalankan, Anda dapat melihat metrik dan log yang dilacak untuk setiap proses.
Anda juga dapat mengedit tabel daftar proses untuk memilih beberapa proses dan menampilkan nilai log terakhir, minimum, atau maksimum untuk proses Anda. Sesuaikan diagram Anda untuk membandingkan nilai metrik yang dicatat dan agregat di beberapa proses. Anda dapat memplot beberapa metrik pada sumbu y diagram dan menyesuaikan sumbu x untuk memplot metrik yang dicatat.
Melihat dan mengunduh file log untuk proses
File log adalah sumber daya penting untuk men-debug beban kerja Azure Pembelajaran Mesin. Setelah mengirimkan tugas pelatihan, telusuri paling detail proses tertentu untuk melihat log dan outputnya:
- Buka tab Percobaan.
- Pilih runID untuk proses tertentu.
- Pilih Output dan log di bagian atas halaman.
- Pilih Unduh semua untuk mengunduh semua log Anda ke folder zip.
- Anda juga dapat mengunduh file log individu dengan memilih file log dan memilih Unduh
Folder user_logs
Folder ini berisi informasi mengenai log yang dihasilkan pengguna. Folder ini terbuka secara default, dan log std_log.txt dipilih. std_log.txt adalah tempat log kode Anda (misalnya, pernyataan cetak) muncul. File ini berisi log stdout
dan log stderr
dari skrip kontrol dan skrip pelatihan Anda, satu log untuk per prosesnya. Dalam sebagian besar kasus, Anda akan memantau log di sini.
Folder system_logs
Folder ini berisi log yang dihasilkan oleh Azure Machine Learning dan akan ditutup secara default. Log yang dihasilkan oleh sistem dikelompokkan ke dalam folder yang berbeda, berdasarkan tahapan pekerjaan dalam waktu proses.
Folder lainnya
Untuk pelatihan pekerjaan pada kluster multi-komputasi, log akan tersedia untuk setiap IP node. Struktur untuk setiap node sama dengan pekerjaan satu node. Ada satu lagi folder log untuk log eksekusi secara keseluruhan, yaitu stderr dan stdout.
Azure Machine Learning mencatat informasi dari berbagai sumber selama pelatihan, seperti AutoML atau kontainer Docker yang menjalankan tugas pelatihan. Banyak dari log ini tidak didokumentasikan. Jika Anda mengalami masalah dan menghubungi dukungan Microsoft, mereka mungkin dapat menggunakan log ini selama pemecahan masalah.
Sesi pengelogan interaktif
Sesi pengelogan interaktif biasanya digunakan di lingkungan notebook. Metode Experiment.start_logging() memulai sesi pengelogan interaktif. Metrik apa pun yang dicatat selama sesi ditambahkan ke catatan proses dalam eksperimen. Metode run.complete() mengakhiri sesi dan menandai proses sebagai selesai.
Log ScriptRun
Di bagian ini, Anda mempelajari cara menambahkan kode pengelogan di dalam proses yang dibuat saat dikonfigurasi dengan ScriptRunConfig. Anda dapat menggunakan kelas ScriptRunConfig guna merangkum skrip dan lingkungan untuk proses berulang. Anda juga dapat menggunakan opsi ini untuk menampilkan widget Jupyter Notebooks visual untuk pemantauan.
Contoh ini melakukan pembersihan parameter pada nilai alfa dan menangkap hasilnya menggunakan metode run.log().
Buat skrip pelatihan yang menyertakan logika pengelogan,
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))
Kirimkan skrip
train.py
untuk dijalankan di lingkungan yang dikelola pengguna. Seluruh folder skrip dikirimkan untuk pelatihan.from azureml.core import ScriptRunConfig src = ScriptRunConfig(source_directory='./scripts', script='train.py', environment=user_managed_env)
run = exp.submit(src)
Parameter
show_output
mengaktifkan pengelogan verbose, yang memungkinkan Anda melihat detail dari proses pelatihan serta informasi tentang sumber daya jarak jauh atau target komputasi. Gunakan kode berikut untuk mengaktifkan pengelogan verbose saat Anda mengirimkan eksperimen.run = exp.submit(src, show_output=True)
Anda juga dapat menggunakan parameter yang sama dalam fungsi
wait_for_completion
pada proses yang dihasilkan.run.wait_for_completion(show_output=True)
Pengelogan Python asli
Beberapa log di SDK mungkin berisi kesalahan yang menginstruksikan Anda untuk menyetel tingkat pengelogan ke DEBUG. Untuk mengatur tingkat pengelogan, tambahkan kode berikut ke skrip Anda.
import logging
logging.basicConfig(level=logging.DEBUG)
Sumber pengelogan lainnya
Azure Machine Learning juga dapat mencatat informasi dari sumber lain selama pelatihan, seperti eksekusi mesin pembelajaran otomatis, atau kontainer Docker yang menjalankan pekerjaan. Log ini tidak didokumentasikan, tetapi jika Anda mengalami masalah dan menghubungi dukungan Microsoft, mereka mungkin dapat menggunakan log ini selama pemecahan masalah.
Untuk informasi tentang metrik pengelogan di perancang Azure Machine Learning, lihat Cara membuat log metrik di perancang
Contoh buku catatan
Notebook berikut menunjukkan konsep dalam artikel ini:
- how-to-use-azureml/training/train-on-local
- how-to-use-azureml/track-and-monitor-experiments/logging-api
Pelajari cara menjalankan notebook dengan mengikuti artikel Menggunakan notebook Jupyter untuk menjelajahi layanan ini.
Langkah berikutnya
Lihat artikel ini untuk mempelajari selengkapnya tentang cara menggunakan Azure Machine Learning:
- Untuk contoh cara mendaftarkan dan menyebarkan model terbaik, lihat pada tutorial Latih model klasifikasi gambar dengan Azure Machine Learning.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk