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.objectPipelineData
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
|
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
|
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
|
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
|
Para Valor predeterminado: None
|
output_overwrite
|
Para Valor predeterminado: None
|
data_type
|
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 Valor predeterminado: None
|
pipeline_output_name
|
Si se proporciona, esta salida estará disponible mediante 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
|
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
|
Nombre de la salida, si se usa el nombre None. que solo puede contener letras, dígitos y caracteres de subrayado. |
output_mode
Requerido
|
Especifica si el paso de producción usará el método "upload" o "mount" para acceder a los datos. |
output_path_on_compute
Requerido
|
Para |
output_overwrite
Requerido
|
Para |
data_type
Requerido
|
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 |
pipeline_output_name
Requerido
|
Si se proporciona, esta salida estará disponible mediante |
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_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
|
Se usa para especificar un nombre para esta entrada. Valor predeterminado: None
|
path_on_compute
|
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
|
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
|
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
|
Nombre de la entrada. Valor predeterminado: None
|
mode
|
Modo para acceder a PipelineData ("mount" o "download"). Valor predeterminado: None
|
path_on_compute
|
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 |
---|---|
Nombre de la variable de entorno. |
Atributos
data_type
datastore
Almacén de datos en el que residirá PipelineData.
Devoluciones
Tipo | Description |
---|---|
El objeto del almacén de datos. |