Metrik tampilan & log dan file log v1

BERLAKU UNTUK:SDK Python 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:

  1. Buka tab Percobaan.
  2. Pilih runID untuk proses tertentu.
  3. Pilih Output dan log di bagian atas halaman.
  4. Pilih Unduh semua untuk mengunduh semua log Anda ke folder zip.
  5. Anda juga dapat mengunduh file log individu dengan memilih file log dan memilih Unduh

Screenshot of Output and logs section of a run.

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

  1. 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))
    
  2. 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:

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: