Freigeben über


Auslösen von Machine Learning-Pipelines

GILT FÜR:Azure Machine Learning SDK v1 für Python

Wichtig

Dieser Artikel enthält Informationen zur Verwendung des Azure Machine Learning SDK v1. SDK v1 ist ab dem 31. März 2025 veraltet. Der Support für sie endet am 30. Juni 2026. Sie können SDK v1 bis zu diesem Datum installieren und verwenden.

Es wird empfohlen, vor dem 30. Juni 2026 zum SDK v2 zu wechseln. Weitere Informationen zu SDK v2 finden Sie unter Was ist Azure Machine Learning CLI und Python SDK v2? und die SDK v2-Referenz.

In diesem Artikel erfahren Sie, wie Sie programmgesteuert eine Pipeline für die Ausführung in Azure planen. Sie können einen Plan erstellen, der auf verstrichener Zeit oder auf Änderungen im Dateisystem beruht. Sie können zeitbasierte Zeitpläne verwenden, um Routineaufgaben auszuführen, z. B. die Überwachung auf Datenabweichungen. Sie können änderungsbasierte Zeitpläne verwenden, um auf unregelmäßige oder unvorhersehbare Änderungen zu reagieren, z. B. neue Daten, die hochgeladen werden, oder alte Daten, die bearbeitet werden.

Nachdem Sie erfahren haben, wie Sie Zeitpläne erstellen, erfahren Sie, wie Sie sie abrufen und deaktivieren. Schließlich erfahren Sie, wie Sie andere Azure-Dienste, Azure Logic Apps und Azure Data Factory verwenden, um Pipelines auszuführen. Eine Logik-App ermöglicht komplexere Triggerlogik oder -verhalten. Mit Azure Data Factory-Pipelines können Sie eine Machine Learning-Pipeline als Teil einer größeren Datenorchestrierung aufrufen.

Voraussetzungen

Erforderliche Werte abrufen

Um eine Pipeline zu planen, benötigen Sie einen Verweis auf Ihren Arbeitsbereich, den Bezeichner Ihrer veröffentlichten Pipeline und den Namen des Experiments, in dem Sie den Zeitplan erstellen möchten. Sie können diese Werte mithilfe des folgenden Codes abrufen:

import azureml.core
from azureml.core import Workspace
from azureml.pipeline.core import Pipeline, PublishedPipeline
from azureml.core.experiment import Experiment

ws = Workspace.from_config()

experiments = Experiment.list(ws)
for experiment in experiments:
    print(experiment.name)

published_pipelines = PublishedPipeline.list(ws)
for published_pipeline in  published_pipelines:
    print(f"{published_pipeline.name},'{published_pipeline.id}'")

experiment_name = "MyExperiment" 
pipeline_id = "aaaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" 

Erstellen eines Zeitplans

Zum Ausführen einer Pipeline auf wiederkehrender Basis erstellen Sie einen Zeitplan. Ein Schedule verknüpft eine Pipeline, ein Experiment und einen Auslöser. Der Auslöser kann entweder ein ScheduleRecurrence Wert sein, der die Wartezeit zwischen Aufträgen oder einen Datenspeicherpfad definiert, der ein Verzeichnis angibt, das auf Änderungen überwacht werden soll. In beiden Fällen benötigen Sie den Pipelinebezeichner und den Namen des Experiments, in dem der Zeitplan erstellt werden soll.

Importieren Sie am Anfang der Python-Datei die Klassen Schedule und ScheduleRecurrence:


from azureml.pipeline.core.schedule import ScheduleRecurrence, Schedule

Erstellen eines zeitbasierten Plans

Der ScheduleRecurrence Konstruktor verfügt über ein erforderliches frequency Argument, das auf eine der folgenden Zeichenfolgen festgelegt werden muss: "Minute", , "Hour", , "Day", "Week"oder "Month". Außerdem ist ein ganzzahliges interval Argument erforderlich, das angibt, wie viele frequency Einheiten zwischen den Startzeiten vergehen sollen. Optionale Argumente ermöglichen es Ihnen, spezifischere Informationen zu Startzeiten zu erhalten, wie in der ScheduleRecurrence-Dokumentation beschrieben.

Erstellen Sie einen Schedule, der alle 15 Minuten einen Auftrag startet:

recurrence = ScheduleRecurrence(frequency="Minute", interval=15)
recurring_schedule = Schedule.create(ws, name="MyRecurringSchedule", 
                            description="Based on time",
                            pipeline_id=pipeline_id, 
                            experiment_name=experiment_name, 
                            recurrence=recurrence)

Erstellen eines änderungsbasierten Plans

Pipelines, die durch Dateiänderungen ausgelöst werden, sind möglicherweise effizienter als zeitbasierte Zeitpläne. Wenn Sie vor dem Ändern einer Datei oder dem Hinzufügen einer neuen Datei zu einem Datenverzeichnis etwas unternehmen möchten, können Sie diese Datei vorverarbeiten. Sie können alle Änderungen an einem Datenspeicher oder Änderungen in einem bestimmten Verzeichnis innerhalb des Datenspeichers überwachen. Wenn Sie ein bestimmtes Verzeichnis überwachen, lösen Änderungen in Unterverzeichnissen dieses Verzeichnisses keinen Auftrag aus.

Hinweis

Änderungsbasierte Zeitpläne unterstützen nur die Überwachung von Azure Blob Storage.

Um eine Schedule dateireaktive Funktion zu erstellen, müssen Sie den Parameter datastore im Aufruf von Schedule.create festlegen. Zum Überwachen eines Ordners legen Sie das path_on_datastore-Argument fest.

Mit dem polling_interval Argument können Sie in Minuten die Häufigkeit angeben, mit der der Datenspeicher auf Änderungen überprüft wird.

Wenn die Pipeline mit DataPathPipelineParameter erstellt wurde, können Sie durch Festlegen des data_path_parameter_name-Arguments diese Variable auf den Namen der geänderten Datei einstellen.

datastore = Datastore(workspace=ws, name="workspaceblobstore")

reactive_schedule = Schedule.create(ws, name="MyReactiveSchedule", description="Based on input file change.",
                            pipeline_id=pipeline_id, experiment_name=experiment_name, datastore=datastore, data_path_parameter_name="input_data")

Optionale Argumente zum Erstellen eines Zeitplans

Zusätzlich zu den zuvor erläuterten Argumenten können Sie das status-Argument auf "Disabled" setzen, um einen inaktiven Zeitplan zu erstellen. Das continue_on_step_failure ermöglicht Ihnen, einen Booleschen Wert zu übergeben, der das standardmäßige Fehlverhalten der Pipeline überschreibt.

Anzeigen der geplanten Pipelines

Wechseln Sie in einem Browser zu Azure Machine Learning Studio. Wählen Sie im linken Bereich das Symbol "Endpunkte" aus. Wählen Sie im Bereich "Endpunkte " die Option "Endpunkte in Echtzeit" aus. Dadurch gelangen Sie zu einer Liste der Pipelines, die im Arbeitsbereich veröffentlicht sind.

Screenshot des Bereichs

Auf dieser Seite können Sie zusammenfassende Informationen zu allen Pipelines im Arbeitsbereich anzeigen: Namen, Beschreibungen, Status usw. Weitere Informationen erhalten Sie, indem Sie den Namen einer Pipeline auswählen. Auf der resultierenden Seite können Sie auch Informationen zu einzelnen Aufträgen abrufen.

Deaktivieren der Pipeline

Wenn Sie ein veröffentlichtes, aber nicht geplantes Pipeline Element haben, können Sie es mithilfe dieses Codes deaktivieren.

pipeline = PublishedPipeline.get(ws, id=pipeline_id)
pipeline.disable()

Wenn die Pipeline bereits geplant ist, müssen Sie zuerst den Plan abbrechen. Rufen Sie den Bezeichner des Zeitplans aus dem Portal ab, oder führen Sie diesen Code aus:

ss = Schedule.list(ws)
for s in ss:
    print(s)

Nachdem Sie den schedule_id Zeitplan haben, den Sie deaktivieren möchten, führen Sie diesen Code aus:

def stop_by_schedule_id(ws, schedule_id):
    s = next(s for s in Schedule.list(ws) if s.id == schedule_id)
    s.disable()
    return s

stop_by_schedule_id(ws, schedule_id)

Wenn Sie dann Schedule.list(ws) erneut ausführen, sollte eine leere Liste angezeigt werden.

Verwenden von Logik-Apps für komplexe Trigger

Sie können komplexere Triggerregeln oder -verhalten mithilfe von Logik-Apps erstellen.

Um eine Logik-App zum Auslösen einer Machine Learning-Pipeline zu verwenden, benötigen Sie den REST-Endpunkt für eine veröffentlichte Machine Learning-Pipeline. Erstellen und veröffentlichen Sie Ihre Pipeline. Suchen Sie anschließend mithilfe der Pipeline-ID den REST-Endpunkt Ihrer PublishedPipeline:

# You can find the pipeline ID in Azure Machine Learning studio

published_pipeline = PublishedPipeline.get(ws, id="<pipeline-id-here>")
published_pipeline.endpoint 

Erstellen Sie eine Logik-App in Azure

Erstellen Sie nun eine Logik-App. Führen Sie nach der Bereitstellung Ihrer Logik-App die folgenden Schritte aus, um einen Auslöser für Ihre Pipeline zu konfigurieren:

  1. Erstellen Sie eine vom System zugewiesene verwaltete Identität , um der App Zugriff auf Ihren Azure Machine Learning-Arbeitsbereich zu gewähren.

  2. Wählen Sie im linken Bereich "Logik-App-Vorlagen " im Abschnitt "Entwicklungstools " aus.

  3. Wählen Sie die Vorlage "Leerer Workflow" aus:

    Screenshot der Schaltfläche für die Vorlage

  4. Wählen Sie im Designer "Trigger hinzufügen" aus.

  5. Im Bereich "Trigger hinzufügen" suchen Sie nach blob. Wählen Sie den Trigger aus, wenn ein Blob hinzugefügt oder geändert wird (nur Eigenschaften).

    Screenshot, der zeigt, wie Sie einer Logik-App einen Trigger hinzufügen.

  6. Geben Sie im Bereich "Verbindung erstellen " die Verbindungsinformationen für das Blob Storage-Konto an, das Sie auf Blob-Ergänzungen oder -Änderungen überwachen möchten, und wählen Sie dann "Neu erstellen" aus. Wählen Sie den zu überwachenden Container aus.

    Wählen Sie Intervall- und Häufigkeitswerte aus, die für Sie funktionieren.

    Hinweis

    Mit diesem Auslöser wird der ausgewählte Container überwacht, jedoch keine Unterordner.

  7. Fügen Sie eine HTTP-Aktion hinzu, die ausgeführt wird, wenn ein Blob geändert wird oder ein neues Blob erkannt wird. Wählen Sie unter dem Trigger das Pluszeichen (+) aus, und wählen Sie dann "Aktion hinzufügen" aus.

  8. Wählen Sie im Bereich "Aktion hinzufügen " die HTTP-Aktion aus. Sollten Sie es nicht sehen, können Sie danach suchen.

    Screenshot, der zeigt, wie eine HTTP-Aktion hinzugefügt wird.

  9. Wählen Sie im resultierenden Bereich HTTP aus.

    Konfigurieren Sie Ihre Aktion mit den folgenden Einstellungen:

    Einstellung Wert
    URI Der Endpunkt der veröffentlichten Pipeline. Siehe Voraussetzungen.
    Methode POST
    Authentifizierungstyp (unter erweiterten Einstellungen) Verwaltete Identität
  10. Konfigurieren Sie Ihren Zeitplan, um die Werte aller DataPath PipelineParameters festzulegen, die Sie haben:

    {
      "DataPathAssignments": {
        "input_datapath": {
          "DataStoreName": "<datastore-name>",
          "RelativePath": "@{triggerBody()?['Name']}" 
        }
      },
      "ExperimentName": "MyRestPipeline",
      "ParameterAssignments": {
        "input_string": "sample_string3"
      },
      "RunSource": "SDK"
    }
    

    Verwenden Sie das DataStoreName, das Sie Ihrem Arbeitsbereich hinzugefügt haben, als Voraussetzung.

    Screenshot der HTTP-Einstellungen.

  11. Wählen Sie Speichern aus.

Wichtig

Wenn Sie die rollenbasierte Azure-Zugriffssteuerung (Azure RBAC) verwenden, um den Zugriff auf Ihre Pipeline zu verwalten, legen Sie die Berechtigungen für Ihr Pipelineszenario (Schulung oder Bewertung) fest.

Aufrufen von Machine Learning-Pipelines über Azure Data Factory

In einer Azure Data Factory-Pipeline führt die Aktivität Machine Learning-Pipelineausführung eine Azure Machine Learning-Pipeline aus. Diese Aktivität finden Sie auf der Seite zur Erstellung von Azure Data Factory unter Machine Learning im Menü:

Screenshot der Pipelineaktivität für maschinelles Lernen in der Azure Data Factory-Erstellungsumgebung.

Nächste Schritte

In diesem Artikel haben Sie das Azure Machine Learning SDK für Python verwendet, um eine Pipeline auf zwei verschiedene Arten zu planen. Ein Zeitplan wird basierend auf der verstrichenen Uhrzeit ausgelöst. Der andere Zeitplan wird ausgelöst, wenn eine Datei in einem angegebenen Datastore oder in einem Verzeichnis in diesem Speicher geändert wird. Sie haben erfahren, wie Sie das Portal zum Untersuchen von Pipelines und einzelnen Aufträgen verwenden können. Sie haben gelernt, wie Sie einen Plan deaktivieren, damit die Pipeline nicht mehr ausgeführt wird. Schließlich haben Sie eine Azure-Logik-App erstellt, um eine Pipeline auszulösen.

In diesen Artikeln finden Sie weitere Informationen: