PipelineData Classe
Représente des données intermédiaires dans un pipeline Azure Machine Learning.
Les données utilisées dans le pipeline peuvent être produites par une étape et consommées dans une autre étape en fournissant un objet PipelineData en tant que sortie d’une étape et une entrée d’une ou plusieurs étapes suivantes.
Notez que si vous utilisez les données du pipeline, assurez-vous que le répertoire utilisé existait.
Exemple python pour vous assurer que le répertoire existait, supposons que vous disposiez d’un port de sortie nommé output_folder en une étape de pipeline, vous souhaitez écrire des données dans le chemin relatif de 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 la remise, utilisez OutputFileDatasetConfig à la place, vous trouverez un exemple ici : Pipeline à l’aide de OutputFileDatasetConfig.
Initialisez 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
|
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 terminé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
|
Le magasin de données sur lequel PipelineData réside. S’il n’est pas spécifié, le magasin de données par défaut est utilisé. Valeur par défaut: None
|
output_name
|
Nom de la sortie, si aucun nom 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 utilise 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
|
Optionnel. Le type de données peut être utilisé pour spécifier le type attendu de la sortie et pour détailler la façon dont les étapes consommatrices 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 sont un répertoire ou un fichier unique. Cela est utilisé uniquement pour déterminer un type de données utilisé par le back-end Azure ML lorsque le Valeur par défaut: None
|
pipeline_output_name
|
Si cette sortie est fournie, elle est disponible à l’aide Valeur par défaut: None
|
training_output
|
Définit la sortie pour le résultat d’entraînement. Cela est nécessaire uniquement pour des formations spécifiques qui entraînent différents types de sorties, tels que les métriques et le modèle. Par exemple, AutoMLStep les métriques et le modèle sont obtenus. Vous pouvez également définir une itération d’entraînement ou une métrique spécifique utilisée pour obtenir le meilleur modèle. 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 terminé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
|
Le magasin de données sur lequel PipelineData réside. S’il n’est pas spécifié, le magasin de données par défaut est utilisé. |
output_name
Obligatoire
|
Nom de la sortie, si aucun nom 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 utilise 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
|
Optionnel. Le type de données peut être utilisé pour spécifier le type attendu de la sortie et pour détailler la façon dont les étapes consommatrices 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 sont un répertoire ou un fichier unique. Cela est utilisé uniquement pour déterminer un type de données utilisé par le back-end Azure ML lorsque le |
pipeline_output_name
Obligatoire
|
Si cette sortie est fournie, elle est disponible à l’aide |
training_output
Obligatoire
|
Définit la sortie pour le résultat d’entraînement. Cela est nécessaire uniquement pour des formations spécifiques qui entraînent différents types de sorties, tels que les métriques et le modèle. Par exemple, AutoMLStep les métriques et le modèle sont obtenus. Vous pouvez également définir une itération d’entraînement ou une métrique spécifique utilisée pour obtenir le meilleur modèle. Pour HyperDriveStep, vous pouvez également définir les fichiers de modèle spécifiques à inclure dans la sortie. |
Remarques
PipelineData représente la sortie de données qu’une étape produit lors de son exécution. Utilisez PipelineData lors de la création d’étapes pour décrire les fichiers ou répertoires qui seront générés par l’étape. Ces sorties de données seront ajoutées au magasin de données spécifié et peuvent être récupérées et consultées ultérieurement.
Par exemple, l’étape de pipeline suivante génère une sortie nommée « modèle » :
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 ce cas, le script train.py écrit le modèle qu’il produit à l’emplacement fourni au script par le biais de l’argument –model.
Les objets PipelineData sont également utilisés lors de la construction de 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 train de pipeline dépend de la sortie process_step_output de l’étape de processus de 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 crée un pipeline en deux étapes. L’étape de processus sera exécutée en premier, puis une fois terminée, l’étape d’apprentissage sera exécutée. Azure ML fournit la sortie produite par l’étape de processus à l’étape d’apprentissage.
Consultez cette page pour obtenir 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é pour spécifier la façon dont les données seront produites et consommées par l’exécution. Il existe deux méthodes prises en charge :
Montage (valeur par défaut) : les données d’entrée ou de sortie sont montées sur le stockage local sur le nœud de calcul, et une variable d’environnement est définie qui pointe vers le chemin d’accès de ces données ($AZUREML_DATAREFERENCE_name). Pour plus de commodité, vous pouvez transmettre l’objet PipelineData dans l’un des arguments à votre script, par exemple en utilisant le
arguments
paramètre , PythonScriptStepet l’objet est résolu vers le chemin d’accès aux données. Pour les sorties, votre script de calcul doit créer un fichier ou un répertoire à ce chemin de sortie. Pour afficher la valeur de la variable d’environnement utilisée lorsque vous passez l’objet Pipeline en tant qu’argument, utilisez la get_env_variable_name méthode.Charger : spécifiez un
output_path_on_compute
nom de fichier ou de répertoire correspondant à votre script. (Les variables d’environnement ne sont pas utilisées dans ce cas.)
Méthodes
as_dataset |
Promouvoir la sortie intermédiaire dans un jeu de données. Ce jeu de données existe une fois l’étape exécutée. Notez que la sortie doit être promue comme un jeu de données afin que l’entrée suivante soit consommée en tant que jeu de données. Si as_dataset n’est pas appelé sur la sortie, mais uniquement sur l’entrée, il s’agit d’une noop et l’entrée ne sera pas consommée en tant que jeu de données. L’exemple de code ci-dessous montre une utilisation correcte de as_dataset :
|
as_download |
Utilisez PipelineData en tant que téléchargement. |
as_input |
Créez un InputPortBinding et spécifiez un nom d’entrée (mais utilisez le mode par défaut). |
as_mount |
Utilisez PipelineData comme montage. |
create_input_binding |
Créez une liaison d’entrée. |
get_env_variable_name |
Retourne le nom de la variable d’environnement pour ce PipelineData. |
as_dataset
Promouvoir la sortie intermédiaire dans un jeu de données.
Ce jeu de données existe une fois l’étape exécutée. Notez que la sortie doit être promue comme un jeu de données afin que l’entrée suivante soit consommée en tant que jeu de données. Si as_dataset n’est pas appelé sur la sortie, mais uniquement sur l’entrée, il s’agit d’une noop et l’entrée ne sera pas consommée en tant que jeu de données. L’exemple de code ci-dessous montre 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
Utilisez 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 d’accès sur le calcul à télécharger. Valeur par défaut: None
|
overwrite
|
Permet d’indiquer s’il faut remplacer les données existantes. Valeur par défaut: None
|
Retours
Type | Description |
---|---|
InputPortBinding avec ce PipelineData comme source. |
as_input
Créez un InputPortBinding et spécifiez un nom d’entrée (mais utilisez 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 comme source. |
as_mount
Utilisez PipelineData comme 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 comme source. |
create_input_binding
Créez 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 permettant d’accéder à PipelineData (« mount » ou « download »). Valeur par défaut: None
|
path_on_compute
|
Pour le mode « télécharger », le chemin d’accès sur le calcul des données résidera. Valeur par défaut: None
|
overwrite
|
Pour le mode « télécharger », indiquez s’il faut remplacer les données existantes. Valeur par défaut: None
|
Retours
Type | Description |
---|---|
InputPortBinding avec ce PipelineData comme source. |
get_env_variable_name
Retourne 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 sur lequel réside PipelineData.
Retours
Type | Description |
---|---|
Objet Magasin de données. |