Aracılığıyla paylaş


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, makine öğrenmesi işlem hatlarını Azure'da çalışacak şekilde zamanlamayı öğreneceksiniz. Modelleri yeniden eğitme veya geçen süreye göre toplu tahminleri düzenli olarak güncelleştirme gibi rutin görevleri zamanlayabilirsiniz.

Bu makalede Azure Machine Learning CLI, Python için Azure Machine Learning SDK v2 veya Azure Machine Learning stüdyosu kullanıcı arabirimini kullanarak zamanlamaları oluşturma, alma, güncelleştirme ve devre dışı bırakma işlemleri gösterilmektedir.

İpucu

Azure Data Factory veya Microsoft Fabric gibi bir dış düzenleyici kullanarak işleri zamanlamak için işlem hattı işlerinizi toplu iş uç noktası altında dağıtmayı göz önünde bulundurun. Daha fazla bilgi için bkz. Mevcut işlem hattı işlerini toplu iş uç noktalarına dağıtma ve Batch uç noktalarını kullanarak Dokudan Azure Machine Learning modellerini çalıştırma (önizleme).

Önkoşullar

  • CLI'yı yükleme, ayarlama ve ml kullanma (v2) başlığındaki yönergeleri izleyerek yüklenen Azure CLI ve uzantısı.
  • Azure Machine Learning YAML işlem hatlarını oluşturma hakkında bilgi. Daha fazla bilgi için bkz . Azure Machine Learning CLI ile bileşenleri kullanarak makine öğrenmesi işlem hatları oluşturma ve çalıştırma.

Sınırlamalar

  • Azure Machine Learning v2 zamanlamaları olay tabanlı tetikleyicileri desteklemez.
  • CLI ve SDK v2 zamanlamaları, birden çok tetikleyici zaman damgası içeren karmaşık yineleme desenleri belirtmeyi destekler. Stüdyo kullanıcı arabirimi karmaşık desenleri görüntüler ancak düzenlemeyi desteklemez.
  • Studio kullanıcı arabirimi yalnızca v2 zamanlamalarını destekler ve yayımlanan işlem hatlarını veya işlem hattı uç noktalarını temel alan v1 zamanlamalarını listeleyemez veya erişemez. Yayımlanmamış bir işlem hattı için zamanlama oluşturabilirsiniz.
  • Yinelenme her ayın 31. veya 30. günü olarak ayarlanırsa, zamanlama daha az günü olan aylarda işleri tetiklemez.
  • DAYS ve MONTHS değerleri cron zamanlama ifadelerinde desteklenmez. Bu parametreler için geçirilen değerler yoksayılır ve olarak *kabul edilir.

Bir zamanlama oluşturma

Performansı ve çıkışları karşılayan bir işlem hattı işiniz olduğunda, işi düzenli olarak otomatik olarak tetikleyen bir zamanlama ayarlayabilirsiniz. Bunu yapmak için, işi bir tetikleyiciyle ilişkilendiren bir zamanlama oluşturmanız gerekir. Tetikleyici, işin çalıştırılacağı aralığı ve sıklığı belirten bir recurrence cron desen veya ifade olabilir.

Her iki durumda da, önce satır içi veya mevcut bir işlem hattı işi belirterek bir işlem hattı işi tanımlamanız gerekir. YAML'de işlem hatlarını tanımlayabilir ve CLI'dan çalıştırabilir, Python'da satır içi işlem hatları yazabilir veya Azure Machine Learning stüdyosu işlem hatları oluşturabilirsiniz. yerel olarak veya çalışma alanında var olan işlerden işlem hattı işleri oluşturabilirsiniz.

Stüdyo kullanıcı arabirimini, SDK v2'yi veya CLI v2'yi kullanarak v2 veya v1 işlem hattı işleri için v2 zamanlamaları oluşturabilirsiniz. İşlem hattı işleri için zamanlamalar ayarlamak için önce mevcut işlem hatlarını yayımlamanız gerekmez.

Bu makaledeki kod örnekleri Azure Machine Learning CLI 2.0'da Zamanlama ile Çalışma makalesinden alınmalıdır.

Yinelenme deseni ile zamana dayalı zamanlama tanımlama

Aşağıdaki YAML kodu, bir işlem hattı işi için yinelenen bir zamanlamayı tanımlar. Gerekli type parametre, türünün olduğunu trigger recurrencebelirtir.

$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

Aşağıdaki zamanlama parametrelerini sağlamanız gerekir veya sağlayabilirsiniz:

Parametreler

  • frequency(gerekli), zamanlamanın tetiklendiği zaman birimidir. , , hours, daysweeksveya monthsolabilirminutes.
  • interval(gerekli), zamanlama yinelenmeleri arasındaki zaman birimi sayısıdır.
  • schedule(isteğe bağlı) , ve weekdaysiçerebilen hoursminutesyinelenme desenini tanımlar. Atlanırsa, işler , frequencyve intervalmantığına start_timegöre tetikler.
    • olduğunda frequency day, desen ve minutesbelirtebilirhours.
    • veya montholduğunda week frequency, desen , minutesve weekdaysbelirtebilirhours.
      • hours 0 ile 23 bir tamsayı veya listedir.
      • minutes 0 ile 59 bir tamsayı veya listedir.
      • weekdays , ile olan monday sundaybir dize veya listedir.
  • start_time (isteğe bağlı) saat dilimine sahip başlangıç tarihi ve saatidir. Atlanırsa, varsayılan değer zamanlama oluşturma zamanına eşittir. Başlangıç saati geçmişteyse, ilk iş bir sonraki hesaplanan çalışma zamanında çalışır.
  • end_time (isteğe bağlı) saat dilimine sahip bitiş tarihi ve saatidir. Atlanırsa, zamanlama el ile devre dışı bırakılana kadar etkin kalır.
  • time_zone (isteğe bağlı) yinelenme zamanlamasının saat dilimini belirtir. Atlanırsa, varsayılan Eşgüdümlü Evrensel Saat (UTC) olur. Saat dilimi değerleri hakkında daha fazla bilgi için saat dilimi değerlerinin ekine bakın.

Zamanlama YAML'sini oluşturduktan sonra, CLI aracılığıyla zamanlama oluşturmak için aşağıdaki komutu kullanın:

# This action creates related resources for a schedule. It takes dozens of seconds to complete.
az ml schedule create --file simple-pipeline-job.yml --no-wait

Cron ifadesiyle zamana dayalı zamanlama tanımlama

Bir cron ifadesi, bir zamanlama için esnek ve özelleştirilmiş bir yinelenme düzeni belirtebilir. Standart bir crontab ifadesi, boşlukla ayrılmış alanlardan MINUTES HOURS DAYS MONTHS DAYS-OF-WEEKoluşur. Joker karakter * , bir alanın tüm değerlerini ifade eder.

Azure Makine Dili zamanlama cron ifadesinde:

  • MINUTES 0 ile 59 bir tamsayı veya listedir.
  • HOURS 0 ile 23 bir tamsayı veya listedir.
  • DAYS değerleri desteklenmez ve her zaman olarak *değerlendirilir. * içindeki DAYS değeri, ay ve yıla göre değişen bir ayın tüm günlerini ifade eder.
  • MONTHS değerleri desteklenmez ve her zaman olarak *değerlendirilir.
  • DAYS-OF-WEEK 0 ile 6 arasında bir tamsayı veya listedir; burada 0 = Pazar. Gün adları da kabul edilir.

Örneğin ifade 15 16 * * 1 , her Pazartesi 16:15 UTC anlamına gelir. Crontab ifadeleri hakkında daha fazla bilgi için GitHub'da Crontab İfadesi wiki'sine bakın.

Aşağıdaki YAML kodu, bir işlem hattı işi için yinelenen bir zamanlamayı tanımlar. Gerekli type parametre, türünün olduğunu trigger cronbelirtir.

$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

Aşağıdaki zamanlama parametrelerini sağlamanız gerekir veya sağlayabilirsiniz:

Parametreler

  • expression(gerekli), yinelenen bir zamanlamayı ifade eden standart bir crontab ifadesidir.
  • start_time (isteğe bağlı) saat dilimine sahip zamanlama başlangıç tarihi ve saatidir. Örneğin, start_time: "2022-05-10T10:15:00-04:00" zamanlamanın 10 Mayıs 2022'de UTC-4 saat diliminde 10:15:00'ten itibaren başlayacağı anlamına gelir. Atlanırsa, varsayılan değer zamanlama oluşturma zamanına eşittir. Başlangıç saati geçmişteyse, ilk iş bir sonraki hesaplanan çalışma zamanında çalışır.
  • end_time (isteğe bağlı) saat dilimine sahip bitiş tarihi ve saatidir. Atlanırsa, zamanlama el ile devre dışı bırakılana kadar etkin kalır.
  • time_zone (isteğe bağlı) yinelenme zamanlamasının saat dilimini belirtir. Belirtilmezse varsayılan değer UTC'dir.

Zamanlama YAML'sini oluşturduktan sonra, CLI aracılığıyla zamanlama oluşturmak için aşağıdaki komutu kullanın:

# This action creates related resources for a schedule. It takes dozens of seconds to complete.
az ml schedule create --file simple-pipeline-job.yml --no-wait

Zamanlamaları tanımlarken iş ayarlarını değiştirme

Bazen zamanlamalar tarafından tetiklenen işlerin test işlerinden farklı yapılandırmalara sahip olmasını isteyebilirsiniz. Mevcut bir işi kullanarak bir zamanlama tanımladığınızda, iş ayarlarını değiştirebilirsiniz. Bu yaklaşım, aynı işi farklı girişlerle kullanan birden çok zamanlama tanımlamanızı sağlar.

Bir zamanlama tanımlarken, işlem hattı işini çalıştırırken kullanmak üzere , inputsveya outputs değerini değiştirebilirsinizsettings. Tetiklenen işin değerini experiment_name de değiştirebilirsiniz.

Aşağıdaki zamanlama tanımı, var olan bir işin ayarlarını değiştirir.

$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

Zamanlamalarda desteklenen ifadeleri kullanma

Zamanlama tanımlarken, iş çalışma zamanı sırasında gerçek değerlere çözümleyen dinamik parametre değerlerini tanımlamak için aşağıdaki makro ifadelerini kullanabilirsiniz.

Expression Açıklama Desteklenen özellikler
${{name}} İşin adı outputs işlem hattı işinin yolu
${{creation_context.trigger_time}} İşin tetikleme zamanı İşlem hattı işinin dize türü inputs

Zamanlamayı yönetme

Çalışma alanında zamanlamaları listeleyebilir, görüntüleyebilir, güncelleştirebilir, devre dışı bırakabilir, etkinleştirebilir ve silebilirsiniz.

Zamanlamaları listeleme

az ml schedule list

Zamanlama ayrıntılarını görüntüleme

az ml schedule show -n simple_cron_job_schedule

Zamanlamayı güncelleştirme

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

Not

Yalnızca etiket ve açıklamadan fazlasını güncelleştirmek için kullanmayı az ml schedule create --file update_schedule.ymlgöz önünde bulundurun.

Zamanlamayı devre dışı bırakma

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

Zamanlamayı etkinleştirme

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

Zamanlamayı silme

Önemli

Silmek için önce bir zamanlamayı devre dışı bırakmanız gerekir. Silme işlemi kalıcıdır ve kurtarılamaz.

az ml schedule delete -n simple_cron_job_schedule

Zamanlamaya göre tetiklenen işleri sorgulama

Belirli bir zamanlama tarafından tetiklenen işlerin tümünün görünen adı <schedule_name>-YYYYMMDDThhmmssZvardır. Örneğin, 1 Ocak 2021'de saat 06:00'dan başlayarak 12 saatte bir çalıştırılan adlı bir zamanlama named-schedule varsa, oluşturulan işlerin görünen adları aşağıdaki gibidir:

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

İpucu

Stüdyodaki zamanlama ayrıntı sayfasındaki İşler geçmişi sekmesi, zamanlama tarafından tetiklenen tüm işleri bulmak için basit bir yol sağlar.


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

Zamanlamalar üretim için kullanıldığından, yanlış çalışma olasılığını ve etkisini azaltmak önemlidir. Çalışma alanı yöneticileri, çalışma alanında oluşturma ve yönetim zamanlama erişimini kısıtlayabilir.

Yöneticiler, Azure portalında zamanlamalarla ilgili aşağıdaki eylem kurallarını yapılandırabilir. Daha fazla bilgi için bkz . Azure Machine Learning çalışma alanlarına erişimi yönetme.

Eylem Açıklama Kural
Okundu Zamanlamaları alma ve listeleme Microsoft.MachineLearningServices/workspaces/schedules/read
Write Zamanlamaları oluşturma, güncelleştirme, devre dışı bırakma ve etkinleştirme Microsoft.MachineLearningServices/workspaces/schedules/write
Sil Zamanlamaları silme Microsoft.MachineLearningServices/workspaces/schedules/delete

Maliyetle ilgili konular

Zamanlamalar, zamanlama sayısına göre faturalandırılır. Her zamanlama, Azure Machine Learning'in kullanıcı adına (HOBO) barındıracağı bir mantıksal uygulama oluşturur.

Mantıksal uygulama, kullanıcının Azure aboneliğine geri ücretlendirilir. HOBO kaynak maliyetleri, özgün kaynak sağlayıcısı tarafından yayılan ölçüm kullanılarak faturalandırılır. Ücretler, Azure Machine Learning çalışma alanı olan konak kaynağının altında görünür.