Pipelines Azure Machine Learning
En tant que scientifique des données, vous travaillerez principalement avec Azure Machine Learning pour entraîner et gérer des modèles. Après l’expérimentation, vous devez convertir votre travail en code Python de production pour pouvoir utiliser l’automatisation avec Azure (DevOps) Pipelines ou GitHub Actions.
Expérimenter dans Azure Machine Learning
Azure Machine Learning fournit un ensemble de fonctionnalités qui vous aident à organiser votre travail. Par exemple, avec Azure Machine Learning, vous pouvez :
- Inscrire des jeux de données pour réutiliser facilement les données stockées dans un lac de données.
- Entraîner un modèle sur des instances de calcul ou des clusters distants en fonction de vos besoins.
- Suivre tous vos scripts exécutés avec des expériences pour comparer facilement votre travail.
- Inscrire des modèles entraînés et déployer un modèle pour une consommation par lots ou en temps réel.
La plupart de votre travail en tant que scientifique des données consistera à expérimenter différentes configurations pour entraîner un modèle et examiner les métriques de performances afin de décider quel modèle déployer en production.
En supposant que vous expérimentez dans un notebook Jupyter (fichiers .ipynb
), vous voudrez convertir l’expérience en code Python de production en :
- Supprimant tout le code non essentiel.
- Refactorisant le code en fonctions.
- Combinant les fonctions associées dans des scripts Python (fichiers
.py
). - Créant des tests unitaires pour chaque script Python.
- Créez un pipeline pour regrouper des scripts dans un workflow qui peut être automatisé.
Une fois que votre code est prêt pour la production, vous pouvez automatiser l’exécution de scripts avec des pipelines Azure Machine Learning.
Créer des pipelines Azure Machine Learning
Le concept d’un pipeline se retrouve à travers différents outils, fournissant souvent un moyen de regrouper des tâches dans un certain ordre. L’avantage principal d’un pipeline est que vous pouvez le planifier ou le déclencher pour l’exécuter.
Un pipeline Azure Machine Learning est créé dans l’espace de travail Azure Machine Learning. Pour créer un pipeline, vous pouvez définir les étapes avec des scripts Python.
Si vous le souhaitez, vous pouvez créer un pipeline avec des composants Azure Machine Learning. Lorsque vous créez un composant, le script est stocké avec des métadonnées telles que l’environnement nécessaire dans l’espace de travail Azure Machine Learning. Les composants peuvent être partagés et utilisés par n’importe qui dans le même espace de travail, ce qui facilite la création rapide de nouveaux pipelines, en vous appuyant sur votre travail.
Pour créer un pipeline qui peut être utilisé pour l’automatisation, il est recommandé de définir un travail de pipeline dans YAML qui peut être déclenché à l’aide d’une commande CLI (v2).
Le fichier YAML qui définit le pipeline doit spécifier les informations suivantes :
- Quoi exécuter : Étapes définies en tant que scripts ou composants Python.
- Comment l’exécuter : Toute entrée ou sortie que les étapes peuvent attendre.
- Où l’exécuter : Calcul nécessaire pour exécuter le code (généralement un cluster de calcul Azure Machine Learning).
Par exemple, un pipeline qui prend des données brutes comme entrée, les transforme et entraîne un modèle peut être défini dans un fichier pipeline-job.yml
:
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: nyc-taxi-pipeline-example
experiment_name: nyc-taxi-pipeline-example
jobs:
transform-job:
type: command
raw_data:
type: uri_folder
path: ./data
outputs:
transformed_data:
mode: rw_mount
code: src/transform
environment: azureml:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest
compute: azureml:cpu-cluster
command: >-
python transform.py
--raw_data ${{inputs.raw_data}}
--transformed_data ${{outputs.transformed_data}}
train-job:
type: command
inputs:
training_data: ${{parent.jobs.transform-job.outputs.transformed_data}}
outputs:
model_output:
mode: rw_mount
test_data:
mode: rw_mount
code: src/train
environment: azureml:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest
compute: azureml:cpu-cluster
command: >-
python train.py
--training_data ${{inputs.training_data}}
--test_data ${{outputs.test_data}}
--model_output ${{outputs.model_output}}
Pour exécuter le pipeline dans Azure Machine Learning, utilisez la commande CLI suivante :
az ml job create --file pipeline-job.yml
Une fois l’exécution du pipeline terminée, vous pouvez passer en revue le pipeline et ses étapes exécutées dans l’espace de travail Azure Machine Learning.
Lorsque vous convertissez vos charges de travail Machine Learning en scripts Python et que vous regroupez les tâches dans un pipeline, votre modèle sera prêt pour la production. La définition du pipeline dans un fichier YAML vous permet d’automatiser l’entraînement et le réentraînement en déclenchant l’exécution du pipeline avec CLI (v2). Vous pouvez exécuter une commande CLI, faisant référence au fichier YAML du pipeline, à partir d’Azure (DevOps) Pipelines ou de GitHub Actions.