Metaflow est un framework Python qui facilite l’exécution de projets machine learning depuis le stade du prototype jusqu’à la production. L’outil de Netflix aide les spécialistes des données à déployer plus rapidement des modèles d’apprentissage machine pour la production. Le géant de la diffusion vidéo en continu dit avoir utilisé Metaflow en interne au cours des deux dernières années pour créer et gérer des centaines de projets de science des données, du traitement du langage naturel à la recherche opérationnelle.
Pour aider les scientifiques des données de toutes les entreprises, l’équipe data-science de Netflix a ouvert sa bibliothèque Python Metaflow, selon un article de blog que l’équipe a publié sur Medium le mardi dernier. Metaflow est un élément clé de l’infrastructure d’apprentissage machine « centrée sur l’humain » que l’équipe data-science utilise pour construire et déployer des flux de travail dans le cadre de son activité. Netflix utilise l’apprentissage automatique dans tous les aspects de ses activités, de l’analyse de scénarios à l’optimisation des calendriers de production, en passant par la prévision du taux de désabonnement, la tarification, la traduction et l’optimisation de son vaste réseau de distribution de contenu.
Selon l’article de blog, Netflix dit être parti d’une observation clé pour aboutir à la mise en de son framework. En effet, selon l’entreprise, la plupart de ses spécialistes des données n’avaient rien contre l’écriture de code Python. Ce qu’ils voulaient, c’est de pouvoir conserver la liberté d’utiliser du code Python arbitraire et idiomatique pour exprimer leur logique métier – comme ils le feraient dans un notebook Jupyter. Ces scientifiques des données aiment exprimer la logique métier à travers le code Python, mais ne veulent pas perdre leur temps.
« Cependant, ils ne veulent pas passer trop de temps à penser aux hiérarchies d’objets, aux problèmes d’empaquetage ou à gérer des API obscures sans rapport avec leur travail. L’infrastructure devrait leur permettre d’exercer leur liberté en tant que spécialistes des données, mais elle devrait fournir suffisamment de glissières de sécurité et d’échafaudages pour qu’ils n’aient pas à se soucier trop de l’architecture logicielle », lit-on dans l’article de blog de Netflix.
A partir de cette observation, l’idée derrière Metaflow est donc de donner aux spécialistes des données de Netflix la possibilité de voir très tôt si un modèle prototypé échouerait en production, ce qui leur permettrait de résoudre le problème quel qu’il soit et, idéalement, d’accélérer le déploiement. Netflix a, par ailleurs, révélé lors des conférences QCon à San Francisco en novembre 2018 que Metaflow avait contribué à réduire le temps moyen de déploiement de quatre mois à seulement sept jours.
« Metaflow vous aide à concevoir votre flux de travail, à l’exécuter à l’échelle et à le déployer en production. Il versionne et suit automatiquement toutes vos expériences et données. Il vous permet d’inspecter facilement les résultats dans les ordinateurs portables », c’est une description succincte que fait Netflix de sa bibliothèque Python sur son nouveau site Web metaflow.org.
Selon l’illustration ci-dessus, les spécialistes des données peuvent structurer leur flux de travail sous la forme d’un graphique acyclique dirigé (DAG) des étapes. Les étapes peuvent être du code Python arbitraire. Dans cet exemple hypothétique, le flux entraîne deux versions d’un modèle en parallèle et choisit celle qui obtient le score le plus élevé. Selon l’équipe data-science de Netflix, il existe de nombreux frameworks existants, comme Apache Airflow ou Luigi, qui permettent l’exécution de DAGs composés de code Python arbitraire, à la différence que de nombreux détails ont été inclus dans Metaflow.
Par exemple, « dans de nombreux autres frameworks, le chargement et le stockage des artefacts sont laissés à l’utilisateur comme un exercice, ce qui l’oblige à décider ce qui doit ou non être conservé. Metaflow élimine cette surcharge cognitive », a écrit Netflix. Metaflow peut également être utilisé avec les bibliothèques Python de sciences de données populaires, y compris PyTorch, Tensorflow et SciKit Learn.
Netflix, l’un des plus grands utilisateurs d’Amazon Web Services
Metaflow est un framework natif du cloud, tirant parti de l’élasticité du nuage de par sa conception, tant pour le calcul que pour le stockage. Et Netflix, qui est l’un des plus grands utilisateurs des services Web d’Amazon (AWS) depuis de nombreuses années, a pu accumuler beaucoup d’expérience opérationnelle et d’expertise dans le traitement du cloud, AWS en particulier. Il n’est donc pas étonnant que, dans le cadre de la version open source de son framework, l’entreprise se soit associée à AWS pour assurer une intégration transparente entre Metaflow et les différents services AWS.
Metaflow s’intègre à de nombreux services AWS, y compris la possibilité de faire un aperçu tout le code et les données dans Amazon S3, que Netflix utilise comme son " lac de données ". La société dispose ainsi d’une solution complète de gestion des versions et de suivi des expériences sans aucune intervention de l’utilisateur. Cette capacité devrait aider les utilisateurs à mettre rapidement à l’échelle les modèles en utilisant les services de stockage, de calcul et d’apprentissage machine d’AWS.
De plus, Metaflow est livré avec un client S3 haute performance qui peut charger des données jusqu’à 10 Gbps. D’après Netflix, « ce client a été massivement populaire parmi nos utilisateurs, qui peuvent maintenant charger les données dans leurs flux de travail un ordre de grandeur plus rapidement qu’auparavant, permettant ainsi des cycles d’itération plus rapides ».
Le client permet aux spécialistes des données de n’importe quelle organisation de réaliser ce que les spécialistes des données de Netflix ont pu faire au cours des dernières années. Par exemple, Netflix a révélé en avril dernier qu’il utilisait Metaflow pour « repousser les limites de Python », lui permettant d’utiliser « du code Python parallélisé et optimisé pour récupérer des données à 10 Gbps, gérer des centaines de millions de points de données en mémoire, et orchestrer le calcul sur des dizaines de milliers de cœurs CPU ».
Selon Netflix, bon nombre des périphériques composant Open Connect, son réseau de diffusion de contenu, sont principalement gérés par des applications Python, qui effectuent différentes tâches telles que le suivi de l’inventaire des périphériques réseau, de leur état et de leur emplacement. Divers logiciels sont nécessaires à la conception, à la construction et à l’exploitation de leur infrastructure CDN (réseau de diffusion de contenu), et un nombre important d’entre eux sont écrits en Python. Les périphériques réseau qui sous-tendent une grande partie du CDN sont principalement gérés par les applications Python.
Metaflow s’intègre également à Batch, la plateforme de calcul basée sur les conteneurs AWS. Netflix soutient que Metaflow sur AWS permet aux développeurs d’obtenir la vitesse de développement sur un ordinateur portable, avec les ressources de calcul plus profondes disponibles dans le cloud. En production, dans le cadre de l’open source, Netflix veut compter sur AWS Step Functions à la place de Meson – son cadre général où les utilisateurs peuvent exporter leurs cycles Metaflow pour exécution avec une seule commande. Meson n’est pas disponible en open source.