PipelineData Classe

Rappresenta i dati intermedi in una pipeline di Azure Machine Learning.

I dati usati nella pipeline possono essere generati da un passaggio e utilizzati in un altro passaggio fornendo un oggetto PipelineData come output di un passaggio e un input di uno o più passaggi successivi.

Si noti che se si usano i dati della pipeline, assicurarsi che la directory usata esista.

Un esempio python per assicurarsi che la directory esista, si supponga di avere una porta di output denominata output_folder in un unico passaggio della pipeline, per scrivere alcuni dati nel percorso relativo in questa cartella.


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

PipelineData usa DataReference sottostante, che non è più l'approccio consigliato per l'accesso e il recapito dei dati, usare invece OutputFileDatasetConfig . È possibile trovare l'esempio seguente: Pipeline con OutputFileDatasetConfig.

Inizializzare PipelineData.

Ereditarietà
builtins.object
PipelineData

Costruttore

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)

Parametri

name
str
Necessario

Nome dell'oggetto PipelineData, che può contenere solo lettere, cifre e caratteri di sottolineatura.

I nomi pipelineData vengono usati per identificare gli output di un passaggio. Al termine dell'esecuzione di una pipeline, è possibile usare il nome del passaggio con un nome di output per accedere a un output specifico. I nomi devono essere univoci all'interno di un singolo passaggio in una pipeline.

datastore
AbstractAzureStorageDatastore oppure AzureDataLakeDatastore
valore predefinito: None

L'archivio dati in cui risiederà PipelineData. Se non specificato, viene usato l'archivio dati predefinito.

output_name
str
valore predefinito: None

Nome dell'output, se viene utilizzato Nessun nome. Può contenere solo lettere, cifre e caratteri di sottolineatura.

output_mode
str
valore predefinito: mount

Specifica se il passaggio di produzione userà il metodo "upload" o "mount" per accedere ai dati.

output_path_on_compute
str
valore predefinito: None

Per output_mode = "upload", questo parametro rappresenta il percorso in cui il modulo scrive l'output.

output_overwrite
bool
valore predefinito: None

Per output_mode = "upload", questo parametro specifica se sovrascrivere i dati esistenti.

data_type
str
valore predefinito: None

Facoltativa. Il tipo di dati può essere usato per specificare il tipo previsto dell'output e per illustrare in dettaglio l'utilizzo dei passaggi da eseguire. Può essere qualsiasi stringa definita dall'utente.

is_directory
bool
valore predefinito: None

Specifica se i dati sono una directory o un singolo file. Viene usato solo per determinare un tipo di dati usato dal back-end di Azure ML quando il data_type parametro non viene fornito. Il valore predefinito è False.

pipeline_output_name
valore predefinito: None

Se specificato, questo output sarà disponibile tramite PipelineRun.get_pipeline_output(). I nomi di output della pipeline devono essere univoci nella pipeline.

training_output
TrainingOutput
valore predefinito: None

Definisce l'output per il risultato del training. Questa operazione è necessaria solo per training specifici che generano diversi tipi di output, ad esempio metriche e modello. Ad esempio, AutoMLStep restituisce metriche e modelli. È anche possibile definire specifiche iterazioni di training o metriche usate per ottenere un modello ottimale. Per HyperDriveStep, è anche possibile definire i file di modello specifici da includere nell'output.

name
str
Necessario

Nome dell'oggetto PipelineData, che può contenere solo lettere, cifre e caratteri di sottolineatura.

I nomi pipelineData vengono usati per identificare gli output di un passaggio. Al termine dell'esecuzione di una pipeline, è possibile usare il nome del passaggio con un nome di output per accedere a un output specifico. I nomi devono essere univoci all'interno di un singolo passaggio in una pipeline.

datastore
AbstractAzureStorageDatastore oppure AzureDataLakeDatastore
Necessario

L'archivio dati in cui risiederà PipelineData. Se non specificato, viene usato l'archivio dati predefinito.

output_name
str
Necessario

Nome dell'output, se viene utilizzato Nessun nome. che può contenere solo lettere, cifre e caratteri di sottolineatura.

output_mode
str
Necessario

Specifica se il passaggio di produzione userà il metodo "upload" o "mount" per accedere ai dati.

output_path_on_compute
str
Necessario

Per output_mode = "upload", questo parametro rappresenta il percorso in cui il modulo scrive l'output.

output_overwrite
bool
Necessario

Per output_mode = "upload", questo parametro specifica se sovrascrivere i dati esistenti.

data_type
str
Necessario

Facoltativa. Il tipo di dati può essere usato per specificare il tipo previsto dell'output e per illustrare in dettaglio l'utilizzo dei passaggi da eseguire. Può essere qualsiasi stringa definita dall'utente.

is_directory
bool
Necessario

Specifica se i dati sono una directory o un singolo file. Viene usato solo per determinare un tipo di dati usato dal back-end di Azure ML quando il data_type parametro non viene fornito. Il valore predefinito è False.

pipeline_output_name
str
Necessario

Se specificato, questo output sarà disponibile tramite PipelineRun.get_pipeline_output(). I nomi di output della pipeline devono essere univoci nella pipeline.

training_output
TrainingOutput
Necessario

Definisce l'output per il risultato del training. Questa operazione è necessaria solo per training specifici che generano diversi tipi di output, ad esempio metriche e modello. Ad esempio, AutoMLStep restituisce metriche e modelli. È anche possibile definire specifiche iterazioni di training o metriche usate per ottenere un modello ottimale. Per HyperDriveStep, è anche possibile definire i file di modello specifici da includere nell'output.

Commenti

PipelineData rappresenta l'output dei dati che verrà generato quando viene eseguito. Usare PipelineData durante la creazione di passaggi per descrivere i file o le directory che verranno generati dal passaggio. Questi output di dati verranno aggiunti all'archivio dati specificato e possono essere recuperati e visualizzati in un secondo momento.

Ad esempio, il passaggio della pipeline seguente genera un output denominato "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 questo caso, lo script train.py scriverà il modello che produce nel percorso fornito allo script tramite l'argomento –model.

Gli oggetti PipelineData vengono usati anche per la creazione di pipeline per descrivere le dipendenze dei passaggi. Per specificare che un passaggio richiede l'output di un altro passaggio come input, usare un oggetto PipelineData nel costruttore di entrambi i passaggi.

Ad esempio, il passaggio di training della pipeline dipende dall'output process_step_output del passaggio del processo della pipeline:


   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])

Verrà creata una pipeline con due passaggi. Il passaggio del processo verrà eseguito per primo, quindi dopo il completamento, verrà eseguito il passaggio di training. Azure ML fornirà l'output prodotto dal passaggio del processo al passaggio di training.

Per altri esempi sull'uso di PipelineData per costruire una pipeline, vedere questa pagina: https://aka.ms/pl-data-dep

Per i tipi di calcolo supportati, PipelineData può essere usato anche per specificare la modalità di produzione e utilizzo dei dati da parte dell'esecuzione. Esistono due metodi supportati:

  • Montaggio (impostazione predefinita): i dati di input o output vengono montati nell'archiviazione locale nel nodo di calcolo e viene impostata una variabile di ambiente che punta al percorso di questi dati ($AZUREML_DATAREFERENCE_name). Per praticità, è possibile passare l'oggetto PipelineData in come uno degli argomenti allo script, ad esempio usando il arguments parametro di PythonScriptStepe l'oggetto verrà risolto nel percorso dei dati. Per gli output, lo script di calcolo deve creare un file o una directory in questo percorso di output. Per visualizzare il valore della variabile di ambiente usata quando si passa l'oggetto Pipeline come argomento, usare il get_env_variable_name metodo .

  • Carica: specificare un output_path_on_compute valore corrispondente a un file o a un nome di directory che verrà generato dallo script. Le variabili di ambiente non vengono usate in questo caso.

Metodi

as_dataset

Alzare di livello l'output intermedio in un set di dati.

Questo set di dati sarà presente dopo l'esecuzione del passaggio. Si noti che l'output deve essere promosso come set di dati affinché l'input successivo venga utilizzato come set di dati. Se as_dataset non viene chiamato nell'output, ma viene chiamato solo sull'input, sarà un noop e l'input non verrà utilizzato come set di dati. L'esempio di codice seguente mostra un utilizzo corretto di 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

Utilizzare PipelineData come download.

as_input

Creare un inputPortBinding e specificare un nome di input (ma usare la modalità predefinita).

as_mount

Utilizzare PipelineData come montaggio.

create_input_binding

Creare l'associazione di input.

get_env_variable_name

Restituisce il nome della variabile di ambiente per questo oggetto PipelineData.

as_dataset

Alzare di livello l'output intermedio in un set di dati.

Questo set di dati sarà presente dopo l'esecuzione del passaggio. Si noti che l'output deve essere promosso come set di dati affinché l'input successivo venga utilizzato come set di dati. Se as_dataset non viene chiamato nell'output, ma viene chiamato solo sull'input, sarà un noop e l'input non verrà utilizzato come set di dati. L'esempio di codice seguente mostra un utilizzo corretto di 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()

Restituisce

Output intermedio come set di dati.

Tipo restituito

as_download

Utilizzare PipelineData come download.

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

Parametri

input_name
str
valore predefinito: None

Usare per specificare un nome per questo input.

path_on_compute
str
valore predefinito: None

Percorso nel calcolo in cui eseguire il download.

overwrite
bool
valore predefinito: None

Utilizzare per indicare se sovrascrivere i dati esistenti.

Restituisce

InputPortBinding con questo oggetto PipelineData come origine.

Tipo restituito

as_input

Creare un inputPortBinding e specificare un nome di input (ma usare la modalità predefinita).

as_input(input_name)

Parametri

input_name
str
Necessario

Usare per specificare un nome per questo input.

Restituisce

InputPortBinding con questo oggetto PipelineData come origine.

Tipo restituito

as_mount

Utilizzare PipelineData come montaggio.

as_mount(input_name=None)

Parametri

input_name
str
valore predefinito: None

Usare per specificare un nome per questo input.

Restituisce

InputPortBinding con questo oggetto PipelineData come origine.

Tipo restituito

create_input_binding

Creare l'associazione di input.

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

Parametri

input_name
str
valore predefinito: None

Nome dell'input.

mode
str
valore predefinito: None

Modalità di accesso a PipelineData ("mount" o "download").

path_on_compute
str
valore predefinito: None

Per la modalità di download, il percorso nel calcolo dei dati risiederà.

overwrite
bool
valore predefinito: None

Per la modalità "download", se sovrascrivere i dati esistenti.

Restituisce

InputPortBinding con questo oggetto PipelineData come origine.

Tipo restituito

get_env_variable_name

Restituisce il nome della variabile di ambiente per questo oggetto PipelineData.

get_env_variable_name()

Restituisce

Il nome della variabile di ambiente.

Tipo restituito

str

Attributi

data_type

Tipo di dati che verranno prodotti.

Restituisce

Nome del tipo di dati.

Tipo restituito

str

datastore

L'archivio dati in cui risiederà PipelineData.

Restituisce

Oggetto Datastore.

Tipo restituito

name

Nome dell'oggetto PipelineData.

Restituisce

Name.

Tipo restituito

str