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
- 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
- AbstractAzureStorageDatastore oder AzureDataLakeDatastore
Das Datastore-Objekt, in dem sich das PipelineData-Objekt befinden wird. Wenn nichts angegeben wird, wird der Standard-Datenspeicher verwendet.
- output_name
- str
Der Name der Ausgabe, wenn der Name „None“ verwendet wird. Darf nur Buchstaben, Ziffern und Unterstriche enthalten
- output_mode
- str
Gibt an, ob der Erstellungsschritt die Methode 'upload' oder 'mount' verwendet, um auf die Daten zuzugreifen.
- output_path_on_compute
- str
Für output_mode
='upload' stellt dieser Parameter den Pfad dar, in den das Modul die Ausgabe schreibt.
- output_overwrite
- bool
Für output_mode
='upload' gibt dieser Parameter an, ob vorhandene Daten überschrieben werden sollen.
- 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.
- is_directory
- bool
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
Wenn angegeben, ist diese Ausgabe mit PipelineRun.get_pipeline_output()
verfügbar. Pipelineausgabenamen müssen in der Pipeline eindeutig sein.
- training_output
- TrainingOutput
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.
- name
- 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
- AbstractAzureStorageDatastore oder AzureDataLakeDatastore
Das Datastore-Objekt, in dem sich das PipelineData-Objekt befinden wird. Wenn nichts angegeben wird, wird der Standard-Datenspeicher verwendet.
- output_name
- str
Der Name der Ausgabe, wenn der Name „None“ verwendet wird. die nur Buchstaben, Ziffern und Unterstriche enthalten darf.
- output_mode
- str
Gibt an, ob der Erstellungsschritt die Methode 'upload' oder 'mount' verwendet, um auf die Daten zuzugreifen.
- output_path_on_compute
- str
Für output_mode
='upload' stellt dieser Parameter den Pfad dar, in den das Modul die Ausgabe schreibt.
- output_overwrite
- bool
Für output_mode
='upload' gibt dieser Parameter an, ob vorhandene Daten überschrieben werden sollen.
- 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.
- is_directory
- bool
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
- str
Wenn angegeben, ist diese Ausgabe mit PipelineRun.get_pipeline_output()
verfügbar. Pipelineausgabenamen müssen in der Pipeline eindeutig sein.
- training_output
- TrainingOutput
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
Die Zwischenausgabe als Dataset.
Rückgabetyp
as_download
Verarbeitet das PipelineData-Objekt als Download
as_download(input_name=None, path_on_compute=None, overwrite=None)
Parameter
Gibt zurück
Das InputPortBinding-Objekt mit diesem PipelineData-Objekt als Quelle
Rückgabetyp
as_input
Erstellt ein InputPortBinding-Objekt und gibt einen Eingabenamen an (verwendet dabei aber den Standardmodus)
as_input(input_name)
Parameter
Gibt zurück
Das InputPortBinding-Objekt mit diesem PipelineData-Objekt als Quelle
Rückgabetyp
as_mount
Verarbeitet das PipelineData-Objekt als Einbindung
as_mount(input_name=None)
Parameter
Gibt zurück
Das InputPortBinding-Objekt mit diesem PipelineData-Objekt als Quelle
Rückgabetyp
create_input_binding
Erstellt eine Eingabebindung
create_input_binding(input_name=None, mode=None, path_on_compute=None, overwrite=None)
Parameter
- path_on_compute
- str
Für den Downloadmodus befindet sich der Pfad auf dem Compute, in dem sich die Daten befinden.
- overwrite
- bool
Gibt für den Modus Download an, ob vorhandene Daten überschrieben werden.
Gibt zurück
Das InputPortBinding-Objekt mit diesem PipelineData-Objekt als Quelle
Rückgabetyp
get_env_variable_name
Gibt den Namen der Umgebungsvariablen für dieses PipelineData-Objekt zurück
get_env_variable_name()
Gibt zurück
Der Umgebungsvariablenname.
Rückgabetyp
Attribute
data_type
datastore
Das Datastore-Objekt, in dem sich die Pipelinedaten (PipelineData) befinden werden.
Gibt zurück
Das Datastore-Objekt
Rückgabetyp
name
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für