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
|
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
|
Der Name der Ausgabe, wenn kein Name verwendet wird. Darf nur Buchstaben, Ziffern und Unterstriche enthalten. Standardwert: None
|
|
output_mode
|
Gibt an, ob der Produktionsschritt die Methode "upload" oder "mount" verwendet, um auf die Daten zuzugreifen. Standardwert: mount
|
|
output_path_on_compute
|
Für Standardwert: None
|
|
output_overwrite
|
Für Standardwert: None
|
|
data_type
|
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 Standardwert: None
|
|
pipeline_output_name
|
Wenn diese Ausgabe bereitgestellt wird, wird mithilfe von 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
|
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
|
Der Name der Ausgabe, wenn kein Name verwendet wird. die nur Buchstaben, Ziffern und Unterstriche enthalten kann. |
|
output_mode
Erforderlich
|
Gibt an, ob der Produktionsschritt die Methode "upload" oder "mount" verwendet, um auf die Daten zuzugreifen. |
|
output_path_on_compute
Erforderlich
|
Für |
|
output_overwrite
Erforderlich
|
Für |
|
data_type
Erforderlich
|
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 |
|
pipeline_output_name
Erforderlich
|
Wenn diese Ausgabe bereitgestellt wird, wird mithilfe von |
|
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
argumentsParameters 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_computeentsprechenden 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_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
|
Hier können Sie einen Namen für diese Eingabe angeben. Standardwert: None
|
|
path_on_compute
|
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
|
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
|
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
|
Der Name der Eingabe. Standardwert: None
|
|
mode
|
Der Modus für den Zugriff auf pipelineData ("Mount" oder "Download"). Standardwert: None
|
|
path_on_compute
|
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 |
|---|---|
|
Der Name der Umgebungsvariable. |
Attribute
data_type
datastore
Der Datenspeicher für PipelineData befindet sich auf.
Gibt zurück
| Typ | Beschreibung |
|---|---|
|
Das Datastore-Objekt. |