Planowanie zadań potoku uczenia maszynowego
DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (current)Zestaw PYTHON SDK azure-ai-ml v2 (bieżąca)
W tym artykule dowiesz się, jak programowo zaplanować uruchamianie potoku na platformie Azure i użyć interfejsu użytkownika harmonogramu, aby wykonać to samo. Harmonogram można utworzyć na podstawie czasu, który upłynął. Harmonogramy oparte na czasie mogą służyć do dbania o rutynowe zadania, takie jak ponowne trenowanie modeli lub regularne wykonywanie przewidywań wsadowych w celu zapewnienia ich aktualności. Po zapoznaniu się z tworzeniem harmonogramów dowiesz się, jak pobierać, aktualizować i dezaktywować je za pomocą interfejsu wiersza polecenia, zestawu SDK i interfejsu użytkownika programu Studio.
Napiwek
Jeśli musisz zaplanować zadania przy użyciu zewnętrznego koordynatora, takiego jak Usługa Azure Data Factory lub Microsoft Fabric, rozważ wdrożenie zadań potoku w punkcie końcowym usługi Batch. Dowiedz się więcej o tym, jak wdrażać zadania w punkcie końcowym wsadowym i jak korzystać z punktów końcowych wsadowych z usługi Microsoft Fabric.
Wymagania wstępne
- Aby korzystać z usługi Azure Machine Edukacja, musisz mieć subskrypcję platformy Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto. Wypróbuj bezpłatną lub płatną wersję usługi Azure Machine Edukacja dzisiaj.
- Interfejs wiersza polecenia platformy Azure
- Zestaw SDK dla języka Python
- interfejs użytkownika programu Studio
Zainstaluj interfejs wiersza polecenia platformy
ml
Azure i rozszerzenie. Wykonaj kroki instalacji opisane w temacie Instalowanie, konfigurowanie i używanie interfejsu wiersza polecenia (wersja 2).Utwórz obszar roboczy usługi Azure Machine Edukacja, jeśli go nie masz. Aby uzyskać informacje na temat tworzenia obszaru roboczego, zobacz Instalowanie, konfigurowanie i używanie interfejsu wiersza polecenia (wersja 2).
Planowanie zadania potoku
Aby cyklicznie uruchamiać zadanie potoku, należy utworzyć harmonogram. Element Schedule
kojarzy zadanie i wyzwalacz. Wyzwalacz może cron
użyć wyrażenia cron do opisania oczekiwania między przebiegami lub recurrence
określenia częstotliwości wyzwalania zadania. W każdym przypadku należy najpierw zdefiniować zadanie potoku, może to być istniejące zadania potoku lub zadanie potoku zdefiniowane w tekście, zobacz Tworzenie zadania potoku w interfejsie wiersza polecenia i Tworzenie zadania potoku w zestawie SDK.
Możesz zaplanować zadanie potoku yaml w środowisku lokalnym lub istniejącym zadaniu potoku w obszarze roboczym.
Tworzenie harmonogramu
Tworzenie harmonogramu opartego na czasie za pomocą wzorca cyklu
- Interfejs wiersza polecenia platformy Azure
- Zestaw SDK dla języka Python
- interfejs użytkownika programu Studio
DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (bieżąca)
$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
zawiera następujące właściwości:
- (Wymagane)
type
określa typ harmonogramu torecurrence
. Może to byćcron
również wartość , zobacz szczegóły w następnej sekcji.
Lista jest kontynuowana poniżej.
Uwaga
Następujące właściwości, które należy określić, mają zastosowanie do interfejsu wiersza polecenia i zestawu SDK.
(Wymagane)
frequency
określa jednostkę czasu, która opisuje częstotliwość uruchamiania harmonogramu. Może to byćminute
, ,hour
day
,week
,month
.(Wymagane)
interval
Określa, jak często harmonogram jest uruchamiany na podstawie częstotliwości, która jest liczbą jednostek czasu, które mają czekać, aż harmonogram zostanie ponownie wyzwolony.(Opcjonalnie)
schedule
definiuje wzorzec cyklu zawierającyhours
,minutes
iweekdays
.- Gdy
frequency
parametr maday
wartość , wzorzec może określaćhours
wartości iminutes
. - W
frequency
parametrach imonth
week
wzorzec może określaćhours
wartości ,minutes
iweekdays
. hours
powinna być liczbą całkowitą lub listą z zakresu od 0 do 23.minutes
powinna być liczbą całkowitą lub listą z zakresu od 0 do 59.weekdays
może być ciągiem lub listą zmonday
dosunday
.- Jeśli
schedule
zostanie pominięty, zadania zostaną wyzwolone zgodnie z logikąstart_time
,frequency
iinterval
.
- Gdy
(Opcjonalnie)
start_time
opisuje datę i godzinę rozpoczęcia ze strefą czasową. Jeślistart_time
zostanie pominięty, start_time będzie równa czasowi utworzenia zadania. Jeśli godzina rozpoczęcia jest w przeszłości, pierwsze zadanie zostanie uruchomione w następnym obliczonym czasie wykonywania.(Opcjonalnie)
end_time
opisuje datę i godzinę zakończenia ze strefą czasową. Jeśliend_time
zostanie pominięty, harmonogram będzie kontynuować wyzwalanie zadań do momentu ręcznego wyłączenia harmonogramu.(Opcjonalnie)
time_zone
określa strefę czasową cyklu. Jeśli pominięto, domyślnie jest to UTC. Aby dowiedzieć się więcej o wartościach strefy czasowej, zobacz dodatek dotyczący wartości strefy czasowej.
Tworzenie harmonogramu opartego na czasie za pomocą wyrażenia cron
- Interfejs wiersza polecenia platformy Azure
- Zestaw SDK dla języka Python
- interfejs użytkownika programu Studio
DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (bieżąca)
$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
Sekcja trigger
definiuje szczegóły harmonogramu i zawiera następujące właściwości:
- (Wymagane)
type
określa typ harmonogramu tocron
.
Lista jest kontynuowana poniżej.
(Wymagane)
expression
Używa standardowego wyrażenia crontab, aby wyrazić harmonogram cykliczny. Pojedyncze wyrażenie składa się z pięciu pól rozdzielanych spacjami:MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK
Pojedyncza symbol wieloznaczny (
*
), która obejmuje wszystkie wartości pola. Więc wartość*
w dniach oznacza wszystkie dni miesiąca (które różnią się w zależności od miesiąca i roku).W
expression: "15 16 * * 1"
powyższym przykładzie oznacza 16:15 w każdy poniedziałek.W poniższej tabeli wymieniono prawidłowe wartości dla każdego pola:
Pole Zakres Komentarz MINUTES
0-59 - HOURS
0-23 - DAYS
- Nieobsługiwane. Wartość zostanie zignorowana i będzie traktowana jako *
.MONTHS
- Nieobsługiwane. Wartość zostanie zignorowana i będzie traktowana jako *
.DAYS-OF-WEEK
0-6 Zero (0) oznacza niedzielę. Nazwy dni również zostały zaakceptowane. Aby dowiedzieć się więcej na temat używania wyrażenia crontab, zobacz witrynę typu wiki języka Crontab Expression w witrynie GitHub .
Ważne
DAYS
iMONTH
nie są obsługiwane. Jeśli przekażesz wartość, zostanie ona zignorowana i potraktowana jako*
.(Opcjonalnie)
start_time
określa datę i godzinę rozpoczęcia ze strefą czasową harmonogramu.start_time: "2022-05-10T10:15:00-04:00"
oznacza, że harmonogram rozpoczyna się od godziny 10:15:00 w dniu 2022-05-10 w strefie czasowej UTC-4. W przypadkustart_time
pominięciastart_time
parametr będzie równy harmonogramowi czasu tworzenia. Jeśli godzina rozpoczęcia jest w przeszłości, pierwsze zadanie zostanie uruchomione w następnym obliczonym czasie wykonywania.(Opcjonalnie)
end_time
opisuje datę i godzinę zakończenia ze strefą czasową. Jeśliend_time
zostanie pominięty, harmonogram będzie kontynuować wyzwalanie zadań do momentu ręcznego wyłączenia harmonogramu.(Opcjonalnie)
time_zone
określa strefę czasową wyrażenia. Jeśli pominięto, domyślnie jest to UTC. Zobacz dodatek, aby uzyskać informacje o wartościach strefy czasowej.
Ograniczenia:
- Obecnie harmonogram usługi Azure Machine Edukacja w wersji 2 nie obsługuje wyzwalacza opartego na zdarzeniach.
- Można określić złożony wzorzec cyklu zawierający wiele sygnatur czasowych wyzwalacza przy użyciu zestawu AZURE Machine Edukacja SDK/interfejsu wiersza polecenia w wersji 2, podczas gdy interfejs użytkownika wyświetla tylko złożony wzorzec i nie obsługuje edycji.
- Jeśli ustawisz cykl jako 31 dzień każdego miesiąca, w miesiącach z krótszym niż 31 dni harmonogram nie będzie wyzwalał zadań.
Zmienianie ustawień środowiska uruchomieniowego podczas definiowania harmonogramu
Podczas definiowania harmonogramu przy użyciu istniejącego zadania można zmienić ustawienia środowiska uruchomieniowego zadania. Korzystając z tego podejścia, można zdefiniować wiele harmonogramów przy użyciu tego samego zadania z różnymi danymi wejściowymi.
- Interfejs wiersza polecenia platformy Azure
- Zestaw SDK dla języka Python
- interfejs użytkownika programu Studio
DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (bieżąca)
$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
Podczas definiowania harmonogramu można zmienić następujące właściwości:
Właściwości | opis |
---|---|
ustawienia | Słownik ustawień, które mają być używane podczas uruchamiania zadania potoku. |
Wejścia | Słownik danych wejściowych, które mają być używane podczas uruchamiania zadania potoku. |
Wyjść | Słownik danych wejściowych, które mają być używane podczas uruchamiania zadania potoku. |
experiment_name | Nazwa eksperymentu wyzwalanego zadania. |
Uwaga
Użytkownicy interfejsu użytkownika programu Studio mogą modyfikować tylko ustawienia danych wejściowych, wyjściowych i środowiska uruchomieniowego podczas tworzenia harmonogramu. experiment_name
można zmienić tylko przy użyciu interfejsu wiersza polecenia lub zestawu SDK.
Wyrażenia obsługiwane w harmonogramie
Podczas definiowania harmonogramu obsługujemy następujące wyrażenie, które zostanie rozpoznane jako wartość rzeczywista w czasie wykonywania zadania.
Expression | opis | Obsługiwane właściwości |
---|---|---|
${{creation_context.trigger_time}} |
Godzina wyzwolenia harmonogramu. | Dane wejściowe typu ciągu zadania potoku |
${{name}} |
Nazwa zadania. | outputs.path zadania potoku |
Zarządzanie harmonogramem
Tworzenie harmonogramu
- Interfejs wiersza polecenia platformy Azure
- Zestaw SDK dla języka Python
- interfejs użytkownika programu Studio
DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (bieżąca)
Po utworzeniu harmonogramu yaml możesz użyć następującego polecenia, aby utworzyć harmonogram za pomocą interfejsu wiersza polecenia.
# 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
Wyświetlanie listy harmonogramów w obszarze roboczym
- Interfejs wiersza polecenia platformy Azure
- Zestaw SDK dla języka Python
- interfejs użytkownika programu Studio
DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (bieżąca)
az ml schedule list
Sprawdzanie szczegółów harmonogramu
- Interfejs wiersza polecenia platformy Azure
- Zestaw SDK dla języka Python
- interfejs użytkownika programu Studio
DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (bieżąca)
az ml schedule show -n simple_cron_job_schedule
Aktualizowanie harmonogramu
- Interfejs wiersza polecenia platformy Azure
- Zestaw SDK dla języka Python
- interfejs użytkownika programu Studio
DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (bieżąca)
az ml schedule update -n simple_cron_job_schedule --set description="new description" --no-wait
Uwaga
Jeśli chcesz zaktualizować więcej niż tylko tagi/opis, zaleca się użycie polecenia az ml schedule create --file update_schedule.yml
Wyłączanie harmonogramu
- Interfejs wiersza polecenia platformy Azure
- Zestaw SDK dla języka Python
- interfejs użytkownika programu Studio
DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (bieżąca)
az ml schedule disable -n simple_cron_job_schedule --no-wait
Włączanie harmonogramu
- Interfejs wiersza polecenia platformy Azure
- Zestaw SDK dla języka Python
- interfejs użytkownika programu Studio
DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (bieżąca)
az ml schedule enable -n simple_cron_job_schedule --no-wait
Wykonywanie zapytań wyzwolonych zadań z harmonogramu
Cała nazwa wyświetlana zadań wyzwalanych zgodnie z harmonogramem będzie miała nazwę wyświetlaną jako <schedule_name-RRRRMDDDThhmmssZ>. Jeśli na przykład harmonogram o nazwie harmonogram zostanie utworzony z zaplanowanym uruchomieniem co 12 godzin, począwszy od 6:00 w dniu 1 stycznia 2021 r., nazwy wyświetlane utworzonych zadań będą wyglądać następująco:
- named-schedule-20210101T060000Z
- nazwa-schedule-20210101T180000Z
- named-schedule-20210102T060000Z
- named-schedule-20210102T180000Z itd.
Możesz również zastosować zapytanie JMESPath interfejsu wiersza polecenia platformy Azure, aby wykonać zapytanie dotyczące zadań wyzwalanych przez nazwę harmonogramu.
# 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')]"
Uwaga
Aby uzyskać prostszy sposób znajdowania wszystkich zadań wyzwalanych zgodnie z harmonogramem, zobacz historię zadań na stronie szczegółów harmonogramu przy użyciu interfejsu użytkownika programu Studio.
Usuwanie harmonogramu
Ważne
Aby można było usunąć harmonogram, należy go wyłączyć. Usuwanie jest niemożliwą do odzyskania akcją. Po usunięciu harmonogramu nigdy nie można uzyskać dostępu do niego ani go odzyskać.
- Interfejs wiersza polecenia platformy Azure
- Zestaw SDK dla języka Python
- interfejs użytkownika programu Studio
DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (bieżąca)
az ml schedule delete -n simple_cron_job_schedule
Obsługa kontroli dostępu opartej na rolach (kontrola dostępu oparta na rolach)
Ponieważ harmonogramy są zwykle używane na potrzeby środowiska produkcyjnego, aby zmniejszyć wpływ niewłaściwego współdziałania, administratorzy obszaru roboczego mogą chcieć ograniczyć dostęp do tworzenia harmonogramów i zarządzania nimi w obszarze roboczym.
Obecnie istnieją trzy reguły akcji związane z harmonogramami i można je skonfigurować w witrynie Azure Portal. Aby dowiedzieć się więcej na temat zarządzania dostępem do obszaru roboczego usługi Azure Machine Edukacja, możesz dowiedzieć się więcej.
Akcja | opis | Reguła |
---|---|---|
Odczyt | Pobieranie i wyświetlanie listy harmonogramów w obszarze roboczym usługi Machine Edukacja | Microsoft.Machine Edukacja Services/workspaces/schedules/read |
Napisz | Tworzenie, aktualizowanie, wyłączanie i włączanie harmonogramów w obszarze roboczym usługi Machine Edukacja | Microsoft.Machine Edukacja Services/workspaces/schedules/write |
Delete | Usuwanie harmonogramu w obszarze roboczym Edukacja maszyny | Microsoft.Machine Edukacja Services/workspaces/schedules/delete |
Często zadawane pytania
Dlaczego moje harmonogramy utworzone przez zestaw SDK nie są wymienione w interfejsie użytkownika?
Interfejs użytkownika harmonogramów jest przeznaczony dla harmonogramów w wersji 2. W związku z tym harmonogramy w wersji 1 nie będą wyświetlane ani uzyskiwane za pośrednictwem interfejsu użytkownika.
Jednak harmonogramy w wersji 2 obsługują również zadania potoku w wersji 1. Nie musisz najpierw publikować potoku i możesz bezpośrednio skonfigurować harmonogramy zadania potoku.
Dlaczego moje harmonogramy nie wyzwalają zadania w czasie ustawionym wcześniej?
- Domyślnie harmonogramy będą używać strefy czasowej UTC do obliczania czasu wyzwalacza. Strefę czasową można określić w kreatorze tworzenia lub zaktualizować strefę czasową na stronie szczegółów harmonogramu.
- Jeśli ustawisz cykl jako 31 dzień każdego miesiąca, w miesiącach z krótszym niż 31 dni harmonogram nie będzie wyzwalał zadań.
- Jeśli używasz wyrażeń cron, funkcja MONTH nie jest obsługiwana. Jeśli przekażesz wartość, zostanie ona zignorowana i traktowana jako *. Jest to znane ograniczenie.
Czy są obsługiwane harmonogramy oparte na zdarzeniach?
- Nie, harmonogram v2 nie obsługuje harmonogramów opartych na zdarzeniach.
Następne kroki
- Dowiedz się więcej o schemacie YAML dla harmonogramu interfejsu wiersza polecenia (wersja 2).
- Dowiedz się, jak utworzyć zadanie potoku w interfejsie wiersza polecenia w wersji 2.
- Dowiedz się, jak utworzyć zadanie potoku w zestawie SDK w wersji 2.
- Dowiedz się więcej o podstawowej składni YAML interfejsu wiersza polecenia (v2).
- Dowiedz się więcej o potokach.
- Dowiedz się więcej o składniku.