Exécution d’un pipeline avec l’interface CLI (v2)

Effectué

Les pipelines dans Azure Machine Learning vous permettent de créer des workflows pour combiner des tâches de Machine Learning.

En fonction du travail de l’équipe de science des données, vous avez créé des composants qui consistent en scripts Python utilisés pour les tâches de Machine Learning. Pour réellement préparer les données pour la formation d’un nouveau modèle, vous souhaitez combiner les composants dans un pipeline. Le pipeline couvre toutes les tâches essentielles pour obtenir des données brutes jusqu’à un modèle formé.

Vous allez créer le pipeline à l’aide de l’interface de ligne de commande d’Azure Machine Learning (v2).

Créer un pipeline

Chaque fois que vous souhaitez exécuter un script dans Azure Machine Learning, vous pouvez soumettre une tâche à l’aide de l’interface de ligne de commande (v2).

Au lieu d’utiliser un seul script volumineux, vous divisez le script en plusieurs parties, chacune représentant une tâche dans le workflow de Machine Learning. Pour chaque script, un composant est créé. Vous pouvez combiner les composants dans un certain ordre pour créer un pipeline.

Comme pour l’exécution d’un script volumineux, vous pouvez exécuter un pipeline basé sur des composants en tant que tâche dans Azure Machine Learning. Pour spécifier ce que vous souhaitez exécuter avec votre pipeline, vous créez un fichier YAML, qui comprend les éléments suivants :

  • Éléments à exécuter : composants.
  • Comment l’exécuter : toutes les entrées ou sorties que les composants peuvent attendre.
  • Où l’exécuter : calcul nécessaire pour exécuter le code.

Notes

Vous pouvez spécifier le calcul et l’environnement dans la tâche du pipeline et du composant. Le calcul et l’environnement spécifiés dans le pipeline constitueront les valeurs par défaut. Le calcul et l’environnement spécifiés dans les détails du composant sont facultatifs et remplacent la valeur par défaut pour ce composant individuel.

Imaginez que vous utilisez des composants pour créer un pipeline qui effectue la formation d’un modèle pour prédire si un client est en cours d’évolution ou non. Pour la tâche de pipeline, le fichier YAML peut se présenter comme dans l’exemple suivant :

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
experiment_name: churn-pipeline-example

# <inputs_and_outputs>
inputs:
  pipeline_job_input: 
    dataset: azureml:customer-churn-data:1
    mode: download

outputs: 
  pipeline_job_cleaned_data:
    mode: upload
  pipeline_job_normalized_data:
    mode: upload
  pipeline_job_trained_model:
    mode: upload
# </inputs_and_outputs>

# <jobs>
compute: azureml:aml-cluster
settings:
  datastore: azureml:workspaceblobstore

jobs:
  fix-missing-job:
    type: component
    component: file:./fix-missing-data.yml
    inputs:
      input_data: ${{inputs.pipeline_job_input}}
    outputs:
      output_data: ${{outputs.pipeline_job_cleaned_data}}

  normalize-data-job:
    type: component
    component: file:./normalize-data.yml
    inputs:
      input_data: ${{jobs.fix-missing-job.outputs.output_data}}
    outputs:
      output_data: ${{outputs.pipeline_job_normalized_data}}

  train-model-job:
    type: component
    component: file:./train-decision-tree.yml
    inputs:
      training_data: ${{jobs.normalize-data-job.outputs.output_data}}
    outputs:
      model_output: ${{outputs.pipeline_job_trained_model}}
# </jobs>

Le pipeline est constitué de trois composants et donc trois étapes dans le workflow de Machine Learning :

  • Réparer les données manquantes
  • Normaliser les données
  • Effectuer la formation d’un modèle d’arbre de décision

Notes

Les scripts des composants ne sont pas inclus ici. Dans cet exercice, vous allez créer des composants et un pipeline. Les scripts et les fichiers YAML sont stockés dans le référentiel GitHub lié dans le cadre de l’exercice de ce module.

Entrées et sorties

Dans la section <inputs_and_outputs> du fichier YAML, vous pouvez trouver l’entrée pour le premier composant. Dans l’exemple, l’entrée est la première version du jeu de données inscrit à partir de l’espace de travail Azure Machine Learning nommé customer-churn-data.

Dans la section <inputs_and_outputs>, vous découvrirez également que les sorties de chaque composant seront chargées dans un magasin de données.

Dans <jobs>, vous constaterez que le magasin de données est défini pour utiliser le workspaceblobstore, où toutes les sorties seront stockées. Pour chaque entrée ou sortie, vous pouvez décider si vous souhaitez monter les données ou charger/télécharger les données vers la cible de calcul.

travaux

Lorsque vous exécutez un pipeline en tant que tâche, vous constaterez que chaque composant est exécuté en tant que tâche (enfant) du pipeline. Dans la section <jobs>, vous répertoriez les composants qui doivent être exécutés dans le cadre du pipeline.

Pour chaque tâche de composant, vous devez vous référer à la définition YAML du composant que vous souhaitez exécuter. Vous devez également spécifier les entrées et les sorties pour chaque composant individuel.

Vous pouvez faire référence à l’une des entrées et sorties du pipeline à l’aide du préfixe inputs. ou outputs.. Par exemple, le premier composant pour corriger les données manquantes (fix-missing-job) fait référence aux entrées et aux sorties du pipeline :

inputs:
      input_data: ${{inputs.pipeline_job_input}}
outputs:
      output_data: ${{outputs.pipeline_job_cleaned_data}}

Si vous souhaitez utiliser une sortie d’une tâche de composant précédente comme entrée d’une nouvelle tâche de composant, utilisez le préfixe jobs.. Par exemple, le dernier composant pour la formation du modèle (train-model-job) fait référence à la sortie du composant précédent, qui normalise les données (normalize-data-job) :

inputs:
      training_data: ${{jobs.normalize-data-job.outputs.output_data}}

Une fois que vous avez le fichier YAML de la tâche de pipeline, vous pouvez exécuter le pipeline à l’aide de la commande suivante :

az ml job create --file ./job.yml

Pour examiner la tâche de pipeline et les tâches enfants pour chacun des composants du pipeline, vous pouvez accéder au studio Azure Machine Learning.