Construire des pipelines de déploiement pour l’apprentissage automatique
'Building ML deployment pipelines'
Exploiter Kedro pour construire des pipelines d’apprentissage automatique prêts pour la production

Contexte – Les carnets ne sont pas “déployables”
Les premières rencontres de nombreux scientifiques des données avec la programmation se font à travers des interfaces utilisateur de type carnet. Les carnets sont indispensables pour l’exploration – un aspect critique de notre flux de travail. Cependant, ils ne sont pas conçus pour être prêts pour la production. C’est un problème clé que j’ai observé chez de nombreux clients, certains d’entre eux se renseignant sur les moyens de mettre en production leurs carnets. Au lieu de mettre en production vos carnets, la solution optimale pour être prêt pour la production est de créer un code modulaire, maintenable et reproductible.
Dans cet article, je présente un exemple de pipeline ML modulaire pour former un modèle permettant de classifier les transactions frauduleuses par carte de crédit. À la fin de cet article, j’espère que vous pourrez :
- Apprécier et comprendre les pipelines ML modulaires.
- Être inspiré pour en construire un vous-même.
Si vous souhaitez tirer les avantages du déploiement de vos modèles d’apprentissage automatique pour un maximum d’effet, écrire un code modulaire est une étape importante à prendre.
Tout d’abord, une brève définition du code modulaire. Le code modulaire est un paradigme de conception logicielle qui met l’accent sur la séparation d’un programme en modules indépendants et interchangeables. Nous devrions chercher à atteindre cet état avec nos pipelines d’apprentissage automatique.
- Deux techniques avancées de SQL qui peuvent considérablement améliorer vos requêtes
- Comment devenir un scientifique des données sans formation technique conseils et stratégies
- L’Assistant Ultime de Visualisation
Petit détour – Le projet, les données et l’approche
Le projet d’apprentissage automatique provient de Kaggle. L’ensemble de données comprend 284 807 transactions anonymisées par carte de crédit, dont 492 sont frauduleuses. La tâche consiste à construire un classificateur pour détecter les transactions frauduleuses.
Les données de ce projet sont autorisées à des fins commerciales, y compris une utilisation commerciale, sous la licence Open Data Commons.
J’ai utilisé une approche d’apprentissage profond en utilisant Ludwig, un framework open source pour l’apprentissage profond déclaratif. Je n’entrerai pas dans les détails de Ludwig ici, cependant, j’ai déjà écrit un article sur le framework.
Le réseau de neurones profonds Ludwig est configuré avec un fichier .yaml. Pour ceux qui sont curieux, vous pouvez le trouver dans le référentiel GitHub du modèle.
Construction de pipelines modulaires avec Kedro
La construction de pipelines d’apprentissage automatique modulaires a été facilitée grâce à des outils open source, mon préféré étant Kedro. Non seulement parce que j’ai vu cela utilisé avec succès dans l’industrie, mais aussi parce que cela m’a aidé à développer mes compétences en ingénierie logicielle.
Kedro est un framework open source (sous licence Apache 2.0) pour créer du code de science des données reproductible, maintenable et modulaire. Je l’ai découvert lorsque je développais la stratégie d’IA pour une banque, en réfléchissant aux outils que mon équipe pourrait utiliser pour créer un code prêt pour la production.
Avis de non-responsabilité : Je n’ai aucun lien avec Kedro ou McKinsey’s QuantumBlack, les créateurs de cet outil open source.
Le pipeline de formation du modèle

Kedro vous permet de visualiser facilement vos pipelines, une fonctionnalité fantastique qui peut aider à clarifier votre code. Le pipeline est standard pour l’apprentissage automatique, donc je ne toucherai que brièvement chaque aspect.
- Importer les données : Importer les données de transactions par carte de crédit à partir d’une source externe.
- Diviser les données : Utiliser une division aléatoire pour diviser les données en ensembles d’entraînement et de réserve.
- Exécuter l’expérience : Utilise le framework Ludwig pour former un réseau de neurones profonds sur l’ensemble de données d’entraînement. L’API d’expérimentation de Ludwig sauve facilement les artefacts du modèle pour chaque exécution d’expérience.
- Exécuter les prédictions : Utilise le modèle entraîné à l’étape précédente pour exécuter des prédictions sur l’ensemble de données de réserve.
- Diagnostics du modèle : Produit deux graphiques de diagnostic. Premièrement, le suivi de la perte de cross-entropy pour chaque époque. Deuxièmement, la courbe ROC mesurant les performances du modèle sur l’ensemble de données de réserve.


Composants principaux du pipeline
Maintenant que nous avons établi une vue d’ensemble, entrons dans certains des composants principaux de ce pipeline.
Structure du projet
C:.├───conf│ ├───base│ │ └───parameters│ └───local├───data│ ├───01_raw│ ├───02_intermediate│ ├───03_primary│ ├───04_feature│ ├───05_model_input│ ├───06_models│ │ ├───experiment_run│ │ │ └───model│ │ │ ├───logs│ │ │ │ ├───test│ │ │ │ ├───training│ │ │ │ └───validation│ │ │ └───training_checkpoints│ │ └───experiment_run_0│ │ └───model│ │ ├───logs│ │ │ ├───test│ │ │ ├───training│ │ │ └───validation│ │ └───training_checkpoints│ ├───07_model_output│ └───08_reporting├───docs│ └───source│ └───src ├───fraud_detection_model │ ├───pipelines │ ├───train_model └───tests └───pipelines
Kedro fournit une structure de répertoire modélisée qui est établie lorsque vous initiez un projet. À partir de cette base, vous pouvez ajouter de manière programmée plus de pipelines à votre structure de répertoire. Cette structure standardisée garantit que chaque projet d’apprentissage automatique est identique et facile à documenter, facilitant ainsi la maintenance.
Gestion des données
Les données jouent un rôle crucial en apprentissage automatique. La capacité à suivre vos données devient encore plus essentielle lors de l’utilisation de modèles d’apprentissage automatique dans un cadre commercial. Vous vous retrouvez souvent confronté à des audits, ou à la nécessité de produire ou de reproduire votre pipeline sur la machine de quelqu’un d’autre.
Kedro propose deux méthodes pour imposer les meilleures pratiques en matière de gestion des données. La première est une structure de répertoire conçue pour les charges de travail d’apprentissage automatique, fournissant des emplacements distincts pour les tables intermédiaires produites lors de la transformation des données et les artefacts du modèle. La deuxième méthode est le catalogue de données. Dans le cadre du flux de travail Kedro, vous devez enregistrer des ensembles de données dans un fichier de configuration .yaml, ce qui vous permet d’utiliser ces ensembles de données dans vos pipelines. Cette approche peut sembler inhabituelle au départ, mais elle vous permet, ainsi qu’à d’autres personnes travaillant sur votre pipeline, de suivre facilement les données.
Orchestration – Nodes et Pipelines
C’est vraiment là que la magie opère. Kedro vous fournit une fonctionnalité de pipeline dès le départ.
Le bloc de construction initial de votre pipeline est les nœuds. Chaque morceau de code exécutable peut être encapsulé dans un nœud, qui est simplement une fonction Python qui accepte une entrée et produit une sortie. Vous pouvez ensuite structurer un pipeline comme une série de nœuds. Les pipelines sont facilement construits en invoquant le nœud et en spécifiant les entrées et les sorties. Kedro détermine l’ordre d’exécution.
Une fois que les pipelines sont construits, ils sont enregistrés dans le fichier pipeline_registry.py fourni. La beauté de cette approche est que vous pouvez créer plusieurs pipelines. Cela est particulièrement bénéfique en apprentissage automatique, où vous pouvez avoir un pipeline de traitement des données, un pipeline d’entraînement du modèle, un pipeline d’inférence, etc.
Une fois configuré, il est assez facile de modifier les aspects de votre pipeline.
Exemple de code montrant un script nodes.py
Exemple de code montrant un script Pipeline
Configuration
Les meilleures pratiques de Kedro stipulent que toutes les configurations doivent être gérées via le fichier parameters.yml fourni. Du point de vue de l’apprentissage automatique, les hyperparamètres entrent dans cette catégorie. Cette approche facilite les expérimentations, car vous pouvez simplement substituer un fichier parameters.yml par un autre ensemble d’hyperparamètres, ce qui est également beaucoup plus facile à suivre.
J’ai également inclus les emplacements de mon modèle de réseau neuronal profond Ludwig model.yaml et de la source de données dans la configuration parameters.yml. Si le modèle ou l’emplacement des données change – par exemple, lors du passage d’une machine à un autre – il serait incroyablement simple d’ajuster ces paramètres.
Extrait de code montrant le contenu du fichier parameters.yml
Reproductibilité
Kedro inclut un fichier requirements.txt dans la structure du modèle. Cela facilite grandement le suivi de votre environnement et des versions exactes des bibliothèques. Cependant, si vous le préférez, vous pouvez utiliser d’autres méthodes de gestion de l’environnement, telles qu’un fichier environment.yml.
Établissement d’un flux de travail
Si vous développez des pipelines d’apprentissage automatique et envisagez d’utiliser Kedro, cela peut présenter une courbe d’apprentissage initialement abrupte, mais adopter un flux de travail standard simplifiera le processus. Voici mon flux de travail suggéré :
- Établissez votre environnement de travail : Je préfère utiliser Anaconda pour cette tâche. J’utilise généralement un fichier environment.yml, contenant toutes les dépendances nécessaires pour mon environnement, et j’utilise la ligne de commande Anaconda Powershell pour créer mon environnement à partir de celui-ci.
- Créez un projet Kedro : Une fois que vous avez installé Kedro – ce qui devrait normalement être déclaré dans votre fichier environment.yml – vous pouvez créer un projet Kedro via l’interface de ligne de commande Anaconda.
- Explorez dans Jupyter Notebooks : Je construis un pipeline initial dans Jupyter notebooks, un processus familier à la plupart des scientifiques des données. La seule différence est que, une fois que votre pipeline est construit, vous devez le nettoyer pour que chaque cellule puisse servir de nœud dans votre pipeline Kedro.
- Enregistrez vos données : Enregistrez les entrées et les sorties pour chaque étape de traitement des données ou d’ingestion des données dans le catalogue des données.
- Ajoutez votre pipeline : Après avoir effectué votre exploration dans les notebooks, vous voudrez créer un pipeline. Cela se fait via l’interface de ligne de commande. En exécutant cette commande, vous ajouterez un dossier supplémentaire à “pipelines”, portant le nom du pipeline que vous venez de créer. C’est dans ce dossier que vous construirez vos nœuds et vos pipelines.
- Définissez votre pipeline : C’est à ce stade que vous commencez à transférer le code de vos Jupyter notebooks dans le fichier node.py de votre dossier de pipeline, en veillant à ce que les nœuds que vous souhaitez intégrer dans un pipeline aient des entrées et des sorties. Une fois les nœuds configurés, procédez à la définition de votre pipeline dans le fichier pipeline.py.
- Enregistrez vos pipelines : Le fichier pipeline_registry.py propose un modèle pour enregistrer votre pipeline nouvellement créé.
- Exécutez votre projet : Une fois établi, vous pouvez exécuter n’importe quel pipeline via l’interface de ligne de commande et visualiser votre projet.
Les pipelines prêts pour la production s’intègrent dans un écosystème plus large d’opérations d’apprentissage automatique. Lisez mon article sur les MLOps pour une plongée plus profonde.
Construction d’opérations d’apprentissage automatique pour les entreprises
Un plan pour des MLOps efficaces pour soutenir votre stratégie d’IA
towardsdatascience.com
Conclusion
Kedro est un excellent framework pour fournir des pipelines d’apprentissage automatique prêts pour la production. Au-delà des fonctionnalités discutées dans cet article, il existe de nombreuses intégrations avec d’autres bibliothèques open-source, ainsi que des packages pour la documentation et les tests. Kedro ne résout pas tous les problèmes liés au déploiement de modèles – par exemple, la gestion des versions de modèle est probablement mieux gérée par un autre outil tel que DVC. Cependant, il aidera les scientifiques des données dans un environnement commercial à produire un code plus maintenable, modulaire et reproductible prêt pour la production. Il y a une courbe d’apprentissage relativement abrupte pour les novices complets, mais la documentation est claire et comprend des tutoriels guidés. Comme avec n’importe quel package, la meilleure façon d’apprendre est de plonger et d’expérimenter.
Lien vers le dépôt GitHub complet
Suivez-moi sur LinkedIn
Abonnez-vous à IPGirl pour obtenir plus d’informations de ma part:
Rejoignez IPGirl avec mon lien de parrainage – John Adeojo
Je partage des projets, des expériences et une expertise en science des données pour vous aider dans votre parcours. Vous pouvez vous inscrire à IPGirl via…
johnadeojo.medium.com
Si vous êtes intéressé par l’intégration de l’IA ou de la science des données dans vos opérations commerciales, nous vous invitons à planifier une consultation initiale gratuite avec nous:
Réservez en ligne | Solutions centrées sur les données
Découvrez notre expertise en aidant les entreprises à atteindre des objectifs ambitieux avec une consultation gratuite. Nos scientifiques des données et…
www.data-centric-solutions.com
We will continue to update IPGirl; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- Formation de modèles de langage avec des données synthétiques de qualité de manuel scolaire
- Agrégation de données en Python avec Pandas Analyse des données de lithologie géologique
- Est-ce que ChatGPT remplacera les Data Scientists ?
- Des chercheurs apprennent à une IA à rédiger de meilleures légendes de graphiques.
- Utilisation des GANs avec TensorFlow pour générer des images
- Qu’est-ce que la simulation en robotique ?
- Un guide pour améliorer la transformation numérique grâce au nettoyage des données