Freigeben über


PipelineData Klasse

Stellt Zwischendaten in einer Azure Machine Learning-Pipeline dar.

Daten, die in der Pipeline verwendet werden, können von einem Schritt erstellt und in einem anderen Schritt genutzt werden, indem ein PipelineData-Objekt als Ausgabe eines Schritts und eine Eingabe einer oder mehrerer nachfolgenden Schritte bereitgestellt wird.

Wenn Sie die Pipelinedaten verwenden, stellen Sie sicher, dass das verwendete Verzeichnis vorhanden ist.

Ein Python-Beispiel, um sicherzustellen, dass das Verzeichnis vorhanden ist, angenommen, Sie haben einen Ausgabeport namens output_folder in einem Pipelineschritt, sie möchten einige Daten in relativen Pfad in diesem Ordner schreiben.


   import os
   os.makedirs(args.output_folder, exist_ok=True)
   f = open(args.output_folder + '/relative_path/file_name', 'w+')

PipelineData verwenden DataReference zugrunde liegenden, was nicht mehr der empfohlene Ansatz für den Datenzugriff und die Übermittlung ist, verwenden Sie stattdessen OutputFileDatasetConfig , sie finden Sie hier beispiel: Pipeline using OutputFileDatasetConfig.

Initialisieren von PipelineData.

Konstruktor

PipelineData(name, datastore=None, output_name=None, output_mode='mount', output_path_on_compute=None, output_overwrite=None, data_type=None, is_directory=None, pipeline_output_name=None, training_output=None)

Parameter

Name Beschreibung
name
Erforderlich
str

Der Name des PipelineData-Objekts, das nur Buchstaben, Ziffern und Unterstriche enthalten kann.

PipelineData-Namen werden verwendet, um die Ausgaben eines Schritts zu identifizieren. Nachdem eine Pipelineausführung abgeschlossen wurde, können Sie den Schrittnamen mit einem Ausgabenamen verwenden, um auf eine bestimmte Ausgabe zuzugreifen. Namen sollten innerhalb eines einzelnen Schritts in einer Pipeline eindeutig sein.

datastore

Der Datenspeicher, auf dem sich pipelineData befindet. Wenn nicht angegeben, wird der Standarddatenspeicher verwendet.

Standardwert: None
output_name
str

Der Name der Ausgabe, wenn kein Name verwendet wird. Darf nur Buchstaben, Ziffern und Unterstriche enthalten.

Standardwert: None
output_mode
str

Gibt an, ob der Produktionsschritt die Methode "upload" oder "mount" verwendet, um auf die Daten zuzugreifen.

Standardwert: mount
output_path_on_compute
str

Für output_mode = "upload" stellt dieser Parameter den Pfad dar, in den das Modul die Ausgabe schreibt.

Standardwert: None
output_overwrite

Für output_mode = "upload" gibt dieser Parameter an, ob vorhandene Daten überschrieben werden sollen.

Standardwert: None
data_type
str

Wahlfrei. Der Datentyp kann verwendet werden, um den erwarteten Typ der Ausgabe anzugeben und zu erläutern, wie die Nutzungsschritte die Daten verwenden sollen. Es kann sich um eine beliebige benutzerdefinierte Zeichenfolge sein.

Standardwert: None
is_directory

Gibt an, ob es sich bei den Daten um ein Verzeichnis oder eine einzelne Datei handelt. Dies wird nur verwendet, um einen Datentyp zu bestimmen, der vom Azure ML-Back-End verwendet wird, wenn der data_type Parameter nicht angegeben wird. Der Standardwert ist False.

Standardwert: None
pipeline_output_name

Wenn diese Ausgabe bereitgestellt wird, wird mithilfe von PipelineRun.get_pipeline_output(). Die Namen der Pipelineausgabe müssen in der Pipeline eindeutig sein.

Standardwert: None
training_output

Definiert die Ausgabe für das Schulungsergebnis. Dies ist nur für bestimmte Schulungen erforderlich, die zu verschiedenen Arten von Ausgaben wie Metriken und Modell führen. Führt z. B AutoMLStep . zu Metriken und Modell. Sie können auch bestimmte Schulungsiterationen oder Metriken definieren, die zum Abrufen des besten Modells verwendet werden. Außerdem HyperDriveStepkönnen Sie die spezifischen Modelldateien definieren, die in die Ausgabe eingeschlossen werden sollen.

Standardwert: None
name
Erforderlich
str

Der Name des PipelineData-Objekts, das nur Buchstaben, Ziffern und Unterstriche enthalten kann.

PipelineData-Namen werden verwendet, um die Ausgaben eines Schritts zu identifizieren. Nachdem eine Pipelineausführung abgeschlossen wurde, können Sie den Schrittnamen mit einem Ausgabenamen verwenden, um auf eine bestimmte Ausgabe zuzugreifen. Namen sollten innerhalb eines einzelnen Schritts in einer Pipeline eindeutig sein.

datastore
Erforderlich

Der Datenspeicher, auf dem sich pipelineData befindet. Wenn nicht angegeben, wird der Standarddatenspeicher verwendet.

output_name
Erforderlich
str

Der Name der Ausgabe, wenn kein Name verwendet wird. die nur Buchstaben, Ziffern und Unterstriche enthalten kann.

output_mode
Erforderlich
str

Gibt an, ob der Produktionsschritt die Methode "upload" oder "mount" verwendet, um auf die Daten zuzugreifen.

output_path_on_compute
Erforderlich
str

Für output_mode = "upload" stellt dieser Parameter den Pfad dar, in den das Modul die Ausgabe schreibt.

output_overwrite
Erforderlich

Für output_mode = "upload" gibt dieser Parameter an, ob vorhandene Daten überschrieben werden sollen.

data_type
Erforderlich
str

Wahlfrei. Der Datentyp kann verwendet werden, um den erwarteten Typ der Ausgabe anzugeben und zu erläutern, wie die Nutzungsschritte die Daten verwenden sollen. Es kann sich um eine beliebige benutzerdefinierte Zeichenfolge sein.

is_directory
Erforderlich

Gibt an, ob es sich bei den Daten um ein Verzeichnis oder eine einzelne Datei handelt. Dies wird nur verwendet, um einen Datentyp zu bestimmen, der vom Azure ML-Back-End verwendet wird, wenn der data_type Parameter nicht angegeben wird. Der Standardwert ist False.

pipeline_output_name
Erforderlich
str

Wenn diese Ausgabe bereitgestellt wird, wird mithilfe von PipelineRun.get_pipeline_output(). Die Namen der Pipelineausgabe müssen in der Pipeline eindeutig sein.

training_output
Erforderlich

Definiert die Ausgabe für das Schulungsergebnis. Dies ist nur für bestimmte Schulungen erforderlich, die zu verschiedenen Arten von Ausgaben wie Metriken und Modell führen. Führt z. B AutoMLStep . zu Metriken und Modell. Sie können auch bestimmte Schulungsiterationen oder Metriken definieren, die zum Abrufen des besten Modells verwendet werden. Außerdem HyperDriveStepkönnen Sie die spezifischen Modelldateien definieren, die in die Ausgabe eingeschlossen werden sollen.

Hinweise

PipelineData stellt die Datenausgabe dar, die ein Schritt erzeugt, wenn er ausgeführt wird. Verwenden Sie PipelineData beim Erstellen von Schritten, um die Dateien oder Verzeichnisse zu beschreiben, die vom Schritt generiert werden. Diese Datenausgabe wird dem angegebenen Datenspeicher hinzugefügt und kann später abgerufen und angezeigt werden.

Der folgende Pipelineschritt erzeugt z. B. eine Ausgabe mit dem Namen "Modell":


   from azureml.pipeline.core import PipelineData
   from azureml.pipeline.steps import PythonScriptStep

   datastore = ws.get_default_datastore()
   step_output = PipelineData("model", datastore=datastore)
   step = PythonScriptStep(script_name="train.py",
                           arguments=["--model", step_output],
                           outputs=[step_output],
                           compute_target=aml_compute,
                           source_directory=source_directory)

In diesem Fall schreibt das train.py Skript das Modell, das es erzeugt, an den Speicherort, der dem Skript über das Argument "-model" bereitgestellt wird.

PipelineData-Objekte werden auch beim Erstellen von Pipelines verwendet, um Schrittabhängigkeiten zu beschreiben. Um anzugeben, dass ein Schritt die Ausgabe eines anderen Schritts als Eingabe erfordert, verwenden Sie ein PipelineData-Objekt im Konstruktor beider Schritte.

Beispielsweise hängt der Pipeline-Zugschritt von der process_step_output Ausgabe des Pipelineprozessschritts ab:


   from azureml.pipeline.core import Pipeline, PipelineData
   from azureml.pipeline.steps import PythonScriptStep

   datastore = ws.get_default_datastore()
   process_step_output = PipelineData("processed_data", datastore=datastore)
   process_step = PythonScriptStep(script_name="process.py",
                                   arguments=["--data_for_train", process_step_output],
                                   outputs=[process_step_output],
                                   compute_target=aml_compute,
                                   source_directory=process_directory)
   train_step = PythonScriptStep(script_name="train.py",
                                 arguments=["--data_for_train", process_step_output],
                                 inputs=[process_step_output],
                                 compute_target=aml_compute,
                                 source_directory=train_directory)

   pipeline = Pipeline(workspace=ws, steps=[process_step, train_step])

Dadurch wird eine Pipeline mit zwei Schritten erstellt. Der Prozessschritt wird zuerst ausgeführt, und nach Abschluss des Vorgangs wird der Zugschritt ausgeführt. Azure ML stellt die vom Prozessschritt erzeugte Ausgabe für den Train-Schritt bereit.

Weitere Beispiele für die Verwendung von PipelineData zum Erstellen einer Pipeline finden Sie auf dieser Seite: https://aka.ms/pl-data-dep

Für unterstützte Computetypen kann PipelineData auch verwendet werden, um anzugeben, wie die Daten von der Ausführung erstellt und genutzt werden. Es gibt zwei unterstützte Methoden:

  • Mount (Standard): Die Eingabe- oder Ausgabedaten werden an den lokalen Speicher auf dem Computeknoten bereitgestellt, und eine Umgebungsvariable wird festgelegt, die auf den Pfad dieser Daten verweist ($AZUREML_DATAREFERENCE_name). Aus Gründen der Einfachheit können Sie das PipelineData-Objekt als eines der Argumente an Ihr Skript übergeben, z. B. mithilfe des arguments Parameters von PythonScriptStep, und das Objekt wird in den Pfad zu den Daten aufgelöst. Für Ausgaben sollte Ihr Computeskript eine Datei oder ein Verzeichnis in diesem Ausgabepfad erstellen. Verwenden Sie die get_env_variable_name Methode, um den Wert der Umgebungsvariable anzuzeigen, die beim Übergeben des Pipelineobjekts als Argument verwendet wird.

  • Upload: Geben Sie einen output_path_on_compute entsprechenden Datei- oder Verzeichnisnamen an, den Ihr Skript generiert. (Umgebungsvariablen werden in diesem Fall nicht verwendet.)

Methoden

as_dataset

Höherstufen der Zwischenausgabe in ein Dataset.

Dieses Dataset ist vorhanden, nachdem der Schritt ausgeführt wurde. Bitte beachten Sie, dass die Ausgabe höhergestuft werden muss, damit die nachfolgende Eingabe als Dataset verwendet werden kann. Wenn as_dataset nicht für die Ausgabe aufgerufen wird, sondern nur für die Eingabe aufgerufen wird, handelt es sich um einen Noop, und die Eingabe wird nicht als Dataset verwendet. Das folgende Codebeispiel zeigt eine korrekte Verwendung von as_dataset:


   # as_dataset is called here and is passed to both the output and input of the next step.
   pipeline_data = PipelineData('output').as_dataset()

   step1 = PythonScriptStep(..., outputs=[pipeline_data])
   step2 = PythonScriptStep(..., inputs=[pipeline_data])
as_download

Nutzen Sie pipelineData als Download.

as_input

Erstellen Sie ein InputPortBinding, und geben Sie einen Eingabenamen an (verwenden Sie jedoch den Standardmodus).

as_mount

Verwenden Sie pipelineData als Bereitstellung.

create_input_binding

Erstellen Sie eine Eingabebindung.

get_env_variable_name

Gibt den Namen der Umgebungsvariablen für diese PipelineData zurück.

as_dataset

Höherstufen der Zwischenausgabe in ein Dataset.

Dieses Dataset ist vorhanden, nachdem der Schritt ausgeführt wurde. Bitte beachten Sie, dass die Ausgabe höhergestuft werden muss, damit die nachfolgende Eingabe als Dataset verwendet werden kann. Wenn as_dataset nicht für die Ausgabe aufgerufen wird, sondern nur für die Eingabe aufgerufen wird, handelt es sich um einen Noop, und die Eingabe wird nicht als Dataset verwendet. Das folgende Codebeispiel zeigt eine korrekte Verwendung von as_dataset:


   # as_dataset is called here and is passed to both the output and input of the next step.
   pipeline_data = PipelineData('output').as_dataset()

   step1 = PythonScriptStep(..., outputs=[pipeline_data])
   step2 = PythonScriptStep(..., inputs=[pipeline_data])
as_dataset()

Gibt zurück

Typ Beschreibung

Die Zwischenausgabe als Dataset.

as_download

Nutzen Sie pipelineData als Download.

as_download(input_name=None, path_on_compute=None, overwrite=None)

Parameter

Name Beschreibung
input_name
str

Hier können Sie einen Namen für diese Eingabe angeben.

Standardwert: None
path_on_compute
str

Der Pfad auf der Berechnung, auf die heruntergeladen werden soll.

Standardwert: None
overwrite

Hier können Sie angeben, ob vorhandene Daten überschrieben werden sollen.

Standardwert: None

Gibt zurück

Typ Beschreibung

Das InputPortBinding mit dieser PipelineData als Quelle.

as_input

Erstellen Sie ein InputPortBinding, und geben Sie einen Eingabenamen an (verwenden Sie jedoch den Standardmodus).

as_input(input_name)

Parameter

Name Beschreibung
input_name
Erforderlich
str

Hier können Sie einen Namen für diese Eingabe angeben.

Gibt zurück

Typ Beschreibung

Das InputPortBinding mit dieser PipelineData als Quelle.

as_mount

Verwenden Sie pipelineData als Bereitstellung.

as_mount(input_name=None)

Parameter

Name Beschreibung
input_name
str

Hier können Sie einen Namen für diese Eingabe angeben.

Standardwert: None

Gibt zurück

Typ Beschreibung

Das InputPortBinding mit dieser PipelineData als Quelle.

create_input_binding

Erstellen Sie eine Eingabebindung.

create_input_binding(input_name=None, mode=None, path_on_compute=None, overwrite=None)

Parameter

Name Beschreibung
input_name
str

Der Name der Eingabe.

Standardwert: None
mode
str

Der Modus für den Zugriff auf pipelineData ("Mount" oder "Download").

Standardwert: None
path_on_compute
str

Für den Modus "Download" befindet sich der Pfad auf der Berechnung der Daten.

Standardwert: None
overwrite

Für den "Download"-Modus, ob vorhandene Daten überschrieben werden sollen.

Standardwert: None

Gibt zurück

Typ Beschreibung

Das InputPortBinding mit dieser PipelineData als Quelle.

get_env_variable_name

Gibt den Namen der Umgebungsvariablen für diese PipelineData zurück.

get_env_variable_name()

Gibt zurück

Typ Beschreibung
str

Der Name der Umgebungsvariable.

Attribute

data_type

Art der Daten, die erstellt werden.

Gibt zurück

Typ Beschreibung
str

Der Datentypname.

datastore

Der Datenspeicher für PipelineData befindet sich auf.

Gibt zurück

Typ Beschreibung

Das Datastore-Objekt.

name

Name des PipelineData-Objekts.

Gibt zurück

Typ Beschreibung
str

Name: