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.

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

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 to recurrence. Może to być cronró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, , hourday, 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ący hours, minutesi weekdays.

    • Gdy frequency parametr ma daywartość , wzorzec może określać hours wartości i minutes.
    • W frequency parametrach i monthweek wzorzec może określać hourswartości , minutes i weekdays.
    • 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ą z monday do sunday.
    • Jeśli schedule zostanie pominięty, zadania zostaną wyzwolone zgodnie z logiką start_time, frequency i interval.
  • (Opcjonalnie) start_time opisuje datę i godzinę rozpoczęcia ze strefą czasową. Jeśli start_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śli end_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

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 to cron.

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 i MONTH 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 przypadku start_time pominięcia start_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śli end_time zostanie pominięty, harmonogram będzie kontynuować wyzwalanie zadań do momentu ręcznego wyłączenia harmonogramu.

  • (Opcjonalnie) time_zoneokreś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.

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

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

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (bieżąca)

az ml schedule list

Sprawdzanie szczegółów harmonogramu

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (bieżąca)

az ml schedule show -n simple_cron_job_schedule

Aktualizowanie harmonogramu

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

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

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.

Screenshot of the jobs tab in the Azure Machine Learning studio filtering by job display name.

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ć.

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