Compartir a través de


PipelineData Clase

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

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

Tenga en cuenta que si usa los datos de canalización, asegúrese de que el directorio usado existía.

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, quiere 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 DataReference subyacente que ya no es el enfoque recomendado para el acceso y la entrega de datos, use OutputFileDatasetConfig en su lugar, puede encontrar un ejemplo aquí: Canalización mediante OutputFileDatasetConfig.

Inicializar 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 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á 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 Ninguno. 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 usar 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 son un directorio o un único archivo. Esto solo se usa para determinar un tipo de datos que usa el back-end de Azure ML cuando no se proporciona el data_type parámetro. 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 para el resultado de 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 como resultado métricas y modelo. También puede definir una iteración o métrica de entrenamiento específica 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 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á PipelineData. Si no se especifica, se usa el almacén de datos predeterminado.

output_name
Requerido
str

Nombre de la salida, si se usa Ninguno. 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 usar los pasos de consumo deben usar los datos. Puede ser cualquier cadena definida por el usuario.

is_directory
Requerido

Especifica si los datos son un directorio o un único archivo. Esto solo se usa para determinar un tipo de datos que usa el back-end de Azure ML cuando no se proporciona el data_type parámetro. 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 para el resultado de 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 como resultado métricas y modelo. También puede definir una iteración o métrica de entrenamiento específica 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 generará un paso cuando se ejecute. Use PipelineData al crear pasos para describir los archivos o directorios que se generarán mediante el paso. Estas salidas de datos se agregarán al almacén de datos especificado y se podrán 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 de train.py escribirá el modelo que genera en la ubicación que se proporciona al script a través del argumento –model.

Los objetos PipelineData también se usan al construir canalizaciones para describir las dependencias de paso. 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 process_step_output salida del paso de proceso de 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 generada por el paso de proceso al paso de entrenamiento.

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

En el caso de los tipos de proceso admitidos, PipelineData también se puede usar para especificar cómo se generarán y consumirán los datos mediante la ejecución. Hay dos métodos admitidos:

  • Montaje (valor predeterminado): los datos de entrada o salida se montan en el almacenamiento local en el nodo de proceso 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 en como uno de los argumentos al script, por ejemplo mediante el arguments parámetro de PythonScriptStepy 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 usada al pasar el objeto Pipeline como argumento, use el get_env_variable_name método .

  • Cargar: especifique un output_path_on_compute valor correspondiente a un nombre de archivo o directorio que generará el script. (Las variables de entorno no se usan en este caso).

Métodos

as_dataset

Promueva la salida intermedia en 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 no se llama a as_dataset en la salida, sino que solo se llama a en la entrada, será un 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

Consuma PipelineData como descarga.

as_input

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

as_mount

Consuma PipelineData como montaje.

create_input_binding

Cree el enlace de entrada.

get_env_variable_name

Devuelve el nombre de la variable de entorno para este PipelineData.

as_dataset

Promueva la salida intermedia en 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 no se llama a as_dataset en la salida, sino que solo se llama a en la entrada, será un 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 un conjunto de datos.

as_download

Consuma PipelineData como descarga.

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

Parámetros

Nombre Description
input_name
str

Use para especificar un nombre para esta entrada.

Valor predeterminado: None
path_on_compute
str

Ruta de acceso del proceso al que se va a descargar.

Valor predeterminado: None
overwrite

Use para indicar si se deben sobrescribir los datos existentes.

Valor predeterminado: None

Devoluciones

Tipo Description

InputPortBinding con pipelineData como origen.

as_input

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

as_input(input_name)

Parámetros

Nombre Description
input_name
Requerido
str

Use para especificar un nombre para esta entrada.

Devoluciones

Tipo Description

InputPortBinding con pipelineData como origen.

as_mount

Consuma PipelineData como montaje.

as_mount(input_name=None)

Parámetros

Nombre Description
input_name
str

Use para especificar un nombre para esta entrada.

Valor predeterminado: None

Devoluciones

Tipo Description

InputPortBinding con pipelineData como origen.

create_input_binding

Cree el 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 ("montar" o "descargar").

Valor predeterminado: None
path_on_compute
str

Para el modo de "descarga", la ruta de acceso del proceso residirán los datos.

Valor predeterminado: None
overwrite

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

Valor predeterminado: None

Devoluciones

Tipo Description

InputPortBinding con pipelineData como origen.

get_env_variable_name

Devuelve el nombre de la variable de entorno para este PipelineData.

get_env_variable_name()

Devoluciones

Tipo Description
str

Nombre de la variable de entorno.

Atributos

data_type

Tipo de datos que se producirán.

Devoluciones

Tipo Description
str

Nombre del tipo de datos.

datastore

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

Devoluciones

Tipo Description

Objeto Almacén de datos.

name

Nombre del objeto PipelineData.

Devoluciones

Tipo Description
str

Nombre.