Dans cet article, nous vous présenterons un outil qui illustre concrètement notre expérience de l'utilisation de Vertex AI Pipelines dans le cadre d'un projet en production.
Un tutoriel complet sur la manière de former et de déployer un modèle d'apprentissage automatique personnalisé en production à l'aide de Vertex AI Pipelines avec Kubeflow v2. Si vous ne savez pas trop par où commencer avec Vertex AI, ce tutoriel vous aidera à trouver votre chemin, car tout son contenu s'appuie sur une expérience concrète. De nombreux exemples de pipelines illustrent comment utiliser certaines fonctionnalités intéressantes de Vertex AI et de Kubeflow. Vous trouverez également un fichier Makefile qui vous aidera à exécuter des recettes importantes et vous fera gagner beaucoup de temps pour construire votre modèle et le mettre en production.
Dans le domaine du machine learning, on peut définir les pipelines comme des ensembles de tâches interconnectées qui exécutent l'intégralité ou certaines parties spécifiques du flux de travail de machine learning (par exemple : un pipeline d'entraînement).

exemple d'un pipeline d'entraînement simple

Exemple de pipeline de formation sur Vertex AI Pipelines à l'aide de Kubeflow
Lorsqu’ils sont bien conçus, les pipelines présentent l’avantage d’être reproductibles et hautement personnalisables. Ces deux caractéristiques facilitent considérablement leur expérimentation et leur déploiement en production. L’utilisation conjointe de Vertex AI Pipelines et de Kubeflow nous a permis de concevoir et d’exécuter rapidement des pipelines personnalisés dotés des propriétés susmentionnées. Les exemples de pipelines présentés dans le kit de démarrage sont très représentatifs de ce à quoi l’on peut être confronté lors du développement d’un projet d’apprentissage automatique devant être déployé en production. Nous avons également partagé quelques conseils et scripts automatisés afin que vous puissiez vous concentrer sur la prise en main de Vertex AI.
Lorsque j'ai commencé à utiliser Vertex AI Pipelines, j'étais assez submergé par toutes les possibilités offertes pour accomplir exactement la même tâche. Je ne savais pas vraiment quelles étaient les meilleures options pour construire mes pipelines. Au bout de quelques mois, nous avons trouvé notre voie et nous nous sommes forgé quelques certitudes, du moins sur l'aspect le plus important de la gestion du cycle de vie d'un projet en production avec cette technologie.
Comme indiqué précédemment, cet article a pour objectif de présenter un kit de démarrage qui illustre, à travers des méthodes pratiques, notre expérience et les enseignements que nous avons tirés de l'utilisation de Vertex AI Pipelines. Nous espérons que cela aidera les débutants à maîtriser rapidement cet outil puissant sans avoir à payer le prix fort pour s'y initier.
Dans les sections suivantes, nous présenterons les concepts et fonctionnalités les plus intéressants que nous avons découverts en utilisant Vertex AI Pipelines. Nous nous appuierons également sur un petit projet de prévision (le concours M5) pour illustrer nos propos. Nous ne nous attarderons pas sur la partie modélisation, mais nous mettrons plutôt l'accent sur les différentes étapes nécessaires à la mise en production d'un modèle.
Créez une image de base personnalisée et utilisez-la comme point de départ pour vos composants
Si vous avez déjà travaillé avec les pipelines Kubeflow, vous vous demandez peut-être quand utiliser des composants basés sur des conteneurs plutôt que des composants basés sur des fonctions. Ces deux options présentent de nombreux avantages et inconvénients, mais il existe néanmoins un juste milieu. Les composants basés sur des conteneurs sont plus adaptés aux tâches complexes comportant de nombreuses dépendances de code, contrairement aux composants basés sur des fonctions qui contiennent toutes les dépendances de code au sein d'une fonction et sont généralement plus simples. Ces derniers s'exécutent plus rapidement, car il n'est pas nécessaire de créer et de déployer une image à chaque fois que l'on modifie le code. Dans les composants basés sur des fonctions, une image Python 3.7 par défaut est utilisée pour exécuter votre fonction.
Pour exécuter de la même manière des composants complexes et simples, nous avons choisi d'utiliser une version modifiée de l'image de base par défaut. Au sein de cette image de base modifiée, nous avons installé l'ensemble de nos codes sous forme de paquet. Ensuite, nous importons ces fonctions dans des composants fonctionnels, comme on le ferait par exemple avec pandas. Cela nous permet d'exécuter des tâches complexes et simples de la même manière et de réduire le temps de création de l'image à une seule (l'image de base).
Nous organisons également nosfichiers de configurationde manière à faciliter l'adaptation des données d'entrée de vos composants et pipelines.

Utiliser une image de base modifiée comme fondement unique pour tous vos composants
La parallélisation de certaines parties de vos pipelines est aussi simple que d'écrire une boucle « for »
Lorsqu'on expérimente le machine learning, on doit généralement exécuter de nombreuses itérations d'un workflow d'apprentissage simple, que ce soit pour ajuster un hyperparamètre ou pour créer plusieurs modèles (par exemple, un modèle par catégorie de produit).
Pour optimiser ce processus, il faudrait paralléliser les différents flux de travail de formation afin de gagner du temps et d'optimiser les ressources. Avec Vertex Pipelines et Kubeflow, l'effort requis est minime de par la conception du système ; il vous suffira d'écrire une boucle « for ». Et lors de la compilation de votre pipeline, Kubeflow déterminera quelles étapes et/ou quels groupes d'étapes peuvent être exécutés en parallèle et lesquels doivent être effectués successivement.

Exemple de pipeline comportant des éléments fonctionnant en parallèle
Déploiement conditionnel pour une exploitation fluide de votre modèle d'apprentissage automatique
Grâce à kfp.dsl.condition, vous pouvez facilement déployer un modèle entraîné et le préparer en vue d'une réutilisation ultérieure à l'aide d'une logique de code. Si vous testez de nombreux paramètres et souhaitez passer en production en toute transparence sous certaines conditions, cette fonctionnalité de Kubeflow vous sera très utile. En l'associant à un excellent système de CI/CD, vous gérerez le cycle de vie de votre modèle d'apprentissage automatique sans aucun accroc.

Exemple de déploiement conditionnel
En plus de ces fonctionnalités (cette liste n'étant pas exhaustive), vous bénéficierez dela reproductibilité, de la traçabilité, de la facilité de gestionet, surtout, d'une excellente interface utilisateur pour tout surveiller depuis l'interface Vertex AI sur GCP.
Conclusion
De nos jours, de nombreux modèles d'apprentissage automatique sont destinés à être déployés en production. Si vous travaillez sur GCP et envisagez d'utiliser Vertex AI, nous espérons que ce kit de démarrage vous aidera à vous familiariser avec cet outil. Nous vous recommandons également de le consulter si vous lancez vos projets avec l'ambition de les rendre opérationnels au plus vite, c'est-à-dire de les déployer en production.
Un grand merci à Luca Serra, Jeffrey Kayne et Robin Doumerc (Artefact) qui ont aidé à créer ce kit de démarrage, mais aussi à Maxime Lutel qui s'est chargé de la modélisation pour le projet de jouets que nous utilisons.
Si vous souhaitez passer au niveau supérieur, vous trouverez dans la documentation de GCP comment :

BLOG






