Compartir a través de


PipelineData Clase

Representa datos intermedios de una canalización de Azure Machine Learning.

Los datos usados en la canalización se pueden generar en un paso y consumir en otro paso proporcionando un objeto PipelineData como salida de un paso y entrada de uno o varios pasos posteriores.

Nota: Si usa los datos de canalización, debe asegurarse de que existe el directorio usado.

Un ejemplo de Python para asegurarse de que el directorio existía, supongamos que tiene un puerto de salida denominado output_folder en un paso de canalización; debe escribir algunos datos en la ruta de acceso relativa de esta carpeta.


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

PipelineData usa el elemento DataReference subyacente, que ya no es el enfoque recomendado para el acceso y la entrega de datos. Use OutputFileDatasetConfig en su lugar; puede encontrar el ejemplo aquí: Canalización mediante OutputFileDatasetConfig.

Inicializar PipelineData.

Herencia
builtins.object
PipelineData

Constructor

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)

Parámetros

Nombre Description
name
Requerido
str

Nombre del objeto PipelineData, que solo puede contener letras, dígitos y caracteres de subrayado.

Los nombres de PipelineData se usan para identificar las salidas de un paso. Una vez completada la ejecución de una canalización, puede usar el nombre del paso con un nombre de salida para acceder a una salida determinada. Los nombres deben ser únicos en un solo paso de una canalización.

datastore

Almacén de datos en el que residirá el objeto PipelineData. Si no se especifica, se usa el almacén de datos predeterminado.

Valor predeterminado: None
output_name
str

Nombre de la salida, si se usa el nombre None. Solo puede contener letras, dígitos y caracteres de subrayado.

Valor predeterminado: None
output_mode
str

Especifica si el paso de producción usará el método "upload" o "mount" para acceder a los datos.

Valor predeterminado: mount
output_path_on_compute
str

Para output_mode = "upload", este parámetro representa la ruta de acceso en la que el módulo escribe la salida.

Valor predeterminado: None
output_overwrite

Para output_mode = "upload", este parámetro especifica si se deben sobrescribir los datos existentes.

Valor predeterminado: None
data_type
str

Opcional. El tipo de datos se puede usar para especificar el tipo esperado de la salida y para detallar cómo los pasos de consumo deben usar los datos. Puede ser cualquier cadena definida por el usuario.

Valor predeterminado: None
is_directory

Especifica si los datos están en un directorio o un único archivo. Esto solo se usa para determinar un tipo de datos que utiliza el servidor de back-end de Azure ML si no se proporciona el parámetro data_type. El valor predeterminado es False.

Valor predeterminado: None
pipeline_output_name

Si se proporciona, esta salida estará disponible mediante PipelineRun.get_pipeline_output(). Los nombres de salida de canalización deben ser únicos en la canalización.

Valor predeterminado: None
training_output

Define la salida del resultado del entrenamiento. Esto solo es necesario para entrenamientos específicos que dan lugar a diferentes tipos de salidas, como métricas y modelo. Por ejemplo, AutoMLStep da lugar a métricas y modelo. También puede definir una iteración de entrenamiento específica o una métrica que se usa para obtener el mejor modelo. Para HyperDriveStep, también puede definir los archivos de modelo específicos que se incluirán en la salida.

Valor predeterminado: None
name
Requerido
str

Nombre del objeto PipelineData, que solo puede contener letras, dígitos y caracteres de subrayado.

Los nombres de PipelineData se usan para identificar las salidas de un paso. Una vez completada la ejecución de una canalización, puede usar el nombre del paso con un nombre de salida para acceder a una salida determinada. Los nombres deben ser únicos en un solo paso de una canalización.

datastore
Requerido

Almacén de datos en el que residirá el objeto PipelineData. Si no se especifica, se usa el almacén de datos predeterminado.

output_name
Requerido
str

Nombre de la salida, si se usa el nombre None. que solo puede contener letras, dígitos y caracteres de subrayado.

output_mode
Requerido
str

Especifica si el paso de producción usará el método "upload" o "mount" para acceder a los datos.

output_path_on_compute
Requerido
str

Para output_mode = "upload", este parámetro representa la ruta de acceso en la que el módulo escribe la salida.

output_overwrite
Requerido

Para output_mode = "upload", este parámetro especifica si se deben sobrescribir los datos existentes.

data_type
Requerido
str

Opcional. El tipo de datos se puede usar para especificar el tipo esperado de la salida y para detallar cómo los pasos de consumo deben usar los datos. Puede ser cualquier cadena definida por el usuario.

is_directory
Requerido

Especifica si los datos están en un directorio o un único archivo. Esto solo se usa para determinar un tipo de datos que utiliza el servidor de back-end de Azure ML si no se proporciona el parámetro data_type. El valor predeterminado es False.

pipeline_output_name
Requerido
str

Si se proporciona, esta salida estará disponible mediante PipelineRun.get_pipeline_output(). Los nombres de salida de canalización deben ser únicos en la canalización.

training_output
Requerido

Define la salida del resultado del entrenamiento. Esto solo es necesario para entrenamientos específicos que dan lugar a diferentes tipos de salidas, como métricas y modelo. Por ejemplo, AutoMLStep da lugar a métricas y modelo. También puede definir una iteración de entrenamiento específica o una métrica que se usa para obtener el mejor modelo. Para HyperDriveStep, también puede definir los archivos de modelo específicos que se incluirán en la salida.

Comentarios

PipelineData representa la salida de datos que un paso producirá cuando se ejecute. Use PipelineData al crear pasos para describir los archivos o directorios que generará el paso. Estas salidas de datos se agregarán al almacén de datos especificado y se pueden recuperar y ver más adelante.

Por ejemplo, el siguiente paso de canalización genera una salida denominada "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)

En este caso, el script train.py escribirá el modelo que genera en la ubicación que se proporciona al script mediante el argumento –model.

Los objetos PipelineData también se usan al construir canalizaciones para describir las dependencias de pasos. Para especificar que un paso requiere la salida de otro paso como entrada, use un objeto PipelineData en el constructor de ambos pasos.

Por ejemplo, el paso de entrenamiento de canalización depende de la salida process_step_output del paso de proceso de la canalización:


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

Esto creará una canalización con dos pasos. El paso de proceso se ejecutará primero y, después de que se haya completado, se ejecutará el paso de entrenamiento. Azure ML proporcionará la salida que genera el paso de proceso para el paso de entrenamiento.

Consulte esta página para obtener más ejemplos del uso de PipelineData para construir una canalización: https://aka.ms/pl-data-dep.

Para los tipos de proceso admitidos, PipelineData también se puede usar para especificar cómo se producirán y usarán los datos en la ejecución. Se admiten dos métodos:

  • "Mount" (predeterminado): los datos de entrada o salida se montan en el almacenamiento local en el nodo de ejecución y se establece una variable de entorno que apunta a la ruta de acceso de estos datos ($AZUREML_DATAREFERENCE_name). Para mayor comodidad, puede pasar el objeto PipelineData como uno de los argumentos al script, por ejemplo, mediante el parámetro arguments de PythonScriptStep, y el objeto se resolverá en la ruta de acceso a los datos. Para las salidas, el script de proceso debe crear un archivo o directorio en esta ruta de acceso de salida. Para ver el valor de la variable de entorno utilizada al pasar el objeto Pipeline como argumento, use el método get_env_variable_name.

  • "Upload": especifique un output_path_on_compute correspondiente a un nombre de archivo o directorio que generará el script. (No se usan variables de entorno en este caso).

Métodos

as_dataset

Promocione la salida intermedia a un conjunto de datos.

Este conjunto de datos existirá después de que se haya ejecutado el paso. Tenga en cuenta que la salida debe promoverse para que sea un conjunto de datos para que la entrada posterior se consuma como conjunto de datos. Si as_dataset no se llama a en la salida, sino solo en la entrada, será un valor noop y la entrada no se consumirá como un conjunto de datos. En el ejemplo de código siguiente se muestra un uso correcto de 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

Use PipelineData como descarga.

as_input

Cree un objeto InputPortBinding y especifique un nombre de entrada (pero use el modo predeterminado).

as_mount

Use PipelineData como montaje.

create_input_binding

Cree un enlace de entrada.

get_env_variable_name

Devuelva el nombre de la variable de entorno de este objeto PipelineData.

as_dataset

Promocione la salida intermedia a un conjunto de datos.

Este conjunto de datos existirá después de que se haya ejecutado el paso. Tenga en cuenta que la salida debe promoverse para que sea un conjunto de datos para que la entrada posterior se consuma como conjunto de datos. Si as_dataset no se llama a en la salida, sino solo en la entrada, será un valor noop y la entrada no se consumirá como un conjunto de datos. En el ejemplo de código siguiente se muestra un uso correcto de 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()

Devoluciones

Tipo Description

Salida intermedia como conjunto de datos.

as_download

Use PipelineData como descarga.

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

Parámetros

Nombre Description
input_name
str

Se usa para especificar un nombre para esta entrada.

Valor predeterminado: None
path_on_compute
str

Ruta de acceso del proceso en el que se descargará.

Valor predeterminado: None
overwrite

Úsela para indicar si desea sobrescribir los datos existentes.

Valor predeterminado: None

Devoluciones

Tipo Description

InputPortBinding con este objeto PipelineData como origen.

as_input

Cree un objeto InputPortBinding y especifique un nombre de entrada (pero use el modo predeterminado).

as_input(input_name)

Parámetros

Nombre Description
input_name
Requerido
str

Se usa para especificar un nombre para esta entrada.

Devoluciones

Tipo Description

InputPortBinding con este objeto PipelineData como origen.

as_mount

Use PipelineData como montaje.

as_mount(input_name=None)

Parámetros

Nombre Description
input_name
str

Se usa para especificar un nombre para esta entrada.

Valor predeterminado: None

Devoluciones

Tipo Description

InputPortBinding con este objeto PipelineData como origen.

create_input_binding

Cree un enlace de entrada.

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

Parámetros

Nombre Description
input_name
str

Nombre de la entrada.

Valor predeterminado: None
mode
str

Modo para acceder a PipelineData ("mount" o "download").

Valor predeterminado: None
path_on_compute
str

Para el modo "download", la ruta de acceso en el proceso donde residirán los datos.

Valor predeterminado: None
overwrite

Para el modo "download", si se van a sobrescribir los datos existentes.

Valor predeterminado: None

Devoluciones

Tipo Description

InputPortBinding con este objeto PipelineData como origen.

get_env_variable_name

Devuelva el nombre de la variable de entorno de este objeto PipelineData.

get_env_variable_name()

Devoluciones

Tipo Description
str

Nombre de la variable de entorno.

Atributos

data_type

Tipo de datos que se producirá.

Devoluciones

Tipo Description
str

El nombre del tipo de datos.

datastore

Almacén de datos en el que residirá PipelineData.

Devoluciones

Tipo Description

El objeto del almacén de datos.

name

Nombre del objeto PipelineData.

Devoluciones

Tipo Description
str

Name (Nombre).