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.
Azure CLI'yi ve uzantıyı
ml
yükleyin. CLI'yı (v2) yükleme, ayarlama ve kullanma makalesindeki yükleme adımlarını izleyin.Azure Machine Learning çalışma alanınız yoksa oluşturun. Çalışma alanı oluşturmak için bkz . CLI'yi (v2) yükleme, ayarlama ve kullanma.
İş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
ŞUNLAR 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ğunurecurrence
belirtir. Bu da olabilircron
, 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
,week
olabilirminute
month
.(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
,minutes
veweekdays
içerenhours
yinelenme desenini tanımlar.- olduğunda
frequency
day
, desen veminutes
belirtebilirhours
. - ve
month
olduğundaweek
frequency
, desen ,minutes
veweekdays
belirtebilirhours
. 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 listemonday
sunday
olabilir.- Atlanırsa
schedule
, işler vefrequency
interval
mantığınastart_time
göre tetiklenir.
- olduğunda
(İsteğe bağlı)
start_time
saat dilimiyle birlikte başlangıç tarihi ve saatini açıklar. Atlanırsastart_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ırsaend_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
ŞUNLAR 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ğunucron
belirtir.
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
veMONTH
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ırsastart_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ırsaend_time
, zamanlama el ile devre dışı bırakılana kadar zamanlama işleri tetiklemeye devam eder.(İsteğe bağlı)
time_zone
ifadenin 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.
ŞUNLAR 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
ŞUNLAR 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
ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)
az ml schedule list
Zamanlama ayrıntılarını denetleme
ŞUNLAR 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
ŞUNLAR 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
ŞUNLAR 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
ŞUNLAR 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.
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şine bakı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.
ŞUNLAR 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.