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

Image de l'auteur : Généré avec Midjourney

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 :

  1. Apprécier et comprendre les pipelines ML modulaires.
  2. Ê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.

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

Image de l'auteur : Pipeline de formation du modèle de bout en bout généré avec Kedro viz

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.

  1. Importer les données : Importer les données de transactions par carte de crédit à partir d’une source externe.
  2. Diviser les données : Utiliser une division aléatoire pour diviser les données en ensembles d’entraînement et de réserve.
  3. 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.
  4. 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.
  5. 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.
Image par Auteur: Courbe de perte du processus d'entraînement du modèle
Image par Auteur: Courbe ROC de l'évaluation du modèle sur l'ensemble de données de validation

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é :

  1. É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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. Enregistrez vos pipelines : Le fichier pipeline_registry.py propose un modèle pour enregistrer votre pipeline nouvellement créé.
  8. 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!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Science des données

Utilisation des graphiques de surfaces 3D Plotly pour visualiser les surfaces géologiques.

Au sein des sciences géologiques, il est essentiel de comprendre pleinement les surfaces géologiques présentes dans l...

AI

Ne manquez pas cette occasion ! Inscrivez-vous à des cours GRATUITS avant la fin de 2023.

Complétez le dernier trimestre de l'année et améliorez vos compétences pour vous lancer dans le plan de développement...

Science des données

Géocodage pour les scientifiques de données

Cet article présente la géocodification en tant que partie intégrante d'un pipeline de science des données. Il couvre...

Science des données

10 questions les plus fréquemment posées sur les listes Python sur Stack Overflow

Stack Overflow est une mine d'or d'informations où vous pouvez trouver des milliers de questions et de réponses sur l...

Science des données

Faites compter chaque dollar de marketing avec la science des données.

L'économie d'aujourd'hui exige que nous soyons plus diligents dans les dépenses publicitaires. Heureusement, les chem...

AI

Maîtriser Monte Carlo Comment simuler votre chemin vers de meilleurs modèles d'apprentissage automatique

Monte Carlo Comment la simulation statistique alimente l'apprentissage automatique, de l'estimation de pi à l'optimi...