
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.
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.
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 :
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.
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.
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.
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 :
Facilité de développement : Pure Python | Décorateurs de tâches Expérience de développement native Python
Pipeline Customization Personnalisez facilement n’importe quel workflow et n’importe quelle tâche en modifiant le décorateur de tâche
Déploiement : cluster Kubernetes
Visibilité Journaux de conteneurs facilement accessibles
Les decks Flyte permettent des visualisations de reporting
L'intégration native de Flyte avec Kubernetes a simplifié le processus de déploiement.
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.
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
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.
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.
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.
Bazaarvoice Engineering Team
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 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.

Ressource
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.

Webinaire
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.
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.