Lisez notre article sur

class="img-responsive

.

Dans cet article, nous allons présenter un outil qui démontre, de manière pratique, notre expérience de l'utilisation de Vertex AI Pipelines dans un projet fonctionnant en production.
Un tutoriel de bout en bout sur la façon d'entraîner et de déployer un modèle ML personnalisé en production en utilisant les pipelines de Vertex AI avec Kubeflow v2. Si vous êtes confus sur la façon d'aborder Vertex AI, vous serez en mesure de trouver votre chemin car tout dans ce tutoriel est basé sur l'expérience de la vie réelle. Il y a de nombreux exemples de pipelines qui illustrent comment utiliser certaines fonctionnalités de Vertex AI et de Kubeflow. Vous trouverez également un fichier makefile pour vous aider à exécuter des recettes importantes et vous faire gagner beaucoup de temps pour construire votre modèle et le faire fonctionner en production.

Les pipelines de ML peuvent être définis comme des ensembles de tâches connectées qui exécutent des parties complètes ou spécifiques du flux de travail de ML (ex : pipeline de formation).

exemple d'une filière de formation simple

exemple d'une filière de formation simple

exemple d'un pipeline de formation sur Vertex AI Pipelines utilisant Kubeflow

exemple d'un pipeline de formation sur Vertex AI Pipelines utilisant Kubeflow

Conçus correctement, les pipelines ont l'avantage d'être reproductibles et hautement personnalisables. Ces deux propriétés rendent l'expérimentation et le déploiement en production relativement faciles. L'utilisation de Vertex AI Pipelines avec Kubeflow nous a permis de concevoir et d'exécuter rapidement des pipelines personnalisés ayant les propriétés mentionnées ci-dessus. Les exemples de pipelines que nous illustrons dans le kit de démarrage sont très représentatifs de ce que l'on peut rencontrer lorsqu'on travaille sur un projet de ML qui doit être déployé en production. Nous avons également partagé une poignée d'astuces et de 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'ai été submergé par toutes les possibilités de réaliser exactement la même tâche. Je n'étais pas tout à fait sûr des meilleurs choix à faire pour construire mes pipelines. Après quelques mois, nous avons trouvé notre chemin et forgé quelques convictions, au 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 vise à présenter un kit de démarrage qui montre, par des méthodes pratiques, notre expérience et ce que nous avons appris en utilisant Vertex AI Pipelines. Nous espérons que cela aidera les débutants à se familiariser rapidement avec cet outil puissant sans en payer le prix d'entrée élevé.

Dans les sections suivantes, nous présenterons les concepts/caractéristiques les plus intéressants que nous avons trouvés en utilisant les pipelines d'IA de Vertex. Nous utiliserons également un projet de prévision jouet (le concours M5) pour illustrer le tout. Nous ne nous concentrerons volontairement pas sur la partie modélisation, mais nous mettrons plutôt l'accent sur les différentes étapes nécessaires à l'opérationnalisation d'un modèle en production.

Créer une image de base personnalisée et l'utiliser comme base pour vos composants

Si vous avez déjà travaillé avec des pipelines Kubeflow, une question que vous pourriez vous poser est de savoir quand utiliser des composants basés sur des conteneurs ou des composants basés sur des fonctions. Il y a beaucoup d'avantages et d'inconvénients dans les deux options, néanmoins, il y a aussi un juste milieu à trouver. Les composants basés sur des conteneurs sont plus adaptés aux tâches complexes où il y a de nombreuses dépendances de code par rapport aux composants basés sur des fonctions qui contiennent toutes les dépendances de code à l'intérieur d'une fonction et qui sont généralement plus simples. Ces derniers fonctionnent plus rapidement car nous n'avons pas besoin de construire et de déployer une image à chaque fois que nous modifions notre 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.

Notre solution pour faire fonctionner les composants complexes et simples de la même manière est de travailler avec une version écrasée de l'image de base par défaut. Dans cette image de base modifiée, nous installons tous nos codes sous forme de paquetage. Ensuite, nous importons ces fonctions dans des composants basés sur des fonctions, comme vous le feriez pour pandas par exemple. Nous avons l'avantage d'exécuter des tâches complexes et simples de la même manière et de réduire le temps de construction de l'image à seulement 1 (l'image de base).

Nous organisons également nos fichiers de configuration de manière à faciliter l'adaptation des entrées de vos composants et pipelines.

Utilisation d'une image de base écrasée comme base unique pour tous vos composants

Utilisation d'une image de base écrasée comme base unique pour tous vos composants

La parallélisation de certaines parties de vos pipelines est aussi simple que l'écriture d'une boucle for

Lorsque l'on expérimente la ML, on a généralement besoin d'effectuer de nombreuses itérations d'un processus d'apprentissage simple, soit pour régler un hyperparamètre, soit pour créer plusieurs modèles (par exemple, un modèle par catégorie de produit).

Pour y parvenir de manière optimale, il faudrait paralléliser les différents flux de formation afin de gagner du temps et d'optimiser les ressources. Avec Vertex Pipelines et Kubefkow, l'effort est minimal de par sa conception ; il ne vous en coûtera que d'écrire une boucle for. Et lors de la compilation de votre pipeline, Kubeflow déterminera quelles étapes et/ou groupes d'étapes peuvent être exécutés en parallèle et lesquels doivent être exécutés successivement.

class="img-responsive

Exemple de pipeline avec des parties fonctionnant en parallèle

Déploiement conditionnel pour une exploitation sans faille de votre modèle de ML

Avec kfp.dsl.condition, vous pouvez facilement déployer un modèle entraîné et vous préparer à le réutiliser plus tard avec un peu de code logique. Si vous expérimentez avec de nombreux paramètres et espérez passer en production de manière transparente en fonction d'un ensemble de conditions, cette fonctionnalité de Kubeflow sera très pratique. Associée à un excellent CICD, elle vous permettra de faire fonctionner le cycle de vie de votre modèle ML sans problème.

class="img-responsive

Exemple de déploiement conditionnel

En plus de ces caractéristiques (qui ne sont pas exhaustives), vous aurez la reproductibilité, la traçabilité, la gérabilité et, enfin, une excellente interface utilisateur pour tout contrôler sur l'interface de Vertex AI sur GCP.

Conclusion

De nos jours, de nombreux modèles de ML sont appelés à fonctionner en production. Ainsi, si vous travaillez sur GCP et que vous envisagez d'utiliser Vertex AI, nous espérons que ce kit de démarrage vous aidera à faire un voyage agréable avec l'outil. Vous devriez également le consulter si vous démarrez vos projets avec l'ambition de les rendre utiles le plus rapidement possible, c'est-à-dire de les déployer en production.

Un grand merci à Luca Serra, Jeffrey Kayne et Robin Doumerc (Artefact) qui ont participé à la construction de ce kit de démarrage, mais aussi Maxime Lutel qui a réalisé la modélisation du projet de jouet que nous utilisons.

Si vous souhaitez passer au niveau supérieur, vous trouverez dans la documentation de GCP comment faire :

class="img-responsive

Moyen Blog par Artefact.

Cet article a été initialement publié sur Medium.com.
Suivez-nous sur notre Medium Blog !