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
- Azure aboneliği. Aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
- Azure Machine Learning çalışma alanı. Çalışma alanı oluşturmak için bkz . Çalışma alanı kaynakları oluşturma.
- Azure Machine Learning işlem hatlarını anlama. Bilgi için bkz . Makine öğrenmesi işlem hatları nedir?
- 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
veMONTHS
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
recurrence
belirtir.
$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
,days
weeks
veyamonths
olabilirminutes
.interval
(gerekli), zamanlama yinelenmeleri arasındaki zaman birimi sayısıdır.schedule
(isteğe bağlı) , veweekdays
içerebilenhours
minutes
yinelenme desenini tanımlar. Atlanırsa, işler ,frequency
veinterval
mantığınastart_time
göre tetikler.- olduğunda
frequency
day
, desen veminutes
belirtebilirhours
. - veya
month
olduğundaweek
frequency
, desen ,minutes
veweekdays
belirtebilirhours
.hours
0 ile 23 bir tamsayı veya listedir.minutes
0 ile 59 bir tamsayı veya listedir.weekdays
, ile olanmonday
sunday
bir dize veya listedir.
- olduğunda
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-WEEK
oluş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çindekiDAYS
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
cron
belirtir.
$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 , inputs
veya 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.yml
gö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>-YYYYMMDDThhmmssZ
vardı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.
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.