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.objectPipelineData
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
|
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
|
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
|
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
|
Pour Valeur par défaut: None
|
output_overwrite
|
Pour Valeur par défaut: None
|
data_type
|
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 Valeur par défaut: None
|
pipeline_output_name
|
Si ce paramètre est fourni, la sortie est disponible à l’aide de 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
|
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
|
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
|
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
|
Pour |
output_overwrite
Obligatoire
|
Pour |
data_type
Obligatoire
|
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 |
pipeline_output_name
Obligatoire
|
Si ce paramètre est fourni, la sortie est disponible à l’aide de |
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_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
|
Permet de spécifier un nom pour cette entrée. Valeur par défaut: None
|
path_on_compute
|
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
|
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
|
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
|
Nom de l'entrée. Valeur par défaut: None
|
mode
|
Mode d’accès à PipelineData (« mount » ou « download »). Valeur par défaut: None
|
path_on_compute
|
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 |
---|---|
Nom de la variable d'environnement. |
Attributs
data_type
datastore
Magasin de données dans lequel réside PipelineData.
Retours
Type | Description |
---|---|
Objet Datastore. |