Condividi tramite


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

Nome Descrizione
name
Necessario
str

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 di un'esecuzione della 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

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

valore predefinito: None
output_name
str

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

valore predefinito: None
output_mode
str

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

valore predefinito: mount
output_path_on_compute
str

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

valore predefinito: None
output_overwrite

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

valore predefinito: None
data_type
str

facoltativo. È possibile usare il tipo di dati 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.

valore predefinito: None
is_directory

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.

valore predefinito: None
pipeline_output_name

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

valore predefinito: None
training_output

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.

valore predefinito: None
name
Necessario
str

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 di un'esecuzione della 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
Necessario

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

output_name
Necessario
str

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

output_mode
Necessario
str

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

output_path_on_compute
Necessario
str

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

output_overwrite
Necessario

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

data_type
Necessario
str

facoltativo. È possibile usare il tipo di dati 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
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
Necessario
str

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

training_output
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 averlo completato, 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 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

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

as_mount

Utilizzare PipelineData come montaggio.

create_input_binding

Create binding 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

Tipo Descrizione

Output intermedio come set di dati.

as_download

Utilizzare PipelineData come download.

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

Parametri

Nome Descrizione
input_name
str

Usare per specificare un nome per questo input.

valore predefinito: None
path_on_compute
str

Percorso nel calcolo in cui eseguire il download.

valore predefinito: None
overwrite

Utilizzare per indicare se sovrascrivere i dati esistenti.

valore predefinito: None

Restituisce

Tipo Descrizione

InputPortBinding con questo oggetto PipelineData come origine.

as_input

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

as_input(input_name)

Parametri

Nome Descrizione
input_name
Necessario
str

Usare per specificare un nome per questo input.

Restituisce

Tipo Descrizione

InputPortBinding con questo oggetto PipelineData come origine.

as_mount

Utilizzare PipelineData come montaggio.

as_mount(input_name=None)

Parametri

Nome Descrizione
input_name
str

Usare per specificare un nome per questo input.

valore predefinito: None

Restituisce

Tipo Descrizione

InputPortBinding con questo oggetto PipelineData come origine.

create_input_binding

Create binding di input.

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

Parametri

Nome Descrizione
input_name
str

Nome dell'input.

valore predefinito: None
mode
str

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

valore predefinito: None
path_on_compute
str

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

valore predefinito: None
overwrite

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

valore predefinito: None

Restituisce

Tipo Descrizione

InputPortBinding con questo oggetto PipelineData come origine.

get_env_variable_name

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

get_env_variable_name()

Restituisce

Tipo Descrizione
str

Il nome della variabile di ambiente.

Attributi

data_type

Tipo di dati che verranno prodotti.

Restituisce

Tipo Descrizione
str

Nome del tipo di dati.

datastore

L'archivio dati in cui risiederà PipelineData.

Restituisce

Tipo Descrizione

Oggetto Datastore.

name

Nome dell'oggetto PipelineData.

Restituisce

Tipo Descrizione
str

Name.