Planen Sie Pipeline-Jobs für maschinelles Lernen
GILT FÜR:Azure CLI ML-Erweiterung v2 (aktuell)Python SDK azure-ai-ml v2 (aktuell)
In diesem Artikel erfahren Sie, wie Sie programmgesteuert eine Pipeline für die Ausführung in Azure planen und dafür die Benutzeroberfläche für Zeitpläne verwenden. Sie können einen Zeitplan basierend auf der verstrichenen Zeit erstellen. Zeitbasierte Zeitpläne können verwendet werden, um Routineaufgaben zu erledigen, wie z. B. das erneute Trainieren von Modellen oder regelmäßige Batchvorhersagen, um sie auf dem neuesten Stand zu halten. Nachdem Sie gelernt haben, Zeitpläne zu erstellen, erfahren Sie, wie Sie sie über die CLI, das SDK und die Studio-Benutzeroberfläche abrufen, aktualisieren und deaktivieren.
Tipp
Wenn Sie Aufträge über einen externen Orchestrator wie Azure Data Factory oder Microsoft Fabric planen müssen, sollten Sie Ihre Pipeline-Aufträge unter einem Batch-Endpunkt bereitstellen. Erfahren Sie mehr darüber, wie Sie Aufträge unter einem Batchendpunktbereitstellen und wie Sie Batchendpunkte von Microsoft Fabricnutzen.
Voraussetzungen
- Für die Verwendung von Azure Machine Learning ist ein Azure-Abonnement erforderlich. Wenn Sie nicht über ein Azure-Abonnement verfügen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen. Probieren Sie die kostenlose oder kostenpflichtige Version von Azure Machine Learning noch heute aus.
Installieren Sie die Azure CLI und die Erweiterung
ml
. Befolgen Sie die Installationsschritte unter Installieren, Einrichten und Verwenden der CLI (v2).Erstellen Sie einen Azure Machine Learning-Arbeitsbereich, sofern Sie noch keinen besitzen. Weitere Informationen zur Erstellung eines Arbeitsbereichs finden Sie unter Installieren, Einrichten und Verwenden der CLI (v2).
Planen Sie einen Pipeline-Job
Um einen Pipeline-Job regelmäßig auszuführen, müssen Sie einen Zeitplan erstellen. A Schedule
ordnet einen Job und einen Trigger zu. Der Trigger kann entweder cron
einen Cron-Ausdruck verwenden, um die Wartezeit zwischen den Ausführungen zu beschreiben, oder recurrence
angeben, mit welcher Häufigkeit der Job ausgelöst werden soll. In jedem Fall müssen Sie zuerst einen Pipeline-Job definieren, es können vorhandene Pipeline-Jobs sein oder ein Pipeline-Job, der inline definiert wird, siehe Erstellen eines Pipeline-Jobs in CLI und Erstellen eines Pipeline-Jobs im SDK.
Sie können einen Pipeline-Job yaml im lokalen oder einen vorhandenen Pipeline-Job im Arbeitsbereich planen.
Erstellen eines Zeitplans
Erstellen Sie einen zeitbasierten Zeitplan mit Wiederholungsmuster
GILT FÜRAzure CLI ML-Erweiterung v2 (aktuell)
$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
enthält die folgenden Eigenschaften:
- (Erforderlich)
type
gibt an, dass der Zeitplantyprecurrence
. Es kann auch seincron
, siehe Details im nächsten Abschnitt.
Die Liste wird unten fortgesetzt.
Hinweis
Die folgenden Eigenschaften, die angegeben werden müssen, gelten für die CLI und das SDK.
(Erforderlich)
frequency
gibt die Zeiteinheit an, die beschreibt, wie oft der Zeitplan ausgelöst wird. Kann seinminute
,hour
,day
,week
,month
.(Erforderlich)
interval
gibt an, wie oft der Zeitplan basierend auf der Häufigkeit ausgelöst wird, d. h. die Anzahl der Zeiteinheiten, die gewartet werden soll, bis der Zeitplan erneut ausgelöst wird.(Optional)
schedule
definiert das Wiederholungsmuster, dashours
,minutes
, und enthältweekdays
.- When
frequency
isday
, pattern kann angebenhours
undminutes
. - Wenn
frequency
und istweek
,month
kann Musterhours
,minutes
, und angebenweekdays
. hours
sollte eine Ganzzahl oder eine Liste von 0 bis 23 sein.minutes
sollte eine ganze Zahl oder eine Liste von 0 bis 59 sein.weekdays
kann ein String oder eine Liste vonmonday
bissunday
sein.- Wenn
schedule
weggelassen wird, werden die Jobs gemäß der Logik vonstart_time
,frequency
undinterval
ausgelöst.
- When
(Optional)
start_time
beschreibt Startdatum und -uhrzeit mit Zeitzone. Wennstart_time
weggelassen wird, entspricht start_time der Erstellungszeit des Jobs. Wenn die Startzeit in der Vergangenheit liegt, wird der erste Job zur nächsten berechneten Laufzeit ausgeführt.(Optional)
end_time
beschreibt Enddatum und -uhrzeit mit Zeitzone. Wennend_time
weggelassen wird, löst der Zeitplan weiterhin Jobs aus, bis der Zeitplan manuell deaktiviert wird.(Optional)
time_zone
gibt die Zeitzone der Wiederholung an. Wenn weggelassen, ist standardmäßig UTC. Um mehr über Zeitzonenwerte zu erfahren, siehe Anhang für Zeitzonenwerte.
Erstellen Sie einen zeitbasierten Zeitplan mit Cron-Ausdruck
GILT FÜRAzure CLI ML-Erweiterung v2 (aktuell)
$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
Der trigger
Abschnitt definiert die Zeitplandetails und enthält folgende Eigenschaften:
- (Erforderlich)
type
gibt an, dass der Zeitplantypcron
.
Die Liste wird unten fortgesetzt.
(Erforderlich)
expression
verwendet einen standardmäßigen crontab-Ausdruck, um einen wiederkehrenden Zeitplan auszudrücken. Ein einzelner Ausdruck besteht aus fünf durch Leerzeichen getrennten Feldern:MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK
Ein einzelner Platzhalter (
*
), der alle Werte für das Feld abdeckt. So*
in Tagen bedeutet also alle Tage eines Monats (was je nach Monat und Jahr variiert).Das
expression: "15 16 * * 1"
im obigen Beispiel bedeutet 16:15 Uhr an jedem Montag.Die folgende Tabelle listet die gültigen Werte für jedes Feld auf:
Feld Bereich Comment MINUTES
0-59 - HOURS
0-23 - DAYS
- Wird nicht unterstützt. Der Wert wird ignoriert und als behandelt *
.MONTHS
- Wird nicht unterstützt. Der Wert wird ignoriert und als behandelt *
.DAYS-OF-WEEK
0 - 6 Null (0) bedeutet Sonntag. Namen von Tagen werden ebenfalls akzeptiert. Weitere Informationen zur Verwendung von Crontab-Ausdrücken finden Sie im Crontab-Ausdrucks-Wiki auf GitHub .
Wichtig
DAYS
undMONTH
werden nicht unterstützt. Wenn Sie einen Wert übergeben, wird dieser ignoriert und als*
.(Optional)
start_time
gibt das Startdatum und die Uhrzeit mit der Zeitzone des Zeitplans an.start_time: "2022-05-10T10:15:00-04:00"
bedeutet, dass der Zeitplan am 10.05.2022 um 10:15:00 Uhr in der Zeitzone UTC-4 beginnt. Wennstart_time
weggelassen wird, entsprichtstart_time
dies der Zeitplanerstellungszeit. Wenn die Startzeit in der Vergangenheit liegt, wird der erste Job zur nächsten berechneten Laufzeit ausgeführt.(Optional)
end_time
beschreibt Enddatum und -uhrzeit mit Zeitzone. Wennend_time
weggelassen wird, löst der Zeitplan weiterhin Jobs aus, bis der Zeitplan manuell deaktiviert wird.(Optional)
time_zone
gibt die Zeitzone des Ausdrucks an. Wenn weggelassen, ist standardmäßig UTC. Siehe Anhang für Zeitzonenwerte.
Einschränkungen:
- Der Azure Machine Learning v2-Zeitplan unterstützt derzeit keinen ereignisbasierten Auslöser.
- Sie können ein komplexes Wiederholungsmuster mit mehreren Auslöserzeitstempeln mithilfe von Azure Machine Learning SDK/CLI v2 angeben. Auf der Benutzeroberfläche wird hingegen nur das komplexe Muster anzeigt und keine Bearbeitung unterstützt.
- Wenn Sie für die Wiederholung den 31. Tag jedes Monats festlegen, löst der Zeitplan in Monaten mit weniger als 31 Tagen keine Aufträge aus.
Ändern Sie die Laufzeiteinstellungen beim Definieren des Zeitplans
Wenn Sie einen Zeitplan mit einem vorhandenen Job definieren, können Sie die Laufzeiteinstellungen des Jobs ändern. Mit diesem Ansatz können Sie mehrere Zeitpläne definieren, indem Sie denselben Job mit unterschiedlichen Eingaben verwenden.
GILT FÜRAzure CLI ML-Erweiterung v2 (aktuell)
$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
Folgende Eigenschaften können beim Definieren eines Zeitplans geändert werden:
Eigenschaft | BESCHREIBUNG |
---|---|
settings | Ein Wörterbuch mit Einstellungen, die beim Ausführen des Pipeline-Jobs verwendet werden sollen. |
inputs | Ein Wörterbuch mit Eingaben, die beim Ausführen des Pipeline-Jobs verwendet werden sollen. |
outputs | Ein Wörterbuch mit Eingaben, die beim Ausführen des Pipeline-Jobs verwendet werden sollen. |
experiment_name | Testname des ausgelösten Jobs. |
Hinweis
Benutzer der Studio-Benutzeroberfläche können beim Erstellen eines Zeitplans nur Eingabe-, Ausgabe- und Laufzeiteinstellungen ändern. experiment_name
kann nur mit der CLI oder dem SDK geändert werden.
Im Zeitplan unterstützte Ausdrücke
Beim Definieren eines Zeitplans unterstützen wir den folgenden Ausdruck, der während der Joblaufzeit in einen realen Wert aufgelöst wird.
Ausdruck | BESCHREIBUNG | Unterstützte Eigenschaften |
---|---|---|
${{creation_context.trigger_time}} |
Die Zeit, zu der der Zeitplan ausgelöst wird. | Zeichenfolgeneingaben des Pipeline-Jobs |
${{name}} |
Der Name des Jobs. | output.path des Pipeline-Jobs |
Zeitplan verwalten
Erstellen eines Zeitplans
GILT FÜRAzure CLI ML-Erweiterung v2 (aktuell)
Nachdem Sie die Zeitplan-YAML erstellt haben, können Sie den folgenden Befehl verwenden, um einen Zeitplan über die CLI zu erstellen.
# 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
Zeitpläne in einem Arbeitsbereich auflisten
GILT FÜRAzure CLI ML-Erweiterung v2 (aktuell)
az ml schedule list
Überprüfen Sie die Zeitplandetails
GILT FÜRAzure CLI ML-Erweiterung v2 (aktuell)
az ml schedule show -n simple_cron_job_schedule
Aktualisieren Sie einen Zeitplan
GILT FÜRAzure CLI ML-Erweiterung v2 (aktuell)
az ml schedule update -n simple_cron_job_schedule --set description="new description" --no-wait
Hinweis
Wenn Sie mehr als nur Tags oder Beschreibungen aktualisieren möchten, empfiehlt sich die Verwendung von az ml schedule create --file update_schedule.yml
.
Deaktivieren eines Zeitplans
GILT FÜRAzure CLI ML-Erweiterung v2 (aktuell)
az ml schedule disable -n simple_cron_job_schedule --no-wait
Aktivieren Sie einen Zeitplan
GILT FÜRAzure CLI ML-Erweiterung v2 (aktuell)
az ml schedule enable -n simple_cron_job_schedule --no-wait
Fragen Sie ausgelöste Jobs von einem Zeitplan ab
Alle Anzeigenamen von Jobs, die durch einen Zeitplan ausgelöst werden, haben den <Anzeigenamen als Zeitplanname>-YYYYMMDDThhmmssZ. Wenn beispielsweise ein Zeitplan mit dem Namen benannter Zeitplan mit einer geplanten Ausführung alle 12 Stunden ab 6:00 Uhr am 1. Januar 2021 erstellt wird, lauten die Anzeigenamen der erstellten Jobs wie folgt:
- benannter Zeitplan 20210101T060000Z
- benannter Zeitplan 20210101T180000Z
- benannter Zeitplan 20210102T060000Z
- named-schedule-20210102T180000Z und so weiter
Sie können auch die JMESPath-Abfrage der Azure CLI anwenden, um die durch einen Zeitplannamen ausgelösten Aufträge abzufragen.
# 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')]"
Hinweis
Eine einfachere Möglichkeit, alle durch einen Zeitplan ausgelösten Aufträge zu ermitteln, besteht darin, den Auftragsverlauf auf der Detailseite des Zeitplans über die Studio-Benutzeroberfläche anzuzeigen.
Löschen eines Zeitplans
Wichtig
Ein Zeitplan muss deaktiviert werden, um gelöscht zu werden. Löschen kann nicht rückgängig gemacht werden. Nachdem ein Zeitplan gelöscht wurde, können Sie nicht mehr darauf zugreifen oder ihn wiederherstellen.
GILT FÜRAzure CLI ML-Erweiterung v2 (aktuell)
az ml schedule delete -n simple_cron_job_schedule
Unterstützung für RBAC (rollenbasierte Zugriffssteuerung)
Da Zeitpläne in der Regel für die Produktion verwendet werden, sollten Arbeitsbereichsadministratoren den Zugriff auf die Erstellung und Verwaltung von Zeitplänen innerhalb eines Arbeitsbereichs einschränken, um die Auswirkungen von Fehlfunktionen zu verringern.
Derzeit gibt es drei Aktionsregeln im Zusammenhang mit Zeitplänen, die Sie im Azure-Portal konfigurieren können. Hier erfahren Sie mehr über das Verwalten des Zugriffs auf einen Azure Machine Learning-Arbeitsbereich.
Aktion | BESCHREIBUNG | Regel |
---|---|---|
Lesen | Abrufen und Auflisten von Zeitplänen im Machine Learning-Arbeitsbereich | Microsoft.MachineLearningServices/workspaces/schedules/read |
Schreiben | Erstellen, Aktualisieren, Deaktivieren und Aktivieren von Zeitplänen im Machine Learning-Arbeitsbereich | Microsoft.MachineLearningServices/workspaces/schedules/write |
Löschen | Löschen eines Zeitplans im Machine Learning-Arbeitsbereich | Microsoft.MachineLearningServices/workspaces/schedules/delete |
Häufig gestellte Fragen
Warum werden meine vom SDK erstellten Zeitpläne nicht auf der Benutzeroberfläche aufgeführt?
Die Benutzeroberfläche für Zeitpläne ist für v2-Zeitpläne vorgesehen. Daher werden Ihre v1-Zeitpläne nicht auf der Benutzeroberfläche aufgeführt und können nicht über die Benutzeroberfläche aufgerufen werden.
v2-Zeitpläne unterstützen jedoch auch v1-Pipelineaufträge. Sie müssen die Pipeline nicht zuerst veröffentlichen, und Sie können Zeitpläne für einen Pipelineauftrag direkt einrichten.
Warum lösen meine Zeitpläne den Auftrag nicht zu dem von mir festgelegten Zeitpunkt aus?
- Zeitpläne verwenden standardmäßig die UTC-Zeitzone, um die Auslösezeit zu berechnen. Sie können die Zeitzone im Erstellungs-Assistenten angeben oder die Zeitzone auf der Detailseite des Zeitplans aktualisieren.
- Wenn Sie für die Wiederholung den 31. Tag jedes Monats festlegen, löst der Zeitplan in Monaten mit weniger als 31 Tagen keine Aufträge aus.
- Wenn Sie Cron-Ausdrücke verwenden, wird MONTH nicht unterstützt. Wenn Sie einen Wert übergeben, wird dieser ignoriert und als * behandelt. Dies ist eine bekannte Einschränkung.
Werden ereignisbasierte Zeitpläne unterstützt?
- Nein, der V2-Zeitplan unterstützt keine ereignisbasierten Zeitpläne.
Nächste Schritte
- Erfahren Sie mehr über das CLI (v2)-Zeitplan-YAML-Schema.
- Erfahren Sie, wie Sie einen Pipeline-Job in CLI v2 erstellen.
- Erfahren Sie, wie Sie einen Pipeline-Job in SDK v2 erstellen.
- Erfahren Sie mehr über die zentrale YAML-Syntax der CLI (v2).
- Erfahren Sie mehr über Pipelines.
- Erfahren Sie mehr über Komponente.