Freigeben über


PipelineData Klasse

Stellt Zwischendaten in einer Azure Machine Learning-Pipeline dar.

Daten, die in der Pipeline verwendet werden, können in einem Schritt erstellt und in einem anderen Schritt genutzt werden, indem ein PipelineData-Objekt als Ausgabe eines Schritts und eine Eingabe eines oder mehrerer nachfolgender Schritte zur Verfügung gestellt wird.

Hinweis 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 verfügen über einen Ausgabeport mit dem Namen output_folder in einem Pipelineschritt. Sie möchten einige Daten in den 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 verwendet die zugrundeliegende DataReference, was nicht mehr der empfohlene Ansatz für den Datenzugriff und die Datenübermittlung ist. Verwenden Sie stattdessen OutputFileDatasetConfig. Ein Beispiel finden Sie hier: Pipeline mit OutputFileDatasetConfig.

Initialisieren Sie PipelineData.

Vererbung
builtins.object
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, der nur Buchstaben, Ziffern und Unterstriche enthalten darf.

PipelineData-Namen werden verwendet, um die Ausgaben eines Schritts zu identifizieren. Nachdem eine Pipelineausführung vollständig 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

Das Datastore-Objekt, in dem sich das PipelineData-Objekt befinden wird. Wenn nichts angegeben wird, wird der Standard-Datenspeicher verwendet.

Standardwert: None
output_name
str

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

Standardwert: None
output_mode
str

Gibt an, ob der Erstellungsschritt 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

Optional. Der Datentyp kann verwendet werden, um den erwarteten Typ der Ausgabe festzulegen und zu beschreiben, wie die Daten von Verarbeitungsschritten verwendet werden sollen. Es kann eine beliebige benutzerdefinierte Zeichenfolge sein.

Standardwert: None
is_directory

Gibt an, ob die Daten ein Verzeichnis oder eine einzelne Datei sind. Dieser Parameter wird nur verwendet, um einen vom Azure ML-Back-End genutzten Datentyp zu bestimmen, wenn der data_type-Parameter nicht bereitgestellt wurde. Die Standardeinstellung lautet „false“.

Standardwert: None
pipeline_output_name

Wenn angegeben, ist diese Ausgabe mit PipelineRun.get_pipeline_output() verfügbar. Pipelineausgabenamen müssen in der Pipeline eindeutig sein.

Standardwert: None
training_output

Definiert die Ausgabe für das Trainingsergebnis. Dieser Parameter ist nur für bestimmte Trainings erforderlich, die zu verschiedenen Arten von Ausgaben führen, etwa „Metrik“ und „Modell“. AutoMLStep ergibt beispielsweise Metriken und das Modell. Sie können auch bestimmte Trainingsiterationen oder Metriken definieren, mit denen Sie das beste Modell erhalten. Für HyperDriveStep können Sie auch die spezifischen Modelldateien definieren, die in der Ausgabe enthalten sein sollen.

Standardwert: None
name
Erforderlich
str

Der Name des PipelineData-Objekts, der nur Buchstaben, Ziffern und Unterstriche enthalten darf.

PipelineData-Namen werden verwendet, um die Ausgaben eines Schritts zu identifizieren. Nachdem eine Pipelineausführung vollständig 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

Das Datastore-Objekt, in dem sich das PipelineData-Objekt befinden wird. Wenn nichts angegeben wird, wird der Standard-Datenspeicher verwendet.

output_name
Erforderlich
str

Der Name der Ausgabe, wenn der Name „None“ verwendet wird. die nur Buchstaben, Ziffern und Unterstriche enthalten darf.

output_mode
Erforderlich
str

Gibt an, ob der Erstellungsschritt 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

Optional. Der Datentyp kann verwendet werden, um den erwarteten Typ der Ausgabe festzulegen und zu beschreiben, wie die Daten von Verarbeitungsschritten verwendet werden sollen. Es kann eine beliebige benutzerdefinierte Zeichenfolge sein.

is_directory
Erforderlich

Gibt an, ob die Daten ein Verzeichnis oder eine einzelne Datei sind. Dieser Parameter wird nur verwendet, um einen vom Azure ML-Back-End genutzten Datentyp zu bestimmen, wenn der data_type-Parameter nicht bereitgestellt wurde. Die Standardeinstellung lautet „false“.

pipeline_output_name
Erforderlich
str

Wenn angegeben, ist diese Ausgabe mit PipelineRun.get_pipeline_output() verfügbar. Pipelineausgabenamen müssen in der Pipeline eindeutig sein.

training_output
Erforderlich

Definiert die Ausgabe für das Trainingsergebnis. Dieser Parameter ist nur für bestimmte Trainings erforderlich, die zu verschiedenen Arten von Ausgaben führen, etwa „Metrik“ und „Modell“. AutoMLStep ergibt beispielsweise Metriken und das Modell. Sie können auch bestimmte Trainingsiterationen oder Metriken definieren, mit denen Sie das beste Modell erhalten. Für HyperDriveStep können Sie auch die spezifischen Modelldateien definieren, die in der Ausgabe enthalten sein 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 durch den Schritt generiert werden. Diese Datenausgaben werden dem angegebenen Datastore-Objekt hinzugefügt und können später abgerufen und angezeigt werden.

Der folgende Pipelineschritt erzeugt beispielsweise eine Ausgabe mit dem Namen "model":


   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 von ihm erzeugte Modell an den Speicherort, der dem Skript über das Modellargument bereitgestellt wird.

PipelineData-Objekte werden auch verwendet, wenn Pipelines zum Beschreiben von Schrittabhängigkeiten erstellt werden. Um anzugeben, dass ein Schritt die Ausgabe eines anderen Schritts als Eingabe erfordert, verwenden Sie ein PipelineData-Objekt im Konstruktor beider Schritte.

Der Schritt zum Trainieren der Pipeline hängt beispielsweise 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 dem er abgeschlossen wurde, wird der Trainingsschritt ausgeführt. Azure ML stellt die Ausgabe bereit, die vom Prozessschritt für den Trainieren-Schritt erzeugt wird.

Weitere Beispiele für die Verwendung von PipelineData zum Erstellen einer Pipeline finden Sie hier: 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 erzeugt und verarbeitet werden. Es werden zwei Methoden unterstützt:

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

  • Upload: Geben Sie eine Wert für output_path_on_compute an, der einem Datei- oder Verzeichnisnamen entspricht, den Ihr Skript generiert. (Umgebungsvariablen werden in diesem Fall nicht verwendet.)

Methoden

as_dataset

Stuft die Zwischenausgabe höher auf ein Dataset

Dieses Dataset ist vorhanden, nachdem der Schritt ausgeführt wurde. Beachten Sie, dass die Ausgabe zu einem Dataset höher gestuft werden muss, damit die nachfolgende Eingabe als Dataset genutzt werden kann. Wenn as_dataset nicht für die Ausgabe, sondern nur für die Eingabe aufgerufen wird, ist dies ein 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

Verarbeitet das PipelineData-Objekt als Download

as_input

Erstellt ein InputPortBinding-Objekt und gibt einen Eingabenamen an (verwendet dabei aber den Standardmodus)

as_mount

Verarbeitet das PipelineData-Objekt als Einbindung

create_input_binding

Erstellt eine Eingabebindung

get_env_variable_name

Gibt den Namen der Umgebungsvariablen für dieses PipelineData-Objekt zurück

as_dataset

Stuft die Zwischenausgabe höher auf ein Dataset

Dieses Dataset ist vorhanden, nachdem der Schritt ausgeführt wurde. Beachten Sie, dass die Ausgabe zu einem Dataset höher gestuft werden muss, damit die nachfolgende Eingabe als Dataset genutzt werden kann. Wenn as_dataset nicht für die Ausgabe, sondern nur für die Eingabe aufgerufen wird, ist dies ein 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

Verarbeitet das PipelineData-Objekt als Download

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

Parameter

Name Beschreibung
input_name
str

Verwenden Sie es, um einen Namen für diese Eingabe anzugeben.

Standardwert: None
path_on_compute
str

Der Pfad auf dem Compute, in den der Download erfolgen soll

Standardwert: None
overwrite

Gibt an, ob vorhandene Daten überschrieben werden sollen

Standardwert: None

Gibt zurück

Typ Beschreibung

Das InputPortBinding-Objekt mit diesem PipelineData-Objekt als Quelle

as_input

Erstellt ein InputPortBinding-Objekt und gibt einen Eingabenamen an (verwendet dabei aber den Standardmodus)

as_input(input_name)

Parameter

Name Beschreibung
input_name
Erforderlich
str

Für die Angabe eines Namens für diese Eingabe

Gibt zurück

Typ Beschreibung

Das InputPortBinding-Objekt mit diesem PipelineData-Objekt als Quelle

as_mount

Verarbeitet das PipelineData-Objekt als Einbindung

as_mount(input_name=None)

Parameter

Name Beschreibung
input_name
str

Für die Angabe eines Namens für diese Eingabe

Standardwert: None

Gibt zurück

Typ Beschreibung

Das InputPortBinding-Objekt mit diesem PipelineData-Objekt als Quelle

create_input_binding

Erstellt 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 Downloadmodus befindet sich der Pfad auf dem Compute, in dem sich die Daten befinden.

Standardwert: None
overwrite

Gibt für den Modus Download an, ob vorhandene Daten überschrieben werden.

Standardwert: None

Gibt zurück

Typ Beschreibung

Das InputPortBinding-Objekt mit diesem PipelineData-Objekt als Quelle

get_env_variable_name

Gibt den Namen der Umgebungsvariablen für dieses PipelineData-Objekt zurück

get_env_variable_name()

Gibt zurück

Typ Beschreibung
str

Der Umgebungsvariablenname.

Attribute

data_type

Der Typ der Daten, die erstellt werden

Gibt zurück

Typ Beschreibung
str

Der Name des Datentyps

datastore

Das Datastore-Objekt, in dem sich die Pipelinedaten (PipelineData) befinden werden.

Gibt zurück

Typ Beschreibung

Das Datastore-Objekt

name

Name des PipelineData-Objekts

Gibt zurück

Typ Beschreibung
str

Name.