Menjadwalkan pekerjaan alur pembelajaran mesin
BERLAKU UNTUK:Ekstensi ml Azure CLI v2 (saat ini)Python SDK azure-ai-ml v2 (saat ini)
Dalam artikel ini, Anda akan mempelajari cara menjadwalkan alur secara terprogram untuk dijalankan di Azure dan menggunakan antarmuka pengguna jadwal untuk melakukan hal yang sama. Anda dapat membuat jadwal berdasarkan waktu yang berlalu. Jadwal berbasis waktu dapat digunakan untuk menangani tugas rutin, seperti melatih ulang model atau melakukan prediksi batch secara rutin untuk menjaganya mengikuti perkembangan. Setelah mempelajari cara membuat jadwal, Anda akan mempelajari cara mengambil, memperbarui, dan menonaktifkannya melalui CLI, SDK, dan UI studio.
Tip
Jika Anda perlu menjadwalkan pekerjaan menggunakan orkestrator eksternal, seperti Azure Data Factory atau Microsoft Fabric, pertimbangkan untuk menyebarkan pekerjaan alur Anda di bawah Titik Akhir Batch. Pelajari selengkapnya tentang cara menyebarkan pekerjaan di bawah titik akhir batch, dan cara menggunakan titik akhir batch dari Microsoft Fabric.
Prasyarat
- Anda harus memiliki langganan Azure untuk menggunakan Azure Machine Learning. Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai. Coba versi gratis atau berbayar Azure Machine Learning sekarang.
Instal Azure CLI dan ekstensi
ml
. Ikuti langkah-langkah penginstalan di Memasang, menyiapkan, dan menggunakan CLI (v2).Buat ruang kerja Azure Machine Learning jika Anda belum memilikinya. Untuk pembuatan ruang kerja, lihat Memasang, menyiapkan, dan menggunakan CLI (v2).
Menjadwalkan pekerjaan alur
Untuk menjalankan pekerjaan alur secara berulang, Anda harus membuat jadwal. Schedule
mengaitkan pekerjaan, dan pemicu. Pemicu dapat berupa cron
yang menggunakan ekspresi cron untuk menjelaskan waktu tunggu antara eksekusi atau recurrence
yang menentukan penggunaan frekuensi untuk memicu pekerjaan. Dalam setiap kasus, Anda perlu menentukan pekerjaan alur terlebih dahulu. Pekerjaan alur dapat berupa pekerjaan alur yang ada atau pekerjaan alur yang ditentukan sebaris. Lihat Membuat pekerjaan alur di CLI dan Membuat pekerjaan alur di SDK.
Anda dapat menjadwalkan yaml pekerjaan alur di pekerjaan alur lokal atau yang sudah ada di ruang kerja.
Membuat jadwal
Membuat jadwal berbasis waktu dengan pola pengulangan
BERLAKU UNTUK: Ekstensi ml Azure CLI v2 (saat ini)
$schema: https://azuremlschemas.azureedge.net/latest/schedule.schema.json
name: simple_recurrence_job_schedule
display_name: Simple recurrence job schedule
description: a simple hourly recurrence job schedule
trigger:
type: recurrence
frequency: day #can be minute, hour, day, week, month
interval: 1 #every day
schedule:
hours: [4,5,10,11,12]
minutes: [0,30]
start_time: "2022-07-10T10:00:00" # optional - default will be schedule creation time
time_zone: "Pacific Standard Time" # optional - default will be UTC
create_job: ./simple-pipeline-job.yml
# create_job: azureml:simple-pipeline-job
trigger
berisi properti berikut:
- (Diperlukan)
type
menentukan jenis jadwal adalahrecurrence
. Ini juga dapat berupacron
, lihat detail di bagian berikutnya.
Daftar berlanjut di bawah ini.
Catatan
Properti berikut yang perlu ditentukan berlaku untuk CLI dan SDK.
(Diperlukan)
frequency
menentukan satuan waktu yang menjelaskan seberapa sering jadwal diaktifkan. Dapat berupaminute
,hour
,day
,week
,month
.(Diperlukan)
interval
menentukan seberapa sering jadwal diaktifkan berdasarkan frekuensi, yang merupakan jumlah unit waktu untuk menunggu hingga jadwal diaktifkan lagi.(Opsional)
schedule
mendefinisikan pola pengulangan, yang berisihours
,minutes
, danweekdays
.- Ketika
frequency
adalahday
, pola dapat menentukanhours
danminutes
. - Ketika
frequency
adalahweek
danmonth
, pola dapat menentukanhours
,minutes
, danweekdays
. hours
harus berupa bilangan bulat atau daftar, dari 0 hingga 23.minutes
harus berupa bilangan bulat atau daftar, dari 0 hingga 59.weekdays
dapat berupa string atau daftar darimonday
hinggasunday
.- Apabila
schedule
dihilangkan, pekerjaan akan dipicu menurut logikastart_time
,frequency
, daninterval
.
- Ketika
(Opsional)
start_time
menjelaskan tanggal dan waktu mulai dengan zona waktu. Apabilastart_time
dihilangkan, start_time akan sama dengan waktu pekerjaan dibuat. Apabila waktu mulai sudah lewat, pekerjaan pertama akan berjalan pada waktu eksekusi yang dihitung berikutnya.(Opsional)
end_time
menjelaskan tanggal dan waktu selesai dengan zona waktu. Apabilaend_time
dihilangkan, jadwal akan terus memicu pekerjaan hingga jadwal dinonaktifkan secara manual.(Opsional)
time_zone
menentukan zona waktu pengulangan. Apabila dihilangkan, secara default adalah UTC. Untuk mempelajari selengkapnya tentang nilai zona waktu, lihat lampiran untuk nilai zona waktu.
Membuat jadwal berbasis waktu dengan ekspresi cron
BERLAKU UNTUK: Ekstensi ml Azure CLI v2 (saat ini)
$schema: https://azuremlschemas.azureedge.net/latest/schedule.schema.json
name: simple_cron_job_schedule
display_name: Simple cron job schedule
description: a simple hourly cron job schedule
trigger:
type: cron
expression: "0 * * * *"
start_time: "2022-07-10T10:00:00" # optional - default will be schedule creation time
time_zone: "Pacific Standard Time" # optional - default will be UTC
# create_job: azureml:simple-pipeline-job
create_job: ./simple-pipeline-job.yml
Bagian trigger
menentukan detail jadwal dan berisi properti berikut:
- (Diperlukan)
type
menentukan jenis jadwal adalahcron
.
Daftar berlanjut di bawah ini.
(Diperlukan)
expression
menggunakan ekspresi crontab standar untuk mengekspresikan jadwal berulang. Ekspresi tunggal terdiri dari lima bidang yang dibatasi spasi:MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK
Wildcard tunggal (
*
), yang mencakup semua nilai untuk bidang tersebut. Sehingga*
dalam hari berarti semua hari dalam satu bulan (yang bervariasi dengan bulan dan tahun).expression: "15 16 * * 1"
dalam sampel di atas artinya pukul 16:15 setiap hari Senin.Tabel di bawah ini mencantumkan nilai yang valid untuk setiap bidang:
Bidang Rentang Komentar MINUTES
0-59 - HOURS
0-23 - DAYS
- Tidak didukung. Nilai akan diabaikan dan diperlakukan sebagai *
.MONTHS
- Tidak didukung. Nilai akan diabaikan dan diperlakukan sebagai *
.DAYS-OF-WEEK
0-6 Nol (0) berarti Minggu. Nama hari juga diterima. Untuk mempelajari selengkapnya cara menggunakan ekspresi crontab, lihat Wiki Ekspresi Crontab di GitHub.
Penting
DAYS
danMONTH
tidak didukung. Apabila Anda meneruskan nilai, nilai tersebut akan diabaikan dan diperlakukan sebagai*
.(Opsional)
start_time
menentukan tanggal dan waktu mulai dengan zona waktu jadwal.start_time: "2022-05-10T10:15:00-04:00"
artinya jadwal dimulai dari pukul 10:15:00 pada 10-05-2022 dalam zona waktu UTC-4. Apabilastart_time
dihilangkan,start_time
akan sama dengan waktu pembuatan jadwal. Apabila waktu mulai sudah lewat, pekerjaan pertama akan berjalan pada waktu eksekusi yang dihitung berikutnya.(Opsional)
end_time
menjelaskan tanggal dan waktu selesai dengan zona waktu. Apabilaend_time
dihilangkan, jadwal akan terus memicu pekerjaan hingga jadwal dinonaktifkan secara manual.(Opsional)
time_zone
menentukan zona waktu ekspresi. Apabila dihilangkan, secara default adalah UTC. Lihat lampiran untuk nilai zona waktu.
Batasan:
- Saat ini jadwal Azure Pembelajaran Mesin v2 tidak mendukung pemicu berbasis peristiwa.
- Anda dapat menentukan pola pengulangan kompleks yang berisi beberapa tanda waktu pemicu menggunakan Azure Pembelajaran Mesin SDK/CLI v2, sementara UI hanya menampilkan pola kompleks dan tidak mendukung pengeditan.
- Jika Anda menetapkan pengulangan sebagai hari ke-31 setiap bulan, dalam bulan dengan kurang dari 31 hari, jadwal tidak akan memicu pekerjaan.
Mengubah pengaturan runtime saat menentukan jadwal
Saat menentukan jadwal menggunakan pekerjaan yang ada, Anda dapat mengubah pengaturan runtime pekerjaan. Dengan menggunakan pendekatan ini, Anda dapat menentukan multi-jadwal menggunakan pekerjaan yang sama dengan input yang berbeda.
BERLAKU UNTUK: Ekstensi ml Azure CLI v2 (saat ini)
$schema: https://azuremlschemas.azureedge.net/latest/schedule.schema.json
name: cron_with_settings_job_schedule
display_name: Simple cron job schedule
description: a simple hourly cron job schedule
trigger:
type: cron
expression: "0 * * * *"
start_time: "2022-07-10T10:00:00" # optional - default will be schedule creation time
time_zone: "Pacific Standard Time" # optional - default will be UTC
create_job:
type: pipeline
job: ./simple-pipeline-job.yml
# job: azureml:simple-pipeline-job
# runtime settings
settings:
#default_compute: azureml:cpu-cluster
continue_on_step_failure: true
inputs:
hello_string_top_level_input: ${{name}}
tags:
schedule: cron_with_settings_schedule
Properti berikut dapat diubah saat menentukan jadwal:
Properti | Deskripsi |
---|---|
pengaturan | Kamus pengaturan yang akan digunakan saat menjalankan pekerjaan alur. |
input | Kamus input yang akan digunakan saat menjalankan pekerjaan alur. |
output | Kamus input yang akan digunakan saat menjalankan pekerjaan alur. |
experiment_name | Nama eksperimen dari pekerjaan yang dipicu. |
Catatan
Pengguna UI Studio hanya dapat mengubah pengaturan input, output, dan runtime saat membuat jadwal. experiment_name
hanya dapat diubah menggunakan CLI atau SDK.
Ekspresi yang didukung dalam jadwal
Saat menentukan jadwal, kami mendukung ekspresi berikut yang akan diselesaikan ke nilai nyata selama runtime pekerjaan.
Ekspresi | Deskripsi | Properti yang didukung |
---|---|---|
${{creation_context.trigger_time}} |
Waktu ketika jadwal dipicu. | Input jenis string dari pekerjaan alur |
${{name}} |
Nama pekerjaan. | outputs.path pekerjaan alur |
Mengelola jadwal
Membuat jadwal
BERLAKU UNTUK: Ekstensi ml Azure CLI v2 (saat ini)
Setelah membuat yaml jadwal, Anda dapat menggunakan perintah berikut untuk membuat jadwal melalui CLI.
# This action will create related resources for a schedule. It will take dozens of seconds to complete.
az ml schedule create --file cron-schedule.yml --no-wait
Mencantumkan jadwal di ruang kerja
BERLAKU UNTUK: Ekstensi ml Azure CLI v2 (saat ini)
az ml schedule list
Periksa detail jadwal
BERLAKU UNTUK: Ekstensi ml Azure CLI v2 (saat ini)
az ml schedule show -n simple_cron_job_schedule
Memperbarui jadwal
BERLAKU UNTUK: Ekstensi ml Azure CLI v2 (saat ini)
az ml schedule update -n simple_cron_job_schedule --set description="new description" --no-wait
Catatan
Jika Anda ingin memperbarui lebih dari sekadar tag/deskripsi, disarankan untuk menggunakan az ml schedule create --file update_schedule.yml
Menonaktifkan jadwal
BERLAKU UNTUK: Ekstensi ml Azure CLI v2 (saat ini)
az ml schedule disable -n simple_cron_job_schedule --no-wait
Mengaktifkan jadwal
BERLAKU UNTUK: Ekstensi ml Azure CLI v2 (saat ini)
az ml schedule enable -n simple_cron_job_schedule --no-wait
Kueri memicu pekerjaan dari jadwal
Semua nama tampilan pekerjaan yang dipicu oleh jadwal akan memiliki nama tampilan sebagai <schedule_name>-YYYYMMDDThhmmssZ. Misalnya, apabila jadwal dengan nama jadwal bernama dibuat dengan eksekusi terjadwal setiap 12 jam mulai pukul 06.00 pada 1 Jan 2021, maka nama tampilan pekerjaan yang dibuat adalah sebagai berikut:
- named-schedule-20210101T060000Z
- named-schedule-20210101T180000Z
- named-schedule-20210102T060000Z
- named-schedule-20210102T180000Z, dan seterusnya
Anda juga dapat menerapkan kueri JMESPath Azure CLI untuk mengkueri pekerjaan yang dipicu oleh nama jadwal.
# query triggered jobs from schedule, please replace the simple_cron_job_schedule to your schedule name
az ml job list --query "[?contains(display_name,'simple_cron_schedule')]"
Catatan
Untuk cara yang lebih sederhana untuk menemukan semua pekerjaan yang dipicu oleh jadwal, lihat Riwayat pekerjaan pada halaman detail jadwal menggunakan antarmuka pengguna studio.
Menghapus jadwal
Penting
Jadwal harus dinonaktifkan agar dapat dihapus. Hapus adalah tindakan yang tidak dapat dipulihkan. Setelah jadwal dihapus, Anda tidak pernah dapat mengakses atau memulihkannya.
BERLAKU UNTUK: Ekstensi ml Azure CLI v2 (saat ini)
az ml schedule delete -n simple_cron_job_schedule
Dukungan RBAC (Kontrol akses berbasis peran)
Karena jadwal biasanya digunakan untuk produksi, untuk mengurangi dampak misoperasi, admin ruang kerja mungkin ingin membatasi akses untuk membuat dan mengelola jadwal dalam ruang kerja.
Saat ini ada tiga aturan tindakan yang terkait dengan jadwal dan Anda dapat mengonfigurasi di portal Azure. Anda dapat mempelajari detail selengkapnya tentang cara mengelola akses ke ruang kerja Azure Pembelajaran Mesin.
Tindakan | Deskripsi | Aturan |
---|---|---|
Read | Mendapatkan dan mencantumkan jadwal di ruang kerja Pembelajaran Mesin | Microsoft.MachineLearningServices/workspaces/schedules/read |
Write | Membuat, memperbarui, menonaktifkan, dan mengaktifkan jadwal di ruang kerja Pembelajaran Mesin | Microsoft.MachineLearningServices/workspaces/schedules/write |
Hapus | Menghapus jadwal di ruang kerja Pembelajaran Mesin | Microsoft.MachineLearningServices/workspaces/schedules/delete |
Pertimbangan biaya
- Jadwal ditagih berdasarkan jumlah jadwal, setiap jadwal akan membuat aplikasi logika yang menghosting Azure Pembelajaran Mesin subs atas nama (HOBO) pengguna.
- Biaya aplikasi logika akan berubah kembali ke langganan Azure pengguna, dan Anda dapat menemukan biaya sumber daya HOBO ditagih menggunakan meteran yang sama yang dikeluarkan oleh RP asli. Mereka ditampilkan di bawah sumber daya host (ruang kerja).
Tanya jawab umum
Mengapa jadwal saya yang dibuat oleh SDK tidak tercantum di UI?
UI jadwal adalah untuk jadwal v2. Oleh karena itu, jadwal v1 Anda tidak akan terdaftar atau diakses melalui UI.
Namun, jadwal v2 juga mendukung pekerjaan alur v1. Anda tidak perlu menerbitkan alur terlebih dahulu, dan Anda dapat langsung menyiapkan jadwal untuk pekerjaan alur.
Mengapa jadwal saya tidak memicu pekerjaan pada saat saya mengatur sebelumnya?
- Secara default jadwal akan menggunakan zona waktu UTC untuk menghitung waktu pemicu. Anda dapat menentukan zona waktu dalam wizard pembuatan, atau memperbarui zona waktu di halaman detail jadwal.
- Jika Anda menetapkan pengulangan sebagai hari ke-31 setiap bulan, dalam bulan dengan kurang dari 31 hari, jadwal tidak akan memicu pekerjaan.
- Jika Anda menggunakan ekspresi cron, MONTH tidak didukung. Jika Anda meneruskan nilai, nilai tersebut akan diabaikan dan diperlakukan sebagai *. Ini adalah keterbatasan yang diketahui.
Apakah jadwal berbasis peristiwa didukung?
- Tidak, jadwal V2 tidak mendukung jadwal berbasis peristiwa.
Langkah berikutnya
- Pelajari selengkapnya skema YAML jadwal CLI (v2).
- Pelajari cara membuat pekerjaan alur di CLI v2.
- Pelajari cara membuat pekerjaan alur di SDK v2.
- Pelajari selengkapnya sintaksis YAML inti CLI (v2).
- Pelajari selengkapnya mengenai Alur.
- Pelajari selengkapnya mengenai Komponen.