Memulai, memantau, dan melacak riwayat eksekusi
BERLAKU UNTUK: Python SDK azureml v1
BERLAKU UNTUK: Ekstensi ml Azure CLI v1
Azure Machine Learning SDK untuk Python v1 dan Machine Learning CLI menyediakan berbagai metode untuk memantau, mengelola, dan melacak eksekusi untuk pelatihan dan eksperimen. Riwayat eksekusi ML Anda adalah bagian penting dari proses pengembangan ML yang dapat dijelaskan dan diulang.
Tip
Untuk informasi tentang cara menggunakan studio, lihat Melacak, memantau, dan menganalisis eksekusi dengan studio.
Jika Anda menggunakan Azure Machine Learning SDK v2, lihat artikel berikut ini:
Artikel ini memperlihatkan cara melakukan tugas berikut:
- Memantau performa eksekusi.
- Tag dan menemukan eksekusi.
- Jalankan pencarian atas riwayat eksekusi Anda.
- Membatalkan atau menggagalkan eksekusi.
- Membuat eksekusi anakan.
- Memantau status eksekusi melalui pemberitahuan email.
Tip
Jika Anda mencari informasi tentang pemantauan Azure Machine Learning service dan layanan Azure terkait, lihat Cara memantau Azure Machine Learning. Jika Anda mencari informasi tentang model pemantauan yang diterapkan sebagai layanan web, lihat Mengumpulkan data model dan Memantau dengan Application Insights.
Prasyarat
Anda akan memerlukan item berikut:
Langganan Azure. Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai. Coba versi gratis atau berbayar Azure Machine Learning sekarang.
Azure Machine Learning SDK untuk Python (versi 1.0.21 atau yang lebih baru). Untuk memasang atau memperbarui ke versi terbaru SDK, lihat Memasang atau memperbarui SDK.
Untuk memeriksa versi Azure Machine Learning SDK Anda, gunakan kode berikut:
print(azureml.core.VERSION)
Azure CLI dan Ekstensi CLI untuk Azure Machine Learning.
Penting
Beberapa perintah CLI Azure dalam artikel ini menggunakan ekstensi
azure-cli-ml
, atau v1, untuk Azure Machine Learning. Dukungan untuk ekstensi v1 akan berakhir pada 30 September 2025. Anda dapat memasang dan menggunakan ekstensi v1 hingga tanggal tersebut.Kami menyarankan agar Anda beralih ke ekstensi
ml
, atau v2 sebelum 30 September 2025. Untuk informasi selengkapnya mengenai ekstensi v2, lihat Ekstensi Azure ML CLI dan Python SDK v2.
Memantau performa eksekusi
Memulai proses eksekusi dan pencatatannya
BERLAKU UNTUK:
Python SDK azureml v1
Siapkan eksperimen Anda dengan mengimpor kelas Ruang Kerja, Eksperimen, Eksekusi, dan ScriptRunConfig dari paket azureml.core.
import azureml.core from azureml.core import Workspace, Experiment, Run from azureml.core import ScriptRunConfig ws = Workspace.from_config() exp = Experiment(workspace=ws, name="explore-runs")
Memulai proses eksekusi dan pencatatannya dengan metode
start_logging()
ini.notebook_run = exp.start_logging() notebook_run.log(name="message", value="Hello from run!")
Memantau status eksekusi
BERLAKU UNTUK:
Python SDK azureml v1
Dapatkan status eksekusi dengan metode
get_status()
.print(notebook_run.get_status())
Untuk mendapatkan ID eksekusi, waktu eksekusi, dan detail lainnya tentang eksekusi, gunakan metode
get_details()
.print(notebook_run.get_details())
Ketika proses Anda berhasil selesai, gunakan metode
complete()
untuk menandainya sebagai selesai.notebook_run.complete() print(notebook_run.get_status())
Jika Anda menggunakan pola desain Python
with...as
, eksekusi akan secara otomatis menandai dirinya sebagai selesai ketika eksekusi berada di luar lingkup. Anda tidak perlu menandai eksekusi secara manual sebagai selesai.with exp.start_logging() as notebook_run: notebook_run.log(name="message", value="Hello from run!") print(notebook_run.get_status()) print(notebook_run.get_status())
Menandai dan menemukan eksekusi
Di Azure Machine Learning, Anda bisa menggunakan properti dan tag untuk membantu menata dan mengkueri eksekusi Anda jika terdapat informasi penting.
Menambahkan properti dan tag
BERLAKU UNTUK:
Python SDK azureml v1
Untuk menambahkan metadata yang dapat dicari ke eksekusi Anda, gunakan metode
add_properties()
. Misalnya, kode berikut menambahkan properti"author"
ke eksekusi:local_run.add_properties({"author":"azureml-user"}) print(local_run.get_properties())
Properti tidak dapat diubah, sehingga properti membuat catatan permanen untuk tujuan audit. Contoh kode berikut menghasilkan kesalahan, karena kami sudah menambahkan
"azureml-user"
sebagai nilai properti"author"
dalam kode sebelumnya:try: local_run.add_properties({"author":"different-user"}) except Exception as e: print(e)
Tidak seperti properti, tag dapat diubah. Untuk menambahkan informasi yang dapat dicari dan bermakna bagi konsumen eksperimen Anda, gunakan metode
tag()
.local_run.tag("quality", "great run") print(local_run.get_tags()) local_run.tag("quality", "fantastic run") print(local_run.get_tags())
Anda juga dapat menambahkan tag string sederhana. Ketika tag ini muncul di kamus tag sebagai kunci, tag tersebut memiliki nilai
None
.local_run.tag("worth another look") print(local_run.get_tags())
Properti dan tag kueri
Anda bisa mengkueri eksekusi dalam eksperimen untuk menghasilkan daftar eksekusi yang cocok dengan properti dan tag tertentu.
BERLAKU UNTUK:
Python SDK azureml v1
list(exp.get_runs(properties={"author":"azureml-user"},tags={"quality":"fantastic run"})) list(exp.get_runs(properties={"author":"azureml-user"},tags="worth another look"))
Membatalkan atau menggagalkan eksekusi
Jika Anda melihat kesalahan atau jika eksekusi terlalu lama untuk diselesaikan, Anda dapat membatalkan eksekusi.
BERLAKU UNTUK: Python SDK azureml v1
Untuk membatalkan eksekusi menggunakan SDK, gunakan metode cancel()
:
src = ScriptRunConfig(source_directory='.', script='hello_with_delay.py')
local_run = exp.submit(src)
print(local_run.get_status())
local_run.cancel()
print(local_run.get_status())
Jika eksekusi Anda selesai, tetapi berisi kesalahan (misalnya, menggunakan skrip pelatihan yang salah), Anda dapat menggunakan metode fail()
untuk memberi tanda gagal.
local_run = exp.submit(src)
local_run.fail()
print(local_run.get_status())
Buat eksekusi anakan
BERLAKU UNTUK: Python SDK azureml v1
Buat eksekusi anakan untuk mengelompokkan eksekusi terkait, seperti untuk iterasi hyperparameter-tuning yang berbeda.
Catatan
Eksekusi anakan hanya dapat dibuat menggunakan SDK.
Contoh kode ini menggunakan skrip hello_with_children.py
untuk membuat kumpulan lima eksekusi anakan dari dalam proses yang dikirimkan dengan menggunakan metode child_run()
:
!more hello_with_children.py
src = ScriptRunConfig(source_directory='.', script='hello_with_children.py')
local_run = exp.submit(src)
local_run.wait_for_completion(show_output=True)
print(local_run.get_status())
with exp.start_logging() as parent_run:
for c,count in enumerate(range(5)):
with parent_run.child_run() as child:
child.log(name="Hello from child run", value=c)
Catatan
Saat mereka bergerak keluar dari lingkup, eksekusi anakan secara otomatis diberi tanda selesai.
Untuk membuat banyak eksekusi anakan secara efisien, gunakan metode create_children()
. Karena setiap kreasi menghasilkan panggilan jaringan, membuat batch eksekusi lebih efisien daripada membuatnya satu per satu.
Kirim eksekusi anakan
Eksekusi anakan juga dapat dikirimkan dari eksekusi induk. Ini memungkinkan Anda membuat hierarki eksekusi induk dan anakan. Anda tidak dapat membuat eksekusi anakan tanpa induk: bahkan jika eksekusi induk tidak melakukan apa-apa selain meluncurkan eksekusi anakan, tetap masih perlu membuat hierarki. Status semua eksekusi adalah independen: induk dapat berada dalam status berhasil "Completed"
meskipun satu atau beberapa eksekusi anakan dibatalkan atau gagal.
Anda mungkin ingin eksekusi anakan menggunakan konfigurasi yang berbeda dari eksekusi induk. Misalnya, Anda dapat menggunakan konfigurasi berbasis CPU yang kurang kuat untuk induknya, sementara menggunakan konfigurasi berbasis GPU untuk anakan. Keinginan umum lainnya adalah untuk meneruskan setiap anakan argumen dan data yang berbeda. Untuk menyesuaikan eksekusi anakan, buat objek ScriptRunConfig
untuk eksekusi anakan.
Penting
Untuk mengirim eksekusi anakan dari induk yang dijalankan pada komputasi jarak jauh, Anda harus masuk ke ruang kerja di kode eksekusi induk terlebih dahulu. Secara default, objek konteks eksekusi dalam eksekusi jangka jauh tidak memiliki kredensial untuk mengirimkan eksekusi anakan. Gunakan kredensial perwakilan layanan atau identitas terkelola untuk masuk. Untuk informasi selengkapnya tentang mengautentikasi, lihat menyiapkan autentikasi.
Kode di bawah ini:
- Mengambil sumber daya komputasi yang dinamai
"gpu-cluster"
dari ruang kerjaws
- Mengulangi pada nilai argumen yang berbeda untuk diteruskan ke objek anakan
ScriptRunConfig
- Membuat dan mengirimkan eksekusi anakan, menggunakan sumber daya komputasi kustom dan argumen
- Blokir hingga semua eksekusi anakan telah selesai
# parent.py
# This script controls the launching of child scripts
from azureml.core import Run, ScriptRunConfig
compute_target = ws.compute_targets["gpu-cluster"]
run = Run.get_context()
child_args = ['Apple', 'Banana', 'Orange']
for arg in child_args:
run.log('Status', f'Launching {arg}')
child_config = ScriptRunConfig(source_directory=".", script='child.py', arguments=['--fruit', arg], compute_target=compute_target)
# Starts the run asynchronously
run.submit_child(child_config)
# Experiment will "complete" successfully at this point.
# Instead of returning immediately, block until child runs complete
for child in run.get_children():
child.wait_for_completion()
Untuk membuat banyak eksekusi anakan dengan konfigurasi, argumen, dan input yang identik secara efisien, gunakan metode create_children()
. Karena setiap kreasi menghasilkan panggilan jaringan, membuat batch eksekusi lebih efisien daripada membuatnya satu per satu.
Dalam eksekusi anakan, Anda dapat melihat ID eksekusi induk:
## In child run script
child_run = Run.get_context()
child_run.parent.id
Kueri eksekusi anakan
Untuk mengkueri eksekusi anakan dari induk tertentu, gunakan metode get_children()
.
Argumen recursive = True
ini memungkinkan Anda untuk meminta pohon bertingkat dari anak dan cucu.
print(parent_run.get_children())
Log ke eksekusi induk atau root
Anda dapat menggunakan bidang Run.parent
untuk mengakses eksekusi yang meluncurkan eksekusi anakan saat ini. Kasus penggunaan umum untuk penggunaan Run.parent
adalah menggabungkan hasil log di satu tempat. Eksekusi anakan mengeksekusi secara asinkron dan tidak ada jaminan urutan atau sinkronisasi di luar kemampuan induk untuk menunggu eksekusi anakan selesai.
# in child (or even grandchild) run
def root_run(self : Run) -> Run :
if self.parent is None :
return self
return root_run(self.parent)
current_child_run = Run.get_context()
root_run(current_child_run).log("MyMetric", f"Data from child run {current_child_run.id}")
Memantau status eksekusi melalui pemberitahuan email
Di portal Microsoft Azure, di bilah navigasi kiri, pilih tab Monitor.
Pada Pengaturan diagnostik, pilih + Tambahkan pengaturan diagnostik.
Di Pengaturan Diagnostik,
- di bawah Detail kategori, pilih AmlRunStatusChangedEvent.
- Di Detail tujuan, pilih Kirim ke ruang kerja Log Analytics dan tentukan Langganan serta Ruang kerja Log Analytics.
Catatan
Ruang Kerja Azure Log Analytics adalah jenis Sumber Daya Azure yang berbeda dari Ruang Kerja Azure Machine Learning service. Jika tidak ada opsi dalam daftar itu, Anda dapat membuat Ruang Kerja Log Analytics.
Di tab Log, tambahkan Aturan pemberitahuan baru.
Lihat cara membuat dan mengelola peringata log menggunakan Azure Monitor.
Contoh buku catatan
Notebook berikut ini menunjukkan konsep dalam artikel ini:
Untuk mempelajari selengkapnya tentang API pembuatan log, lihat pembuatan log API notebook.
Untuk informasi selengkapnya tentang mengelola eksekusi dengan Azure Machine Learning SDK, lihat mengelola eksekusi notebook.
Langkah berikutnya
- Untuk mempelajari cara mencatat metrik untuk eksperimen Anda, lihat Mencatat metrik selama pelatihan berjalan.
- Untuk mempelajari cara memantau sumber daya dan log dari Azure Machine Learning, lihat Memantau 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