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.objectPipelineData
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, 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
|
Der Name der Ausgabe, wenn der Name „None“ verwendet wird. Darf nur Buchstaben, Ziffern und Unterstriche enthalten Standardwert: None
|
output_mode
|
Gibt an, ob der Erstellungsschritt 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
|
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 Standardwert: None
|
pipeline_output_name
|
Wenn angegeben, ist diese Ausgabe mit 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
|
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
|
Der Name der Ausgabe, wenn der Name „None“ verwendet wird. die nur Buchstaben, Ziffern und Unterstriche enthalten darf. |
output_mode
Erforderlich
|
Gibt an, ob der Erstellungsschritt 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
|
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 |
pipeline_output_name
Erforderlich
|
Wenn angegeben, ist diese Ausgabe mit |
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_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
|
Verwenden Sie es, um einen Namen für diese Eingabe anzugeben. Standardwert: None
|
path_on_compute
|
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
|
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
|
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
|
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 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 |
---|---|
Der Umgebungsvariablenname. |
Attribute
data_type
datastore
Das Datastore-Objekt, in dem sich die Pipelinedaten (PipelineData) befinden werden.
Gibt zurück
Typ | Beschreibung |
---|---|
Das Datastore-Objekt |