True ML Talks #3 - Plateforme d'apprentissage automatique @ Facebook

Conçu pour la vitesse : latence d'environ 10 ms, même en cas de charge
Une méthode incroyablement rapide pour créer, suivre et déployer vos modèles !
- Gère plus de 350 RPS sur un seul processeur virtuel, aucun réglage n'est nécessaire
- Prêt pour la production avec un support complet pour les entreprises
Nous sommes de retour avec un autre épisode de True ML Talks. Dans ce document, nous approfondissons les Flux d'apprenants FB, la colonne vertébrale de l'IA de Facebook et nous discutons avec Aditya Kalro.
Aditya est actuellement directeur principal de l'ingénierie chez Google au sein de l'équipe Identity. Auparavant, Aditya a travaillé pour Facebook, où il a dirigé le développement de l'ensemble de la plateforme de gestion des flux de travail ML de Facebook, appelée FBLearner Flow. Et nous en parlerons plus en détail lors de l'appel d'aujourd'hui.
📌
Nos conversations avec Aditya porteront sur les aspects suivants :
- Présentation de FBLearner Flow.
- Tests A/B et tests fantômes dans des systèmes à grande échelle.
- Combler le fossé entre la recherche et la production.
- Optimisation des coûts et de la latence dans AI Inference.
- Architecture de FBLearner Flow.
- Combler le fossé entre les plateformes de déploiement de logiciels et de machine learning.
- Importance du suivi et de la formation distribuée.
- Principes fondamentaux pour la création d'un système de machine learning à grande échelle.
Regardez l'épisode complet ci-dessous :
Élargir les flux de travail
FBLearner Flow est une plateforme de gestion des flux de travail d'apprentissage automatique conçue par Facebook pour gérer son infrastructure de machine learning. Aditya a dirigé le développement de la plateforme et supervisé sa croissance pour prendre en charge des milliers de formations par jour dans 700 à 800 équipes.
- Le flux FBLearner a été initialement développé comme un mécanisme de flux de travail pour le ML, mais il a évolué pour devenir un mécanisme de flux de travail générique capable de gérer diverses tâches, y compris la création d'applications mobiles.
- La plateforme a pris en charge des milliers de formations par jour et a déployé des centaines de milliers de modèles en même temps.
- Le flux FBLearner a été connecté à une plateforme d'inférence et a été étendu à des centaines et des milliers de machines au fil du temps.
- La plateforme a été conçue pour être suffisamment générique pour être appliquée à n'importe quel domaine, ce qui en fait un outil polyvalent pour la gestion des flux de travail de machine learning.
Évolution de FBLearner Flow : un parcours visant à rendre les ingénieurs ML plus productifs
Vous trouverez ci-dessous trois aspects uniques et pertinents de l'évolution de FBLearner Flow :
- Philosophie: L'objectif principal de FB Learner était de rendre les ingénieurs ML plus productifs. Pour y parvenir, la plateforme a été développée en Python, même si le langage n'était pas bien supporté sur Facebook à l'époque. Le caractère sacré de l'expérience a également été souligné, ce qui signifiait que l'expérience devait être totalement prédictive. Pour ce faire, la plateforme a alloué la même quantité de mémoire et de CPU à chaque flux de travail ou opérateur.
- Flux de travail et opérateurs | FBLearner Flow a commencé par le concept d'un flux de travail, qui est la façon dont un ingénieur ML exprimerait tout ce qui doit se passer. Le workflow est un concept unique qui associe plusieurs opérateurs. Chaque composant du flux de travail était divisé en opérateurs, qui pouvaient être répartis sur différentes machines, ce qui permettait aux utilisateurs de les connecter plus facilement et de déplacer des données d'une machine à une autre.
- Gestion des expériences : La plateforme fournit également des outils de gestion des expériences qui permettent aux utilisateurs de gérer leurs expériences et de corriger les éventuelles erreurs. L'interface utilisateur de FBLearner Flow a permis aux utilisateurs de voir facilement où l'erreur s'est produite et de fournir les journaux nécessaires pour les aider à comprendre pourquoi l'erreur s'est produite. Cette approche a également aidé les utilisateurs à gérer un grand nombre d'expériences.

Système d'évaluation
Les modèles d'apprentissage automatique doivent être évalués pour déterminer leur capacité à bien généraliser sur des données invisibles. C'est là qu'intervient le système d'évaluation. Le système d'évaluation comporte deux parties : l'évaluation par lots et l'évaluation en ligne.
- Évaluation des lots: L'évaluation par lots est également appelée évaluation hors ligne. Cela implique de lire des données, de les traiter, puis de les réintégrer dans une autre entité. Cette approche est bien comprise et est idéale pour les modèles comportant peu de paramètres. Cependant, il peut ne pas être efficace lorsqu'il s'agit de milliers de paramètres et de fonctionnalités.
- Évaluation en ligne : Le système d'évaluation en ligne, en revanche, est un peu plus complexe et permet aux utilisateurs de suivre le déploiement d'un modèle de machine learning particulier et d'envoyer un exemple au modèle pour obtenir des résultats immédiats. Cela en fait un excellent outil pour les praticiens du ML pour tester rapidement leurs modèles, même des modèles expérimentaux. L'équipe des publicités de Facebook disposait d'un système d'inférence qui lui était très spécifique. Pour le rendre disponible pour le reste de Facebook, ils ont créé la première version de la plateforme d'inférence, étroitement liée au flux FBLearner.
Création d'un cadre de test A/B efficace pour les modèles d'apprentissage automatique
Le déploiement de modèles d'apprentissage automatique dans des scénarios réels peut s'avérer difficile, en particulier lorsqu'il s'agit de systèmes à grande échelle tels que Facebook, où même une petite erreur peut avoir des conséquences importantes. À cet égard, la mise en place d'un cadre de test A/B efficace est cruciale pour garantir les performances optimales des modèles d'apprentissage automatique.
Deux composants essentiels de la plateforme FB Learner qui ont contribué à atteindre cet objectif étaient les tests A/B et les tests parallèles.. Les tests A/B ont permis de comparer deux versions du système ou du modèle afin de déterminer laquelle est la plus performante, tandis que les tests parallèles ont permis de déployer le nouveau modèle en parallèle avec le modèle existant afin d'évaluer ses performances sans affecter l'expérience utilisateur. Cela a permis de réduire le risque de déploiement d'un modèle défectueux en production.
Une autre caractéristique unique de la plateforme FBLearner était sa capacité à faciliter l'échange de modèles entre les praticiens du ML et les développeurs. Il a permis aux développeurs de déployer facilement les modèles en production et de les tester à l'aide de l'infrastructure d'expérimentation rapide existante. Cela leur a permis de comparer rapidement les performances de leur système existant avec le modèle ML récemment déployé, garantissant ainsi des performances optimales du système.
Comment Facebook a comblé le fossé entre la recherche et la production grâce à FBLearner Flow
L'équipe de recherche sur l'IA de Facebook a dû relever un défi majeur pour combler le fossé entre les besoins des chercheurs et ceux de l'équipe de production. Alors que les chercheurs avaient besoin d'un système rapide leur permettant de déployer rapidement de nouveaux modèles, l'équipe de production avait besoin de stabilité, de fiabilité et de prévisibilité.
👉
Pour relever ce défi, Facebook a créé une interface semblable à Slurm au-dessus de sa plateforme d'apprentissage automatique.
Slurm est une interface de ligne de commande largement utilisée dans le monde universitaire pour la gestion des expériences. En créant une interface de ligne de commande similaire pour la plateforme, Facebook a facilité l'utilisation de la plateforme par les chercheurs.
Malgré les différences fondamentales entre les exigences des deux équipes, le fait de disposer d'une interface commune a permis aux chercheurs de migrer plus facilement leurs modèles vers FBLearner Flow pour la production. Le système leur a donné accès à un grand nombre de machines, contrairement à Slurm, qui a été conçu pour fonctionner sur un petit ensemble de machines.
L'interface de type Slurm de la plateforme a permis aux chercheurs d'expérimenter rapidement différents modèles et de les migrer vers l'environnement de production lorsqu'ils étaient satisfaits des résultats.
Optimisation des coûts et de la latence dans l'inférence basée sur l'IA : le rôle de la conteneurisation et des microservices
Dans le domaine de l'IA, optimiser les coûts sans compromettre la latence est un défi permanent. Cependant, avec l'avènement des nouvelles technologies et des conceptions architecturales, des solutions ont été développées pour résoudre ce problème.
👉
Conteneurisation et microservices ont prouvé leur efficacité pour optimiser les coûts et réduire la latence dans l'inférence de l'IA.
Conteneurisation est une méthode qui permet de regrouper le code logiciel et ses dépendances dans une seule unité, appelée conteneur. Ce conteneur peut être facilement déplacé d'un environnement informatique à un autre, ce qui le rend hautement évolutif et flexible. En utilisant la conteneurisation, les organisations peuvent regrouper plusieurs modèles d'IA dans un seul conteneur, ce qui permet de les déployer et de les faire évoluer rapidement et efficacement.
En outre, la conteneurisation permet également l'emballage en bacs, ce qui optimise l'allocation des ressources en plaçant plusieurs conteneurs sur une seule machine physique. Cela permet aux organisations de tirer le meilleur parti de leurs ressources disponibles et de réduire les coûts. En outre, grâce à la mise à l'échelle automatique, les entreprises peuvent rapidement augmenter ou diminuer leur capacité en fonction de la demande, ce qui permet d'optimiser davantage les coûts.
En outre, microservices, qui sont de petits composants indépendants d'une application, peuvent être utilisés pour créer une plateforme d'inférence efficace et agile. En décomposant les applications complexes en services modulaires plus petits, chaque service peut être adapté, géré et mis à jour indépendamment. Cela rend non seulement la plateforme plus résiliente, mais contribue également à réduire la latence.
Comprendre l'architecture de FBLearner Flow : un examen plus approfondi
La mise en place d'un système d'IA robuste et évolutif nécessite une infrastructure solide. À cet égard, FBLearner Flow de Facebook a été à la pointe de l'innovation en matière d'IA, fournissant une solution unique pour la formation et le déploiement de modèles d'IA à grande échelle.
L'architecture de FBLearner Flow a été construite en grande partie en interne, en tirant parti de l'infrastructure existante de Facebook. Ils ont commencé avec Kronos, un planificateur interne, mais ont dû passer à la conteneurisation pour résoudre les problèmes liés à l'affluence des troupeaux et au bruit des voisins. Le système a ensuite été construit autour de l'idée d'opérateurs et de flux de travail, les tables Hive étant initialement utilisées comme canaux pour les données structurées, mais les clusters de fichiers et le stockage Blob étant finalement utilisés pour les données non structurées telles que les images.
Le mécanisme d'exécution du système était autonome et versionné, ce qui permettait de comparer les différentes versions du modèle. La gestion des expériences a été facilitée par la capacité du système à modifier les fonctionnalités, les versions des modèles ou les paradigmes d'entraînement tout en conservant les mêmes paramètres de sortie et les ensembles d'évaluation.
Si le FBLearner Flow devait être reconstruit aujourd'hui, Kubernetes et Kubeflow seraient les solutions préférées. Kubeflow fournit un paradigme plus autonome, ce qui facilite son déploiement, et il peut utiliser d'autres connecteurs pour se connecter à différents éléments de l'infrastructure.
La plateforme d'inférence a été construite sur Tupperware, l'infrastructure de services de Facebook, chaque modèle étant son propre conteneur. La fonction de dimensionnement automatique a été empruntée à Kubernetes pour garantir que la plateforme puisse augmenter et diminuer selon les besoins.
Dans l'ensemble, l'architecture de FBLearner Flow fournit une solution unique pour créer des systèmes d'IA à grande échelle. Cela témoigne de l'importance de l'infrastructure dans la création de systèmes d'IA robustes et évolutifs.
Combler le fossé entre les plateformes de déploiement de génie logiciel et d'apprentissage automatique
Alors que le domaine de l'apprentissage automatique continue de croître et d'évoluer, il est de plus en plus nécessaire de développer des plateformes et des processus pour déployer des modèles d'apprentissage automatique dans des environnements de production. Cependant, de nombreuses entreprises considèrent les plateformes d'apprentissage automatique comme distinctes des plates-formes de génie logiciel, ce qui peut entraîner de la confusion et des inefficacités.
👉
Bien qu'il existe certaines différences dans les outils utilisés, les processus de développement et de déploiement de modèles de machine learning peuvent être très similaires à ceux utilisés en génie logiciel.
L'un des aspects clés est l'importance d'avoir une opinion sur la manière dont les modèles de machine learning sont développés et déployés. En introduisant des concepts tels que les tests et les étapes requises, telles que la division des tests par train, les entreprises peuvent rationaliser le processus de développement du machine learning et s'assurer que les modèles sont déployés de manière cohérente et efficace.
Une autre similitude est le besoin de surveillance et de télémétrie à la fois dans les plateformes de génie logiciel et de déploiement de machine learning. Tout comme les développeurs surveillent les performances de leurs applications et de leurs microservices, les développeurs ML et les ingénieurs MLOps doivent surveiller les performances de leurs modèles et de leur infrastructure.
En reconnaissant les points communs entre les deux et en développant des processus et des outils cohérents entre les deux, les entreprises peuvent rationaliser leurs processus de développement et de déploiement, réduire les erreurs et les inefficacités, et s'assurer que leurs modèles de machine learning sont déployés de manière cohérente et efficace.
L'importance de la surveillance dans le déploiement du machine learning
La surveillance est un aspect essentiel de tout processus de déploiement de machine learning. Cela permet de s'assurer que les modèles fonctionnent comme prévu et fournissent les résultats escomptés. La surveillance de l'infrastructure et des résultats des prévisions est cruciale pour garantir le bon fonctionnement du système. La partie du système FBLearner qui génère des métriques automatiquement pour surveiller les performances des modèles.
Des mesures personnalisables sont nécessaires pour permettre aux développeurs de surveiller efficacement les performances de leurs modèles. Grâce à la surveillance en place, les développeurs peuvent rapidement identifier et résoudre tous les problèmes susceptibles de survenir au cours du processus de déploiement, ce qui permet d'améliorer les performances et de faire des prévisions plus précises.
En conclusion, la surveillance est un élément essentiel du déploiement du machine learning, et il est crucial de disposer d'un système permettant aux développeurs de surveiller efficacement leurs modèles. Des mesures personnalisables et une surveillance étroite de l'infrastructure et de la sortie des prévisions peuvent contribuer à garantir que les modèles de machine learning fonctionnent comme prévu, ce qui se traduit par de meilleures performances et des prévisions plus précises.
La formation distribuée et son impact sur l'architecture des flux de travail
La formation distribuée et l'inférence distributive ont constitué des changements de paradigme majeurs pour le système FBLearners Flow. À l'origine, le système était conçu pour fonctionner sur une seule machine, et la formation devait avoir lieu sur la même machine. Cependant, à mesure que de nouvelles données ont été ajoutées au système, il est devenu nécessaire de remanier l'architecture du système pour prendre en charge la formation distribuée.
Le plus grand défi à cet égard concernait la version bêta de la structure. L'équipe a dû recourir à la fois à la formation parallèle aux modèles et à la formation parallèle aux données pour les données structurées et non structurées, respectivement. Ils ont également dû ajouter des règles spéciales pour les serveurs de paramètres, qui ont été traités différemment par rapport à la formation elle-même. Les serveurs de paramètres rassembleraient tous les résultats de chacun des éléments d'entraînement et les reconstitueraient. L'équipe a expérimenté plusieurs paradigmes différents, pour finalement opter pour un paradigme de serveur de paramètres permettant le point de contrôle.
La fiabilité est devenue une préoccupation majeure de la formation distribuée, car même si une machine tombait en panne, l'ensemble du flux de travail échouerait. L'équipe a dû créer des API pour permettre le point de contrôle, car cela n'était pas complètement automatisé. Ils ont également dû écrire un mécanisme de redémarrage pour garantir que le flux de travail puisse être redémarré à partir du point de contrôle approprié en cas de panne.
Si la formation distribuée a permis de former des modèles plus complexes, elle a également compliqué les choses pour l'équipe, car la formation prend désormais 5 à 6 fois plus de temps que par le passé. L'équipe a néanmoins pu s'adapter à ces changements et s'assurer que le système continuait de fonctionner de manière fiable.
Création d'un système de machine learning à grande échelle : principes fondamentaux pour réussir
- Feedback et perturbations continus: Pour créer un système de machine learning performant, le feedback continu des utilisateurs est essentiel. L'équipe d'Aditya avait un avantage car ses clients faisaient partie de la même entreprise, ce qui leur permettait de recevoir des commentaires et de se distraire. Ainsi, la création d'un système de machine learning à grande échelle nécessite un engagement continu avec les utilisateurs, leur permettant de fournir des commentaires et de s'adapter en conséquence.
- Orientation vers le service client: Un élément essentiel de la création d'un système de machine learning à grande échelle est de garantir que les questions des utilisateurs reçoivent une réponse rapide afin de les débloquer. L'équipe d'Aditya a adopté une approche axée sur le service client, ce qui lui a permis de résoudre tous les problèmes et de recevoir rapidement des commentaires. Cette approche est essentielle car elle favorise la confiance des utilisateurs et améliore leur expérience.
- Évolution et adaptation: Enfin, la création d'un système de machine learning à grande échelle nécessite une volonté d'évoluer et de s'adapter, car le ML est un domaine qui évolue rapidement. L'équipe d'Aditya a reconnu qu'elle ne pouvait pas tout concevoir en un jour et que l'évolution du système serait continue. Les organisations doivent donc être ouvertes au changement et adopter les nouvelles technologies au fur et à mesure de leur émergence.
Vous trouverez ci-dessous quelques lectures intéressantes sur l'apprentissage automatique de Facebook :
- Présentation de FBLearner Flow : l'épine dorsale de l'IA de Facebook
- Podcast TWIML avec Aditya Kalro
- Conférence d'Aditya et Pierre sur l'apprentissage automatique appliqué à grande échelle
Lisez notre article précédent de la série.
Continuez à regarder le TrueML série youtube et en lisant tout le TrueML série de blogs.
True Foundry est un PaaS de déploiement de machine learning sur Kubernetes destiné à accélérer les flux de travail des développeurs tout en leur offrant une flexibilité totale dans les tests et le déploiement de modèles, tout en garantissant une sécurité et un contrôle complets à l'équipe Infra. Grâce à notre plateforme, nous permettons aux équipes de machine learning de déployer et surveiller des modèles en 15 minutes avec une fiabilité à 100 %, une évolutivité et la possibilité de revenir en arrière en quelques secondes, ce qui leur permet de réduire les coûts et de mettre les modèles en production plus rapidement, ce qui permet de réaliser une véritable valeur commerciale.
TrueFoundry AI Gateway offre une latence d'environ 3 à 4 ms, gère plus de 350 RPS sur 1 processeur virtuel, évolue horizontalement facilement et est prête pour la production, tandis que LiteLM souffre d'une latence élevée, peine à dépasser un RPS modéré, ne dispose pas d'une mise à l'échelle intégrée et convient parfaitement aux charges de travail légères ou aux prototypes.
Le moyen le plus rapide de créer, de gérer et de faire évoluer votre IA













.webp)



.png)


.webp)




.webp)







