Publié par

Il y a 2 mois -

Temps de lecture 6 minutes

Créez et exécutez votre premier pipeline avec Kubeflow

Cet article est le 3ème d’une série d’articles autour de Kubeflow. Les deux premiers articles ont expliqué comment installer Kubeflow Pipelines sur Google Cloud Platform et vous ont donné un aperçu de la plateforme Kubeflow Pipelines. Et maintenant, c’est le moment de créer votre propre pipeline et d’exécuter votre premier experiment.

Quand vous développez et industrialisez un système Machine Learning (ML), le workflow de travail ML comprend généralement plusieurs étapes. De plus, le développement d’un système Machine Learning est un processus itératif et souvent complexe. La gestion « manuelle » d’un workflow ML n’est pas assez robuste pour les systèmes en production. Kubeflow s’appuie sur Kubernetes en tant que système de déploiement, de mise à l’échelle et de gestion automatique de systèmes complexes pour data scientists et data engineers.

Un pipeline Kubeflow est une définition d’un workflow ML, il permet de décrire les étapes du workflow et de spécifier comment ils se combinent sous la forme d’un DAG (Directed Acyclic Graph).

Pour déployer et exécuter votre pipeline, la plateforme Kubeflow Pipelines se révèle être une solution très efficace. La plateforme peut être utilisée en tant que produit autonome, mais peut également être intégrée à diverses plateformes cloud, y compris Google Cloud Platform (GCP). Kubeflow Pipelines nécessite naturellement un cluster Kubernetes pour fonctionner. Assurez vous donc que vous disposez d’un cluster Kubernetes en cours d’exécution dans votre projet GCP pour réaliser la suite de cet article.

La plateforme Kubeflow Pipelines comprend:

  • Une interface utilisateur (UI) pour gérer et suivre les experiments et les exécutions
  • Un engine pour planifier des workflows ML en plusieurs étapes
  • Un SDK pour définir et manipuler des pipelines et des composants

Kubeflow Pipelines sert à:

  • L’orchestration de bout au bout d’une séquence des étapes d’un workflow ML
  • L’expérimentation facile de nombreuses idées et de gestion de vos différentes experiments d’une façon systématique et organisée
  • La réutilisation des composants et des pipelines pour créer rapidement des solutions sans avoir à recréer tous les composants à chaque fois

L’installation de Kubeflow Pipelines dans GCP

Vous commencez par l’installation du service Kubeflow Pipelines sur votre projet GCP. C’est plutôt trivial et ne prend généralement que quelques minutes.

Après installation, vous pouvez accéder à l’interface sur AI Platform – Pipelines.

Et vous continuez en cliquant sur le lien « OUVRIR LE TABLEAU DE BORD DES PIPELINES ».

Cela vous redirigera directement vers la console des Kubeflow Pipelines.

L’implémentation d’un premier pipeline avec le SDK Kubeflow Pipelines

Un pipeline se compose de plusieurs composants. Chaque composant du pipeline représente une étape de workflow. Il va exécuter une partie du code métier au sein d’un conteneur. Le pipeline comprend la définition des entrées (paramètres) nécessaires pour son exécution ainsi que les entrées et sorties de chaque composant.

Bien sûr, il faut commencer par l’implémentation du code de votre premier pipeline. Il existe plusieurs façons de procéder. Dans la plupart des cas, vous pouvez utiliser Kubeflow Pipelines SDK, qui vous apportera de la flexibilité en vous permettant de changer facilement de modèle et framework de modélisation. Si vous appliquez TensorFlow pour votre model ML vous pouvez utiliser TensorFlow Extended (TFX) SDK avec end-to-end ML Pipeline Template (TF 2.1 Notebook).

Avant d’exécuter le code, il faut installer la librairie kfp. Comme tout package python, cela se fait simplement avec pip:

$ pip install kfp --upgrade --user

Bien que ce ne soit pas détaillé ici, il est toujours utile d’utiliser un environnement virtuel, par exemple avec miniconda. Pour obtenir des détails sur les composants de Kubeflow Pipelines SDK, vous pouvez consulter la Kubeflow Pipelines SDK API reference.

Voici le code pour un pipeline simple créé avec Kubeflow Pipeline SDK. Celui-ci effectue plusieurs opérations trivial d’addition:

  • la tâche 1 ajoute 10 à l’entrée a du pipeline
  • la tâche 2 ajoute 5 à l’entrée b du pipeline
  • la tâche 3 ajoute la sortie de la tâche 1 à la sortie de la tâche 2.
import kfp
import kfp.dsl as dsl
from kfp import compiler
from kfp import components

BASE_IMAGE = 'python:3.6-slim'

def summa(a: float, b: float) -> float:
    '''Calculates sum of two arguments'''
    return a + b

add_op = components.func_to_container_op(
    summa,
    base_image=BASE_IMAGE, 
)
@dsl.pipeline(
   name='Addition pipeline',
   description='A simle test pipeline.'
)
def calc_pipeline(
   a: float = 1,
   b: float = 2
):
    add_1_task = add_op(a, 10) 
    add_2_task = add_op(5, b)
    add_3_task = add_op(add_1_task.output, add_2_task.output)

pipeline_func = calc_pipeline
pipeline_filename = 'test_pipeline.yaml'
compiler.Compiler().compile(pipeline_func, pipeline_filename)

Ce code va produire un fichier YAML test_pipeline.yaml. Bien que cela soit un fichier de texte, il contient en effet trop de structures complexes pour être lu ou analysé.

L’upload de votre pipeline dans Kubeflow Pipelines

Une fois que votre fichier de pipeline YAML est disponible, vous pouvez l’uploader sur GCP via Kubeflow Pipelines UI en cliquant sur + Upload pipeline.

Dans la boîte de dialogue suivante, mettez le nom de votre pipeline et une description. Spécifiez le fichier YAML contenant votre pipeline compilé et cliquez sur Create.

Après l’upload, vous retrouvez votre pipeline dans la liste et vous êtes maintenant prêt à exécuter votre premier pipeline.

Vous cliquez sur le nom du pipeline et analysez le graphe qui illustre la séquence des tâches et des connexions entre leurs entrées et sorties.

Les trois tâches du pipeline décrites précédemment sont visibles. La tâche 3 utilise bien les sorties des tâches 1 et 2.

La création et exécution de votre premier experiment

Maintenant, cliquez sur Create experiment. Donnez un nom et une description a votre experiment. Après, cliquez sur Next.

Définissez maintenant les paramètres d’entrée a et b pour votre exécution de pipeline et cliquez sur Start.

La découverte des résultats d’exécution de pipeline

Maintenant, cliquez sur le nom de votre experiment et analysez les états d’exécution de chaque tâche.

Comme ce pipeline était plutôt court, les trois tâches s’exécutent très rapidement. Cliquez sur la dernière tâche et vous pourrez voir les entrées, qui sont en même temps les sorties des deux calculs précédents.

Pour accéder à la sortie de la tâche 3, cliquer sur le lien sous la section « Output artifacts » – « summa-3-output ». Il vous montrera le résultat final de sortie = 30,0. Ceci est correct et démontre, non seulement qu’il est assez simple de passer des informations basiques d’une étape à l’autre, mais aussi que le pipeline exécute bien toutes les tâches selon la séquence définie.

Vous pouvez maintenant revenir à tout moment aux résultats et à la configuration de votre experiment, ou en créer une nouvelle et l’exécuter avec de nouvelles valeurs de paramètres.


Il n’y a pas de réelle complexité dans tout ce processus. Maintenant vous pouvez implémenter, déployer, exécuter et observer les résultats de l’exécution de votre premier pipeline Kubeflow. Bien sûr, vous devez vous familiariser avec le SDK et garder à l’esprit que les pipelines réels sont généralement beaucoup plus complexes que ceux que nous avons utilisés comme exemple ici.

Publié par

Commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous recrutons

Être un Sapient, c'est faire partie d'un groupe de passionnés ; C'est l'opportunité de travailler et de partager avec des pairs parmi les plus talentueux.