Flyte un an après

Découvrez l’expérience menée chez Bazaarvoice pour améliorer l’efficacité des workflows de machine learning grâce à la simplicité de développement, de déploiement et de personnalisation de Flyte. Publié le : 26 mars 2024 Auteur : Bazaarvoice Engineering Team

Sur le circuit de la création d’applications de ML, les étapes traditionnelles du développement logiciel sont souvent dépassées. Bienvenue dans le monde du MLOps, où des défis uniques rencontrent des solutions innovantes et où la cohérence est reine.

Chez Bazaarvoice, les pipelines d’entraînement constituent l’épine dorsale de notre stratégie MLOps. Ils garantissent la reproductibilité de la construction de nos modèles. Il existait cependant une lacune flagrante dans le passage du code expérimental à la production.

Plutôt que de poursuivre des approches fragmentaires, souvent centrées sur les notebooks Jupyter, nous avons estimé qu'il fallait un standard pour permettre aux praticiens d'expérimenter et de déployer des modèles de machine learning extrêmement rapidement tout en respectant nos bonnes pratiques.

Construire vs acheter

Forts de nos succès dans l’unification de notre stratégie de déploiement de modèles de machine learning (ML)S'ouvre dans une nouvelle fenêtre, nous avons d’abord dû décider si nous allions développer en interne une plateforme d’orchestration de workflows ML sur mesure ou chercher des solutions externes.

Lorsque nous avons décidé d'« acheter » (c'est après tout de l'open source), le choix de FlyteS'ouvre dans une nouvelle fenêtre comme plateforme de gestion des workflows s'est imposé comme une évidence. Cela nous a fait gagner un temps de développement précieux et a rapproché notre équipe d'une infrastructure self-service robuste. Une telle infrastructure permet à nos ingénieurs de construire, d'évaluer, d'enregistrer et de déployer des modèles en toute fluidité. Plutôt que de réinventer la roue, Flyte nous a doté d'une roue efficace pour prendre de l'avance.

Avant de nous lancer avec Flyte, nous nous sommes engagés dans un long parcours d'évaluation. Choisir le bon système d'orchestration de workflows ne consistait pas seulement à sélectionner un outil, mais aussi à trouver une plateforme qui complète notre vision et s'aligne sur nos objectifs stratégiques. Nous connaissions l'importance de cette décision et voulions nous assurer d'avoir pensé à tout. Au final, les options d'outils retenues pour examen étaient Flyte, Metaflow, Kubeflow Pipelines et Prefect.

Pour faire un choix éclairé, nous avons défini une série de critères :

Indispensables :

  • Facilité de développement : L'outil doit aider intuitivement les développeurs, sans courbe d'apprentissage abrupte.

  • Déploiement : des mécanismes de déploiement rapides et sans complication.

  • Personnalisation des pipelines : flexibilité pour adapter les pipelines en fonction des exigences propres à chaque projet.

  • Visibilité : une vision claire des processus pour mieux déboguer et mieux comprendre.

Les atouts supplémentaires :

  • Intégration AWS : Capacités d'intégration fluide avec les services AWS.

  • Conservation des métadonnées : stockage et récupération efficaces des métadonnées.

  • Temps de démarrage : initialisation rapide pour réduire la latence.

  • Mise en cache : Mise en cache optimale des données pour des résultats plus rapides.

Neutres, mais dignes d'intérêt :

  • Sécurité : des mesures de sécurité robustes garantissent la protection des données.

  • Administration des utilisateurs : fonctionnalités facilitant la gestion des utilisateurs et le contrôle des accès.

  • Coût : Prix abordable : un bon équilibre entre fonctionnalités et tarif.

Pourquoi Flyte s’est démarqué : répondre aux critères clés

En approfondissant notre processus de sélection, Flyte a systématiquement répondu à nos principaux critères, dépassant souvent les capacités des autres outils envisagés :

  1. Facilité de développement : Pure Python | Décorateurs de tâches Expérience de développement native Python

  2. Pipeline Customization Personnalisez facilement n’importe quel workflow et n’importe quelle tâche en modifiant le décorateur de tâche

  3. Déploiement : cluster Kubernetes

  4. Visibilité Journaux de conteneurs facilement accessibles

  5. Les decks Flyte permettent des visualisations de reporting

  6. L'intégration native de Flyte avec Kubernetes a simplifié le processus de déploiement.

La personnalisation Bazaarvoice

Comme avec toute plateforme, si Flyte a apporté de nombreux avantages, nous avions besoin d’une autre solution plug-and-play adaptée à nos besoins spécifiques. Nous anticipions la nouveauté de la plateforme au sein de notre organisation. Nous voulions réduire autant que possible la courbe d’apprentissage et permettre à nos développeurs de faire la transition en douceur, sans être submergés.

Pour faciliter la transition et accélérer le processus de développement, nous avons conçu un modèle cookiecutterS'ouvre dans une nouvelle fenêtre qui sert de rampe de lancement aux développeurs, en offrant un point de départ structuré, standardisé et conforme aux bonnes pratiques pour les projets Flyte. Cette structure permet aux développeurs de construire rapidement des pipelines d’entraînement.

Les fichiers les plus pertinents fournis par le modèle sont :

  • Pipfile - Détaille les dépendances du projet

  • Dockerfile - Construit le conteneur Docker

  • Makefile - Fichier d’aide pour compiler, enregistrer et exécuter des projets

  • README.md - Décrit le projet

  • src/ tasks/

  • Workflows.py (suit le standard Kedro pour les couches de donnéesS'ouvre dans une nouvelle fenêtre) process_raw_data : workflow d’extraction, de nettoyage et de transformation des données brutes

  • generate_model_input - workflow pour créer les jeux de données d’entraînement, de test et de validation

  • train_model - workflow pour générer un modèle de machine learning entraîné et sérialisé

  • generate_model_output - workflow pour éviter le décalage entre entraînement et mise en production en effectuant l’inférence sur le jeu de données de validation avec le modèle de machine learning entraîné

  • evaluate - workflow pour évaluer le modèle sur un ensemble souhaité d’indicateurs de performance

  • reporting - workflow pour résumer et visualiser les performances du modèle

  • full - pipeline Flyte complet pour générer un modèle entraîné

  • tests/ - Tests unitaires de vos workflows et tâches

  • run - Simplifie l’exécution des workflows

De plus, un défi courant dans le développement de pipelines est d'avoir besoin de ressources dépassant ce que nos machines locales offrent. Ou encore, certaines tâches peuvent nécessiter des durées d'exécution prolongées. Flyte permet bien de développer en local et d'exécuter à distance. Toutefois, cela implique une série d'étapes :

  • Reconstruisez votre image Docker personnalisée après chaque modification du code.

  • Attribuez un tag de version à cette nouvelle image docker et poussez-la vers ECR.

  • Enregistrez cette nouvelle version du workflow auprès de Flyte, en mettant à jour l’image docker.

  • Demandez à Flyte d’exécuter cette version précise du workflow, en paramétrant via la CLI.

Pour contourner ces difficultés et accélérer le développement, nous avons conçu le Makefile et le script d’exécution du modèle afin de condenser en une seule commande la série d’étapes ci-dessus !

./run —remote src/workflows.py full

Le Makefile utilise quelques cibles d’assistance, mais fournit globalement les commandes suivantes :

  • info - Affiche des informations sur ce projet

  • init - Configure le projet dans flyte et crée un dépôt ECR

  • build - Construit l’image docker

  • push - Envoie l’image docker vers ECR

  • package - Crée le package flyte

  • register - Enregistre la version dans flyte

  • runcmd - Génère la commande d’exécution en local comme à distance

  • test - Exécute tous les tests du code

  • code_style - Applique le formatage black & flake8

Réussites majeures

Avec Flyte comme composant essentiel de notre plateforme de machine learning, nous avons atteint une dynamique inégalée dans le développement ML. Il permet d’expérimenter et de déployer rapidement nos modèles, en veillant à ce que nous respections toujours les bonnes pratiques. Au-delà de l’alignement sur les principes fondamentaux du MLOps, nos personnalisations garantissent que Flyte répond parfaitement à nos besoins spécifiques, assurant la cohérence et la fiabilité de nos modèles de ML.

Pour conclure

Tout comme les pilotes ressentent de l’exaltation en franchissant la ligne d’arrivée, notre équipe éprouve un immense sentiment d’accomplissement en voyant nos projets de machine learning filer à toute vitesse avec Flyte. Alors que nous regardons vers l’avenir, nous sommes optimistes et prêts à relever les nouveaux défis et à franchir les nouvelles étapes qui nous attendent. 🏎️

Si ce type de travail vous attire, consultez nos offres d’emploiS'ouvre dans une nouvelle fenêtre.

À propos de l'auteur

Edgar Trujillo est spécialiste MLOps chez Bazaarvoice, avec une expertise sur l'ensemble du cycle de vie des modèles, de l'entraînement à la production. Avant de rejoindre Bazaarvoice, il a travaillé comme ML Engineer au sein de l'équipe CTML de JP Morgan, où il a aidé les équipes internes de conformité et juridiques dans leurs analyses de données. Il a également acquis de l'expérience dans le domaine des voitures autonomes lors d'un stage dans une start-up de véhicules électriques, où ses recherches sur la prédiction du comportement des conducteurs ont donné lieu à un brevet. Pendant son temps libre, Edgar aime la photographie, les voyages et se tenir au courant des dernières nouveautés de Netflix.

Continuer à explorer

Découvrez d'autres ressources, outils et insights pour alimenter les expériences de nouvelle génération basées sur l'IA.

  • Blog

    La Gen Alpha, moteur de la transition vers l'IA

    La Gen Alpha troque les barres de recherche contre des chatbots IA. Apprenez à utiliser le framework Triple-A et un UGC authentique pour devenir la réponse de référence à l'ère du GEO.

    Lire la suite
  • Ressource

    S'imposer dans le rayon IA grâce à l'UGC

    Les dépenses publicitaires traditionnelles ne vous feront pas entrer dans le rayon IA. Découvrez comment utiliser l'UGC pour que l'IA trouve facilement vos produits, leur fasse confiance et les choisisse.

    Lire la suite
  • Webinaire

    S'imposer dans le rayon IA grâce à l'UGC : le playbook des dirigeants de marque pour la découvrabilité des produits

    Les agents IA sont désormais le premier filtre entre votre catalogue et la décision d'achat du client. Découvrez comment l'UGC aide votre marque à apparaître dans la recherche IA.

    Lire la suite

Vous avez 15 minutes pour parler stratégie ?

Nous passerons en revue votre cas d'usage et vous montrerons comment transformer le contenu client authentique en conversions plus élevées sur votre site.