Share via


Makine öğrenmesi işlem hattı işlerini zamanlama

ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)Python SDK azure-ai-ml v2 (geçerli)

Bu makalede, azure'da çalıştırılacak bir işlem hattını program aracılığıyla zamanlamayı ve aynı işlemi yapmak için zamanlama kullanıcı arabirimini kullanmayı öğreneceksiniz. Geçen süreyi temel alan bir zamanlama oluşturabilirsiniz. Zaman tabanlı zamanlamalar, modelleri yeniden eğitme veya bunları güncel tutmak için düzenli olarak toplu tahminler yapma gibi rutin görevleri yerine getirmek için kullanılabilir. Zamanlama oluşturma hakkında bilgi edindikten sonra CLI, SDK ve studio kullanıcı arabirimi aracılığıyla bunları nasıl alacağınızı, güncelleştireceğinizi ve devre dışı bırakacağınızı öğreneceksiniz.

İpucu

Azure Data Factory veya Microsoft Fabric gibi bir dış düzenleyici kullanarak iş zamanlamanız gerekiyorsa, işlem hattı işlerinizi bir Batch Uç Noktası altında dağıtmayı göz önünde bulundurun. Bir toplu iş uç noktası altında işleri dağıtma ve Microsoft Fabric'ten toplu iş uç noktalarını kullanma hakkında daha fazla bilgi edinin.

Önkoşullar

  • Azure Machine Learning'i kullanmak için bir Azure aboneliğiniz olmalıdır. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun. Azure Machine Learning'in ücretsiz veya ücretli sürümünü bugün deneyin.

İşlem hattı işi zamanlama

İşlem hattı işini yinelenen olarak çalıştırmak için bir zamanlama oluşturmanız gerekir. bir Schedule işi ve tetikleyiciyi ilişkilendirir. Tetikleyici, çalıştırmalar arasındaki beklemeyi açıklamak için cron ifadesi kullanan veya recurrence işi tetikleme sıklığını kullanan bir tetikleyici olabilircron. Her durumda, önce bir işlem hattı işi tanımlamanız gerekir; mevcut işlem hattı işleri veya satır içi olarak tanımlayan bir işlem hattı işi olabilir, BKz . CLI'da işlem hattı işi oluşturma ve SDK'da işlem hattı işi oluşturma.

Yerel bir işlem hattı işi yaml veya çalışma alanında mevcut bir işlem hattı işi zamanlayabilirsiniz.

Bir zamanlama oluşturma

Yineleme deseniyle zamana dayalı zamanlama oluşturma

ŞUNUN IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)

$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 aşağıdaki özellikleri içerir:

  • (Gerekli)type zamanlama türünün olduğunu recurrencebelirtir. Bu da olabilir cron, sonraki bölümde ayrıntılara bakın.

Liste aşağıda devam eder.

Not

Belirtilmesi gereken aşağıdaki özellikler CLI ve SDK için geçerlidir.

  • (Gerekli)frequency zamanlamanın ne sıklıkta tetiklendiğini açıklayan zaman birimini belirtir. , , hour, day, weekolabilirminutemonth.

  • (Gerekli)interval zamanlamanın sıklık temelinde ne sıklıkta tetiklendiği belirtir. Bu, zamanlama yeniden başlatılana kadar bekleyebileceğiniz zaman birimi sayısıdır.

  • (İsteğe bağlı) schedule , minutesve weekdaysiçeren hoursyinelenme desenini tanımlar.

    • olduğunda frequencyday, desen ve minutesbelirtebilirhours.
    • ve montholduğunda weekfrequency, desen , minutes ve weekdaysbelirtebilirhours.
    • hours 0 ile 23 bir tamsayı veya liste olmalıdır.
    • minutes 0 ile 59 olan bir tamsayı veya liste olmalıdır.
    • weekdays ile bir dize veya liste mondaysundayolabilir.
    • Atlanırsaschedule, işler ve frequencyintervalmantığına start_timegöre tetiklenir.
  • (İsteğe bağlı) start_time saat dilimiyle birlikte başlangıç tarihi ve saatini açıklar. Atlanırsa start_time , start_time iş oluşturma zamanına eşit olur. Başlangıç saati geçmişteyse, ilk iş bir sonraki hesaplanan çalışma zamanında çalışır.

  • (İsteğe bağlı) end_time saat dilimiyle bitiş tarihini ve saatini açıklar. Atlanırsa end_time , zamanlama el ile devre dışı bırakılana kadar zamanlama işleri tetiklemeye devam eder.

  • (İsteğe bağlı) time_zone yinelenmenin saat dilimini belirtir. Atlanırsa, varsayılan olarak UTC'dir. Saat dilimi değerleri hakkında daha fazla bilgi edinmek için bkz . saat dilimi değerleri için ek.

Cron ifadesiyle zamana dayalı zamanlama oluşturma

ŞUNUN IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)

$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

trigger bölümü zamanlama ayrıntılarını tanımlar ve aşağıdaki özellikleri içerir:

  • (Gerekli)type zamanlama türünün olduğunu cronbelirtir.

Liste aşağıda devam eder.

  • (Gerekli)expression yinelenen bir zamanlamayı ifade etmek için standart crontab ifadesini kullanır. Tek bir ifade, boşlukla ayrılmış beş alandan oluşur:

    MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK

    • Alanın tüm değerlerini kapsayan tek bir joker karakter (* ). Bu nedenle gün * sayısı, ayın tüm günleri anlamına gelir (ay ve yıla göre değişir).

    • expression: "15 16 * * 1" Yukarıdaki örnekteki değeri, her Pazartesi günü saat 23:15 anlamına gelir.

    • Aşağıdaki tabloda her alan için geçerli değerler listelenmiştir:

      Alan Aralık Yorum
      MINUTES 0-59 -
      HOURS 0-23 -
      DAYS - Desteklenmiyor. Değer yoksayılır ve olarak *değerlendirilir.
      MONTHS - Desteklenmiyor. Değer yoksayılır ve olarak *değerlendirilir.
      DAYS-OF-WEEK 0-6 Sıfır (0), Pazar anlamına gelir. Gün adları da kabul edilir.
    • Crontab ifadesini kullanma hakkında daha fazla bilgi edinmek için bkz . GitHub'da Crontab expression wiki.

    Önemli

    DAYS ve MONTH desteklenmez. Bir değer geçirirseniz, yoksayılır ve olarak *değerlendirilir.

  • (İsteğe bağlı) start_time zamanlamanın saat dilimiyle başlangıç tarihini ve saatini belirtir. start_time: "2022-05-10T10:15:00-04:00" , zamanlamanın UTC-4 saat diliminde 2022-05-10 tarihinde 10:15:00'ten itibaren başlayacağı anlamına gelir. Atlanırsa start_time , start_time zaman oluşturma zamanına eşit olur. Başlangıç saati geçmişteyse, ilk iş bir sonraki hesaplanan çalışma zamanında çalışır.

  • (İsteğe bağlı) end_time saat dilimiyle bitiş tarihini ve saatini açıklar. Atlanırsa end_time , zamanlama el ile devre dışı bırakılana kadar zamanlama işleri tetiklemeye devam eder.

  • (İsteğe bağlı) time_zoneifadenin saat dilimini belirtir. Atlanırsa, varsayılan olarak UTC'dir. Saat dilimi değerleri için eke bakın.

Sınırlamalar:

  • Şu anda Azure Machine Learning v2 zamanlaması olay tabanlı tetikleyiciyi desteklemez.
  • Azure Machine Learning SDK'sı/CLI v2 kullanarak birden çok tetikleyici zaman damgası içeren karmaşık yinelenme deseni belirtebilir, ancak kullanıcı arabirimi yalnızca karmaşık deseni görüntüler ve düzenlemeyi desteklemez.
  • Yinelenmeyi her ayın 31. günü olarak ayarlarsanız, 31 günden az olan aylarda zamanlama işleri tetiklemez.

Zamanlamayı tanımlarken çalışma zamanı ayarlarını değiştirme

Var olan bir işi kullanarak zamanlama tanımlarken, işin çalışma zamanı ayarlarını değiştirebilirsiniz. Bu yaklaşımı kullanarak, farklı girişlerle aynı işi kullanarak çoklu zamanlamalar tanımlayabilirsiniz.

ŞUNUN IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)

$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

Zamanlama tanımlanırken aşağıdaki özellikler değiştirilebilir:

Özellik Açıklama
ayarlar İşlem hattı işi çalıştırılırken kullanılacak ayarlar sözlüğü.
Giriş İşlem hattı işi çalıştırılırken kullanılacak girişler sözlüğü.
Çıkış İşlem hattı işi çalıştırılırken kullanılacak girişler sözlüğü.
experiment_name Tetiklenen işin deneme adı.

Not

Studio kullanıcı arabirimi kullanıcıları yalnızca bir zamanlama oluştururken giriş, çıkış ve çalışma zamanı ayarlarını değiştirebilir. experiment_name yalnızca CLI veya SDK kullanılarak değiştirilebilir.

Zamanlamada desteklenen ifadeler

Zamanlamayı tanımlarken, iş çalışma zamanı sırasında gerçek değere çözümlenecek aşağıdaki ifadeyi destekliyoruz.

Expression Açıklama Desteklenen özellikler
${{creation_context.trigger_time}} Zamanlamanın tetiklediği zaman. İşlem hattı işinin dize türü girişleri
${{name}} İşin adı. outputs.path of pipeline job

Zamanlamayı yönetme

Zamanlama oluşturma

ŞUNUN IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)

Zamanlama yaml'sini oluşturduktan sonra, CLI aracılığıyla bir zamanlama oluşturmak için aşağıdaki komutu kullanabilirsiniz.

# 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

Çalışma alanında zamanlamaları listeleme

ŞUNUN IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)

az ml schedule list

Zamanlama ayrıntılarını denetleme

ŞUNUN IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)

az ml schedule show -n simple_cron_job_schedule

Zamanlamayı güncelleştirme

ŞUNUN IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)

az ml schedule update -n simple_cron_job_schedule  --set description="new description" --no-wait

Not

Yalnızca etiketlerden/açıklamalardan daha fazlasını güncelleştirmek istiyorsanız, az ml schedule create --file update_schedule.yml

Zamanlamayı devre dışı bırakma

ŞUNUN IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)

az ml schedule disable -n simple_cron_job_schedule --no-wait

Zamanlamayı etkinleştirme

ŞUNUN IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)

az ml schedule enable -n simple_cron_job_schedule --no-wait

Zamanlamaya göre tetiklenen işleri sorgulama

Zamanlama tarafından tetiklenen işlerin tüm görünen adı schedule_name-YYYYMMDDThhmmssZ> olarak <görüntülenir. Örneğin, 1 Ocak 2021'de saat 06:00'dan itibaren her 12 saatte bir zamanlanmış bir çalıştırma ile adlandırılmış zamanlama adlı bir zamanlama oluşturulursa, oluşturulan işlerin görünen adları aşağıdaki gibi olur:

  • named-schedule-20210101T060000Z
  • named-schedule-20210101T180000Z
  • named-schedule-20210102T060000Z
  • named-schedule-20210102T180000Z vb.

İş görünen adına göre filtreleme Azure Machine Learning stüdyosu işler sekmesinin ekran görüntüsü.

Zamanlama adıyla tetiklenen işleri sorgulamak için Azure CLI JMESPath sorgusu da uygulayabilirsiniz.

# 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')]"

Not

Zamanlama tarafından tetiklenen tüm işleri bulmanın daha basit bir yolu için, stüdyo kullanıcı arabirimini kullanarak zamanlama ayrıntı sayfasındaki İşler geçmişinebakın.


Zamanlamayı silme

Önemli

Zamanlamanın silinmesi için devre dışı bırakılması gerekir. Delete kurtarılamaz bir eylemdir. Bir zamanlama silindikten sonra, zamanlamaya asla erişemez veya bu zamanlamadan kurtaramazdınız.

ŞUNUN IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)

az ml schedule delete -n simple_cron_job_schedule

RBAC (Rol tabanlı erişim denetimi) desteği

Zamanlamalar genellikle üretim için kullanıldığından, yanlış çalışma etkisini azaltmak için çalışma alanı yöneticileri, çalışma alanı içinde zamanlama oluşturma ve yönetme erişimini kısıtlamak isteyebilir.

Şu anda zamanlamalarla ilgili üç eylem kuralı vardır ve Azure portalında yapılandırabilirsiniz. Azure Machine Learning çalışma alanına erişimi yönetme hakkında daha fazla bilgi edinebilirsiniz.

Eylem Açıklama Kural
Okundu Machine Learning çalışma alanında zamanlamaları alma ve listeleme Microsoft.MachineLearningServices/workspaces/schedules/read
Write Machine Learning çalışma alanında zamanlama oluşturma, güncelleştirme, devre dışı bırakma ve etkinleştirme Microsoft.MachineLearningServices/workspaces/schedules/write
Sil Machine Learning çalışma alanında zamanlama silme Microsoft.MachineLearningServices/workspaces/schedules/delete

Maliyetle ilgili konular

  • Zamanlamalar zamanlama sayısına göre faturalandırılır, her zamanlama kullanıcının adına Azure Machine Learning alt dosyalarını (HOBO) barındıran bir mantıksal uygulama oluşturur.
  • Mantıksal uygulamaların maliyeti kullanıcının Azure aboneliğine döner ve HOBO kaynaklarının maliyetlerinin özgün RP tarafından yayılan ölçüm kullanılarak faturalandırılacağını bulabilirsiniz. Bunlar konak kaynağı (çalışma alanı) altında gösterilir.

Sık sorulan sorular

  • SDK tarafından oluşturulan zamanlamalarım neden kullanıcı arabiriminde listelenmiyor?

    Zamanlama kullanıcı arabirimi v2 zamanlamaları içindir. Bu nedenle, v1 zamanlamalarınız kullanıcı arabirimi aracılığıyla listelenmez veya bu zamanlamalara erişilmeyecektir.

    Ancak v2 zamanlamaları v1 işlem hattı işlerini de destekler. önce işlem hattını yayımlamanız gerekmez ve bir işlem hattı işi için zamanlamaları doğrudan ayarlayabilirsiniz.

  • Zamanlamalarım neden daha önce ayarladığım saatte işi tetiklemiyor?

    • Varsayılan olarak zamanlamalar tetikleyici zamanını hesaplamak için UTC saat dilimini kullanır. Oluşturma sihirbazında saat dilimini belirtebilir veya zamanlama ayrıntı sayfasında saat dilimini güncelleştirebilirsiniz.
    • Yinelenmeyi her ayın 31. günü olarak ayarlarsanız, 31 günden az olan aylarda zamanlama işleri tetiklemez.
    • Cron ifadeleri kullanıyorsanız MONTH desteklenmez. Bir değeri geçirirseniz, yoksayılır ve *olarak değerlendirilir. Bu bilinen bir sınırlamadır.
  • Olay tabanlı zamanlamalar destekleniyor mu?

    • Hayır, V2 zamanlaması olay tabanlı zamanlamaları desteklemez.

Sonraki adımlar

  • CLI (v2) zamanlama YAML şeması hakkında daha fazla bilgi edinin.
  • CLI v2'de işlem hattı işi oluşturmayı öğrenin.
  • SDK v2'de işlem hattı işi oluşturmayı öğrenin.
  • CLI (v2) çekirdek YAML söz dizimi hakkında daha fazla bilgi edinin.
  • İşlem Hatları hakkında daha fazla bilgi edinin.
  • Bileşen hakkında daha fazla bilgi edinin.