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)
Z tego artykułu dowiesz się, jak zaplanować uruchamianie potoków uczenia maszynowego na platformie Azure. Możesz zaplanować rutynowe zadania, takie jak ponowne trenowanie modeli lub regularne aktualizowanie przewidywań wsadowych na podstawie upływu czasu.
W tym artykule pokazano, jak tworzyć, pobierać, aktualizować i dezaktywować harmonogramy przy użyciu interfejsu wiersza polecenia usługi Azure Machine Learning, zestawu AZURE Machine Learning SDK w wersji 2 dla języka Python lub interfejsu użytkownika usługi Azure Machine Learning Studio.
Napiwek
Aby zaplanować zadania przy użyciu zewnętrznego koordynatora, takiego jak Azure Data Factory lub Microsoft Fabric, rozważ wdrożenie zadań potoku w punkcie końcowym wsadowym. Aby uzyskać więcej informacji, zobacz Wdrażanie istniejących zadań potoku w punktach końcowych wsadowych i Uruchamianie modeli usługi Azure Machine Learning z sieci szkieletowej przy użyciu punktów końcowych wsadowych (wersja zapoznawcza).
Wymagania wstępne
- Subskrypcja platformy Azure. Jeśli nie masz subskrypcji, przed rozpoczęciem utwórz bezpłatne konto.
- Obszar roboczy usługi Azure Machine Learning. Aby utworzyć obszar roboczy, zobacz Tworzenie zasobów obszaru roboczego.
- Znajomość potoków usługi Azure Machine Learning. Aby uzyskać informacje, zobacz Co to są potoki uczenia maszynowego.
- Interfejs wiersza polecenia platformy Azure
- Zestaw SDK dla języka Python
- Interfejs użytkownika programu Studio
- Interfejs wiersza polecenia platformy Azure i
ml
rozszerzenie zainstalowane, postępując zgodnie z instrukcjami w temacie Instalowanie, konfigurowanie i używanie interfejsu wiersza polecenia (wersja 2). - Znajomość sposobu tworzenia potoków YAML usługi Azure Machine Learning. Aby uzyskać informacje, zobacz Tworzenie i uruchamianie potoków uczenia maszynowego przy użyciu składników za pomocą interfejsu wiersza polecenia usługi Azure Machine Learning.
Ograniczenia
- Harmonogramy usługi Azure Machine Learning w wersji 2 nie obsługują wyzwalaczy opartych na zdarzeniach.
- Harmonogramy interfejsu wiersza polecenia i zestawu SDK w wersji 2 obsługują określanie złożonych wzorców cyklu zawierających wiele sygnatur czasowych wyzwalacza. Interfejs użytkownika programu Studio wyświetla złożone wzorce, ale nie obsługuje ich edytowania.
- Interfejs użytkownika programu Studio obsługuje tylko harmonogramy w wersji 2 i nie może wyświetlać ani uzyskiwać dostępu do harmonogramów w wersji 1 opartych na opublikowanych potokach lub punktach końcowych potoku. Możesz utworzyć harmonogram dla nieopublikowanego potoku.
- Jeśli cykl jest ustawiony jako 31 lub 30 dzień każdego miesiąca, harmonogram nie wyzwala zadań w miesiącach, które mają mniej dni.
DAYS
wartości iMONTHS
nie są obsługiwane w wyrażeniach harmonogramu cron. Wartości przekazane dla tych parametrów są ignorowane i traktowane jako*
.
Tworzenie harmonogramu
Jeśli masz zadanie potoku z satysfakcjonującą wydajnością i danymi wyjściowymi, możesz skonfigurować harmonogram automatycznego wyzwalania zadania w regularnych odstępach czasu. W tym celu należy utworzyć harmonogram, który kojarzy zadanie z wyzwalaczem. Wyzwalacz może być wzorcem lub wyrażeniem recurrence
cron
określającym interwał i częstotliwość uruchamiania zadania.
W obu przypadkach należy najpierw zdefiniować zadanie potoku , wbudowane lub przez określenie istniejącego zadania potoku. Potoki w języku YAML można definiować i uruchamiać z poziomu interfejsu wiersza polecenia, tworzyć potoki wbudowane w języku Python lub tworzyć potoki w usłudze Azure Machine Learning Studio. Zadania potoku można tworzyć lokalnie lub z istniejących zadań w obszarze roboczym.
Harmonogramy w wersji 2 dla zadań potoku w wersji 2 lub 1 można tworzyć przy użyciu interfejsu użytkownika programu Studio, zestawu SDK w wersji 2 lub interfejsu wiersza polecenia w wersji 2. Nie musisz najpierw publikować istniejących potoków, aby skonfigurować harmonogramy zadań potoku.
- Interfejs wiersza polecenia platformy Azure
- Zestaw SDK dla języka Python
- Interfejs użytkownika programu Studio
Przykłady kodu w tym artykule pochodzą z artykułu Praca z harmonogramem w interfejsie wiersza polecenia usługi Azure Machine Learning w wersji 2.0.
Definiowanie harmonogramu opartego na czasie z wzorcem cyklu
- Interfejs wiersza polecenia platformy Azure
- Zestaw SDK dla języka Python
- Interfejs użytkownika programu Studio
Poniższy kod YAML definiuje cykliczny harmonogram zadania potoku. Wymagany type
parametr określa, że trigger
typ to recurrence
.
$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
Musisz lub możesz podać następujące parametry harmonogramu:
Parametry
frequency
(wymagane) to jednostka czasowa, na podstawie której zaplanowano pożary. Może to byćminutes
,hours
,days
,weeks
lubmonths
.interval
(wymagane) to liczba jednostek czasu między cyklami harmonogramu.schedule
(opcjonalnie) definiuje wzorzec cyklu, który może zawieraćhours
,minutes
iweekdays
. Jeśli pominięto, zadania są wyzwalane zgodnie z logikąstart_time
,frequency
iinterval
.- Gdy
frequency
parametr maday
wartość , wzorzec może określaćhours
wartości iminutes
. - Jeśli
frequency
element maweek
wartość lubmonth
, wzorzec może określaćhours
wartości ,minutes
iweekdays
.hours
jest liczbą całkowitą lub listą z zakresu od 0 do 23.minutes
jest liczbą całkowitą lub listą z zakresu od 0 do 59.weekdays
jest ciągiem lub listą zmonday
dosunday
.
- Gdy
start_time
(opcjonalnie) to data i godzina rozpoczęcia ze strefą czasową. W przypadku pominięcia wartość domyślna jest równa harmonogramowi czasu tworzenia. Jeśli godzina rozpoczęcia jest w przeszłości, pierwsze zadanie jest uruchamiane w następnym obliczonym czasie wykonywania.end_time
(opcjonalnie) to data i godzina zakończenia ze strefą czasową. W przypadku pominięcia harmonogram pozostaje aktywny do momentu ręcznego wyłączenia.time_zone
(opcjonalnie) określa strefę czasową harmonogramu cyklu. W przypadku pominięcia wartość domyślna to Uniwersalny czas koordynowany (UTC). Aby uzyskać więcej informacji na temat wartości strefy czasowej, zobacz dodatek dotyczący wartości strefy czasowej.
- Interfejs wiersza polecenia platformy Azure
- Zestaw SDK dla języka Python
- Interfejs użytkownika programu Studio
Po utworzeniu harmonogramu YAML użyj następującego polecenia, aby utworzyć harmonogram za pomocą interfejsu wiersza polecenia:
# 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
Definiowanie harmonogramu opartego na czasie za pomocą wyrażenia cron
Wyrażenie cron może określać elastyczny i dostosowany wzorzec cyklu dla harmonogramu. Standardowe wyrażenie crontab składa się z pól MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK
rozdzielanych spacjami. Symbol wieloznaczny *
oznacza wszystkie wartości pola.
W wyrażeniu cron harmonogramu usługi Azure Machine Language:
MINUTES
jest liczbą całkowitą lub listą z zakresu od 0 do 59.HOURS
jest liczbą całkowitą lub listą z zakresu od 0 do 23.DAYS
wartości nie są obsługiwane i są zawsze traktowane jako*
. Wartość*
oznaczaDAYS
wszystkie dni w miesiącu, które różnią się w zależności od miesiąca i roku.MONTHS
wartości nie są obsługiwane i są zawsze traktowane jako*
.DAYS-OF-WEEK
jest liczbą całkowitą lub listą z zakresu od 0 do 6, gdzie 0 = niedziela. Nazwy dni są również akceptowane.
Na przykład wyrażenie 15 16 * * 1
oznacza 16:15 CZASU UTC co poniedziałek. Aby uzyskać więcej informacji na temat wyrażeń crontab, zobacz witrynę typu wiki Crontab Expression w witrynie GitHub.
- Interfejs wiersza polecenia platformy Azure
- Zestaw SDK dla języka Python
- Interfejs użytkownika programu Studio
Poniższy kod YAML definiuje cykliczny harmonogram zadania potoku. Wymagany type
parametr określa, że trigger
typ to cron
.
$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
Musisz lub możesz podać następujące parametry harmonogramu:
Parametry
expression
(wymagane) to standardowe wyrażenie crontab, które wyraża harmonogram cykliczny.start_time
(opcjonalnie) to data i godzina rozpoczęcia harmonogramu ze strefą czasową. Na przykład oznacza,start_time: "2022-05-10T10:15:00-04:00"
że harmonogram rozpoczyna się od 10:15:00 w dniu 10 maja 2022 r. w strefie czasowej UTC-4. W przypadku pominięcia wartość domyślna jest równa harmonogramowi czasu tworzenia. Jeśli godzina rozpoczęcia jest w przeszłości, pierwsze zadanie jest uruchamiane w następnym obliczonym czasie wykonywania.end_time
(opcjonalnie) to data i godzina zakończenia ze strefą czasową. W przypadku pominięcia harmonogram pozostaje aktywny do momentu ręcznego wyłączenia.time_zone
(opcjonalnie) określa strefę czasową harmonogramu cyklu. W przypadku pominięcia wartość domyślna to UTC.
- Interfejs wiersza polecenia platformy Azure
- Zestaw SDK dla języka Python
- Interfejs użytkownika programu Studio
Po utworzeniu harmonogramu YAML użyj następującego polecenia, aby utworzyć harmonogram za pomocą interfejsu wiersza polecenia:
# 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
Zmienianie ustawień zadania podczas definiowania harmonogramów
Czasami można chcieć, aby zadania wyzwalane przez harmonogramy miały różne konfiguracje od zadań testowych. Podczas definiowania harmonogramu przy użyciu istniejącego zadania można zmienić ustawienia zadania. Takie podejście umożliwia zdefiniowanie wielu harmonogramów, które używają 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
Podczas definiowania harmonogramu można zmienić settings
element , inputs
lub outputs
użyć go podczas uruchamiania zadania potoku. Można również zmienić experiment_name
wyzwalane zadanie.
Poniższa definicja harmonogramu zmienia ustawienia istniejącego zadania.
$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
Używanie obsługiwanych wyrażeń w harmonogramach
Podczas definiowania harmonogramu można użyć następujących wyrażeń makr, aby zdefiniować dynamiczne wartości parametrów, które są rozpoznawane na rzeczywiste wartości w czasie wykonywania zadania.
Expression | opis | Obsługiwane właściwości |
---|---|---|
${{name}} |
Nazwa zadania | outputs ścieżka zadania potoku |
${{creation_context.trigger_time}} |
Czas wyzwalania zadania | Typ inputs ciągu zadania potoku |
Zarządzanie harmonogramem
Możesz wyświetlać, wyświetlać szczegóły, aktualizować, wyłączać, włączać i usuwać harmonogramy w obszarze roboczym.
Wyświetlanie listy harmonogramów
- Interfejs wiersza polecenia platformy Azure
- Zestaw SDK dla języka Python
- Interfejs użytkownika programu Studio
az ml schedule list
Wyświetlanie szczegółów harmonogramu
- Interfejs wiersza polecenia platformy Azure
- Zestaw SDK dla języka Python
- Interfejs użytkownika programu Studio
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
az ml schedule update -n simple_cron_job_schedule --set description="new description" --no-wait
Uwaga
Aby zaktualizować więcej niż tylko tagi i opis, rozważ 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
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
az ml schedule enable -n simple_cron_job_schedule --no-wait
Usuwanie harmonogramu
Ważne
Najpierw należy wyłączyć harmonogram, aby go usunąć. Usunięcie jest trwałe i nieodwracalne.
- Interfejs wiersza polecenia platformy Azure
- Zestaw SDK dla języka Python
- Interfejs użytkownika programu Studio
az ml schedule delete -n simple_cron_job_schedule
Wykonywanie zapytań wyzwolonych zadań z harmonogramu
Zadania wyzwalane według określonego harmonogramu mają nazwę <schedule_name>-YYYYMMDDThhmmssZ
wyświetlaną . Jeśli na przykład harmonogram o nazwie jest uruchamiany named-schedule
co 12 godzin, począwszy od 6:00 w dniu 1 stycznia 2021 r., nazwy wyświetlane utworzonych zadań są następujące:
- 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')]"
Napiwek
Karta Historia zadań na stronie szczegółów harmonogramu w programie Studio zapewnia prosty sposób znajdowania wszystkich zadań wyzwalanych zgodnie z harmonogramem.
Obsługa kontroli dostępu opartej na rolach (RBAC)
Ponieważ harmonogramy są używane do produkcji, ważne jest, aby zmniejszyć prawdopodobieństwo i wpływ niewłaściwej operacji. Administratorzy obszaru roboczego mogą ograniczyć dostęp do planowania tworzenia i zarządzania w obszarze roboczym.
Administratorzy mogą skonfigurować następujące reguły akcji związane z harmonogramami w witrynie Azure Portal. Aby uzyskać więcej informacji, zobacz Zarządzanie dostępem do obszarów roboczych usługi Azure Machine Learning.
Akcja | opis | Reguła |
---|---|---|
Przeczytaj | Pobieranie i wyświetlanie listy harmonogramów | Microsoft.MachineLearningServices/workspaces/schedules/read |
Write | Tworzenie, aktualizowanie, wyłączanie i włączanie harmonogramów | Microsoft.MachineLearningServices/workspaces/schedules/write |
Delete | Usuwanie harmonogramów | Microsoft.MachineLearningServices/workspaces/schedules/delete |
Kwestie związane z kosztami
Harmonogramy są rozliczane na podstawie liczby harmonogramów. Każdy harmonogram tworzy aplikację logiki hostowaną przez usługę Azure Machine Learning w imieniu użytkownika (HOBO).
Aplikacja logiki pobiera opłaty z powrotem do subskrypcji platformy Azure użytkownika. Koszty zasobów HOBO są rozliczane przy użyciu tego samego miernika emitowanego przez oryginalnego dostawcę zasobów. Opłaty są wyświetlane w ramach zasobu hosta, który jest obszarem roboczym usługi Azure Machine Learning.