Partager via


PipelineData Classe

Représente des données intermédiaires dans un pipeline Azure Machine Learning.

Les données utilisées dans un pipeline peuvent être produites à une étape et consommées à une autre étape si un objet PipelineData est fourni en tant que sortie d’une étape et en tant qu’entrée d’une ou de plusieurs étapes suivantes.

Remarque : si vous utilisez les données du pipeline, assurez-vous que le répertoire utilisé existait.

Voici un exemple Python pour vous assurer que le répertoire existait, supposez que vous avez un port de sortie nommé output_folder dans une étape de pipeline, vous souhaitez écrire des données dans le chemin d’accès relatif dans ce dossier.


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

PipelineData utilise DataReference sous-jacent qui n’est plus l’approche recommandée pour l’accès aux données et leur remise. Utilisez plutôt OutputFileDatasetConfig, vous pouvez trouver un exemple ici : pipeline utilisant OutputFileDatasetConfig.

Initialisez PipelineData.

Héritage
builtins.object
PipelineData

Constructeur

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)

Paramètres

Nom Description
name
Obligatoire
str

Nom de l’objet PipelineData, qui peut contenir uniquement des lettres, des chiffres et des traits de soulignement.

Les noms PipelineData sont utilisés pour identifier les sorties d’une étape. Une fois l’exécution d’un pipeline effectuée, vous pouvez utiliser le nom de l’étape avec un nom de sortie pour accéder à une sortie particulière. Les noms doivent être uniques au sein d’une seule étape d’un pipeline.

datastore

Magasin de données dans lequel réside PipelineData. En l’absence d’indication, le magasin de données par défaut est utilisé.

Valeur par défaut: None
output_name
str

Nom de la sortie, si aucun nom n’est utilisé. Peut contenir uniquement des lettres, des chiffres et des traits de soulignement.

Valeur par défaut: None
output_mode
str

Spécifie si l’étape de production doit utiliser la méthode « upload » ou « mount » pour accéder aux données.

Valeur par défaut: mount
output_path_on_compute
str

Pour output_mode = « upload », ce paramètre représente le chemin dans lequel le module écrit la sortie.

Valeur par défaut: None
output_overwrite

Pour output_mode = « upload », ce paramètre spécifie s’il est nécessaire de remplacer les données existantes.

Valeur par défaut: None
data_type
str

facultatif. Vous pouvez utiliser le type de données pour spécifier le type attendu de la sortie et pour détailler la façon dont les étapes de consommation doivent utiliser les données. Il peut s’agir de n’importe quelle chaîne définie par l’utilisateur.

Valeur par défaut: None
is_directory

Spécifie si les données correspondent à un répertoire ou un seul fichier. Ce paramètre est utilisé uniquement pour déterminer un type de données utilisé par le serveur principal Azure ML quand le paramètre data_type n’est pas fourni. La valeur par défaut est False.

Valeur par défaut: None
pipeline_output_name

Si ce paramètre est fourni, la sortie est disponible à l’aide de PipelineRun.get_pipeline_output(). Les noms de sortie du pipeline doivent être uniques dans le pipeline.

Valeur par défaut: None
training_output

Définit la sortie du résultat de la formation. Uniquement nécessaire pour les formations spécifiques qui aboutissent à différents types de sorties, comme des métriques et un modèle. Par exemple, AutoMLStep aboutit à des métriques et un modèle. Vous pouvez également définir une itération ou une métrique de formation spécifique pour obtenir le meilleur modèle possible. Pour HyperDriveStep, vous pouvez également définir les fichiers de modèle spécifiques à inclure dans la sortie.

Valeur par défaut: None
name
Obligatoire
str

Nom de l’objet PipelineData, qui peut contenir uniquement des lettres, des chiffres et des traits de soulignement.

Les noms PipelineData sont utilisés pour identifier les sorties d’une étape. Une fois l’exécution d’un pipeline effectuée, vous pouvez utiliser le nom de l’étape avec un nom de sortie pour accéder à une sortie particulière. Les noms doivent être uniques au sein d’une seule étape d’un pipeline.

datastore
Obligatoire

Magasin de données dans lequel réside PipelineData. En l’absence d’indication, le magasin de données par défaut est utilisé.

output_name
Obligatoire
str

Nom de la sortie, si aucun nom n’est utilisé. qui ne peut contenir que des lettres, des chiffres et des traits de soulignement.

output_mode
Obligatoire
str

Spécifie si l’étape de production doit utiliser la méthode « upload » ou « mount » pour accéder aux données.

output_path_on_compute
Obligatoire
str

Pour output_mode = « upload », ce paramètre représente le chemin dans lequel le module écrit la sortie.

output_overwrite
Obligatoire

Pour output_mode = « upload », ce paramètre spécifie s’il est nécessaire de remplacer les données existantes.

data_type
Obligatoire
str

facultatif. Vous pouvez utiliser le type de données pour spécifier le type attendu de la sortie et pour détailler la façon dont les étapes de consommation doivent utiliser les données. Il peut s’agir de n’importe quelle chaîne définie par l’utilisateur.

is_directory
Obligatoire

Spécifie si les données correspondent à un répertoire ou un seul fichier. Ce paramètre est utilisé uniquement pour déterminer un type de données utilisé par le serveur principal Azure ML quand le paramètre data_type n’est pas fourni. La valeur par défaut est False.

pipeline_output_name
Obligatoire
str

Si ce paramètre est fourni, la sortie est disponible à l’aide de PipelineRun.get_pipeline_output(). Les noms de sortie du pipeline doivent être uniques dans le pipeline.

training_output
Obligatoire

Définit la sortie du résultat de la formation. Uniquement nécessaire pour les formations spécifiques qui aboutissent à différents types de sorties, comme des métriques et un modèle. Par exemple, AutoMLStep aboutit à des métriques et un modèle. Vous pouvez également définir une itération ou une métrique de formation spécifique pour obtenir le meilleur modèle possible. Pour HyperDriveStep, vous pouvez également définir les fichiers de modèle spécifiques à inclure dans la sortie.

Remarques

PipelineData représente la sortie des données qu’une étape va produire au moment de son exécution. Utilisez PipelineData au moment de créer les étapes permettant de décrire les fichiers ou répertoires qui seront générés par l’étape. Ces sorties de données vont être ajoutées au magasin de données spécifié. Elles pourront être récupérées et visualisées plus tard.

Par exemple, l’étape de pipeline suivante produit une sortie nommée « 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)

Dans le cas présent, le script train.py écrit le modèle qu’il produit à l’emplacement fourni au script via l’argument –model.

Les objets PipelineData sont également utilisés au moment de la construction des pipelines pour décrire les dépendances d’étape. Pour spécifier qu’une étape nécessite la sortie d’une autre étape en tant qu’entrée, utilisez un objet PipelineData dans le constructeur des deux étapes.

Par exemple, l’étape de formation du pipeline dépend de la sortie process_step_output de l’étape de traitement du 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])

Cela permet de créer un pipeline en deux étapes. L’étape de traitement est exécutée en premier. Une fois qu’elle a été effectuée, l’étape de formation est exécutée. Azure Machine Learning fournit la sortie produite par l’étape de traitement à l’étape de formation.

Consultez cette page afin d’accéder à d’autres exemples d’utilisation de PipelineData pour construire un pipeline : https://aka.ms/pl-data-dep

Pour les types de calcul pris en charge, PipelineData peut également être utilisé afin de spécifier la façon dont les données doivent être produites et consommées au moment de l’exécution. Il existe deux méthodes prises en charge :

  • Mount (par défaut) : les données d’entrée ou de sortie sont montées sur le stockage local dans le nœud de calcul. Une variable d’environnement est définie et pointe vers le chemin de ces données ($AZUREML_DATAREFERENCE_name). Pour des raisons pratiques, vous pouvez passer l’objet PipelineData en tant que l’un des arguments de votre script, par exemple à l’aide du paramètre arguments de PythonScriptStep. Ainsi, l’objet est résolu en chemin des données. Pour les sorties, votre script de calcul doit créer un fichier ou un répertoire dans ce chemin de sortie. Pour voir la valeur de la variable d’environnement utilisée quand vous passez l’objet Pipeline en tant qu’argument, utilisez la méthode get_env_variable_name.

  • Upload : spécifiez un output_path_on_compute correspondant à un nom de fichier ou de répertoire que votre script va générer. (Les variables d’environnement ne sont pas utilisées dans ce cas.)

Méthodes

as_dataset

Permet de promouvoir la sortie intermédiaire en jeu de données.

Ce jeu de données existe une fois l’étape exécutée. Notez que la sortie doit être promue au rang de jeu de données afin que l’entrée suivante soit utilisée comme jeu de données. Si as_dataset n’est pas appelé sur la sortie, mais uniquement appelé sur l’entrée, il s’agit d’une opération NOOP et l’entrée n’est pas utilisée en tant que jeu de données. L’exemple de code ci-dessous illustre une utilisation correcte 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

Permet de consommer PipelineData en tant que téléchargement.

as_input

Permet de créer un InputPortBinding et de spécifier un nom d’entrée (mais utilise le mode par défaut).

as_mount

Permet de consommer PipelineData en tant que montage.

create_input_binding

Permet de créer une liaison d’entrée.

get_env_variable_name

Permet de retourner le nom de la variable d’environnement pour ce PipelineData.

as_dataset

Permet de promouvoir la sortie intermédiaire en jeu de données.

Ce jeu de données existe une fois l’étape exécutée. Notez que la sortie doit être promue au rang de jeu de données afin que l’entrée suivante soit utilisée comme jeu de données. Si as_dataset n’est pas appelé sur la sortie, mais uniquement appelé sur l’entrée, il s’agit d’une opération NOOP et l’entrée n’est pas utilisée en tant que jeu de données. L’exemple de code ci-dessous illustre une utilisation correcte 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()

Retours

Type Description

Sortie intermédiaire en tant que jeu de données.

as_download

Permet de consommer PipelineData en tant que téléchargement.

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

Paramètres

Nom Description
input_name
str

Permet de spécifier un nom pour cette entrée.

Valeur par défaut: None
path_on_compute
str

Chemin de la cible de calcul où effectuer le téléchargement.

Valeur par défaut: None
overwrite

Permet d’indiquer s’il est nécessaire de remplacer les données existantes.

Valeur par défaut: None

Retours

Type Description

InputPortBinding avec ce PipelineData en tant que source.

as_input

Permet de créer un InputPortBinding et de spécifier un nom d’entrée (mais utilise le mode par défaut).

as_input(input_name)

Paramètres

Nom Description
input_name
Obligatoire
str

Permet de spécifier un nom pour cette entrée.

Retours

Type Description

InputPortBinding avec ce PipelineData en tant que source.

as_mount

Permet de consommer PipelineData en tant que montage.

as_mount(input_name=None)

Paramètres

Nom Description
input_name
str

Permet de spécifier un nom pour cette entrée.

Valeur par défaut: None

Retours

Type Description

InputPortBinding avec ce PipelineData en tant que source.

create_input_binding

Permet de créer une liaison d’entrée.

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

Paramètres

Nom Description
input_name
str

Nom de l'entrée.

Valeur par défaut: None
mode
str

Mode d’accès à PipelineData (« mount » ou « download »).

Valeur par défaut: None
path_on_compute
str

Pour le mode « download », chemin de la cible de calcul où les données vont résider.

Valeur par défaut: None
overwrite

Pour le mode « download », indique s’il est nécessaire de remplacer les données existantes.

Valeur par défaut: None

Retours

Type Description

InputPortBinding avec ce PipelineData en tant que source.

get_env_variable_name

Permet de retourner le nom de la variable d’environnement pour ce PipelineData.

get_env_variable_name()

Retours

Type Description
str

Nom de la variable d'environnement.

Attributs

data_type

Type des données produites.

Retours

Type Description
str

Nom du type de données.

datastore

Magasin de données dans lequel réside PipelineData.

Retours

Type Description

Objet Datastore.

name

Nom de l’objet PipelineData.

Retours

Type Description
str

Nom.