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

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 adalah recurrence. Ini juga dapat berupa cron, lihat detail di bagian berikutnya.

Daftar berlanjut di bawah ini.

Catatan

Properti berikut yang perlu ditentukan berlaku untuk CLI dan SDK.

  • (Diperlukan)frequency menentukan unit waktu yang menjelaskan seberapa sering jadwal aktif. Dapat berupa minute, hour, day, week, month.

  • (Diperlukan)interval menentukan seberapa sering jadwal diaktifkan berdasarkan frekuensi, yang merupakan jumlah unit waktu untuk menunggu hingga jadwal aktif kembali.

  • (Opsional) schedule mendefinisikan pola pengulangan, yang berisi hours, minutes, dan weekdays.

    • Ketika frequency adalah day, pola dapat menentukan hours dan minutes.
    • Ketika frequency adalah week dan month, pola dapat menentukan hours, minutes, dan weekdays.
    • 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 dari monday hingga sunday.
    • Apabila schedule dihilangkan, pekerjaan akan dipicu menurut logika start_time, frequency, dan interval.
  • (Opsional) start_time menjelaskan tanggal dan waktu mulai dengan zona waktu. Apabila start_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. Apabila end_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 adalah cron.

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 dan MONTH 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. Apabila start_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. Apabila end_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

Cuplikan layar tab pekerjaan di studio Azure Machine Learning yang memfilter berdasarkan nama tampilan pekerjaan.

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.Machine Pembelajaran Services/workspaces/schedules/read
Write Membuat, memperbarui, menonaktifkan, dan mengaktifkan jadwal di ruang kerja Pembelajaran Mesin Microsoft.Machine Pembelajaran Services/workspaces/schedules/write
Hapus Menghapus jadwal di ruang kerja Pembelajaran Mesin Microsoft.Machine Pembelajaran Services/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