Planification des notebooks Jupyter sur Meta

Blog

MaisonMaison / Blog / Planification des notebooks Jupyter sur Meta

Jul 21, 2023

Planification des notebooks Jupyter sur Meta

Chez Meta, Bento est notre plate-forme interne de notebooks Jupyter qui est exploitée par de nombreux utilisateurs internes. Les blocs-notes sont également largement utilisés pour créer des rapports et des flux de travail (par exemple, effectuer des tâches).

Chez Meta, Bento est notre plate-forme interne de notebooks Jupyter qui est exploitée par de nombreux utilisateurs internes. Les blocs-notes sont également largement utilisés pour créer des rapports et des flux de travail (par exemple, effectuer un ETL de données) qui doivent être répétés à certains intervalles. Les utilisateurs disposant de tels ordinateurs portables devraient se rappeler d'exécuter manuellement leurs ordinateurs portables à la cadence requise – un processus que les gens pourraient oublier car il n'évolue pas avec le nombre d'ordinateurs portables utilisés.

Pour résoudre ce problème, nous avons investi dans la création d'une infrastructure de notebooks planifiés qui s'intègre parfaitement au reste des outils internes disponibles chez Meta. Investir dans les infrastructures permet de garantir que la confidentialité est inhérente à tout ce que nous construisons. Cela nous permet de continuer à créer des solutions innovantes et précieuses dans le respect de la confidentialité.

La capacité de répondre de manière transparente aux questions sur le flux de données via les méta-systèmes à des fins de confidentialité des données et de respect des réglementations différencie la mise en œuvre de nos ordinateurs portables programmés du reste du secteur.

Dans cet article, nous expliquerons comment nous avons marié Bento avec notre framework de pipeline ETL par lots appelé Dataswarm (pensez à Apache Airflow) d'une manière respectueuse de la confidentialité et du lignage.

Chez Meta, nous nous engageons à améliorer la confiance dans la production en effectuant des analyses statiques sur les artefacts planifiés et en maintenant des récits cohérents autour des flux de données en tirant parti des opérateurs Dataswarm transparents et des annotations de données. Les ordinateurs portables posent un défi particulier car :

Ces trois considérations ont façonné et influencé nos décisions de conception. En particulier, nous avons limité les blocs-notes pouvant être planifiés à ceux qui effectuent principalement des ETL et à ceux qui effectuent des transformations de données et affichent des visualisations. Les ordinateurs portables présentant d'autres effets secondaires sont actuellement hors de portée et ne peuvent pas être programmés.

Il existe trois composants principaux pour la prise en charge des blocs-notes planifiés :

Afin de répondre à la majorité des problèmes soulignés ci-dessus, nous effectuons l'état d'exécution du notebook dans un conteneur sans accès au réseau. Nous exploitons également les annotations de données d'entrée et de sortie pour afficher le flux de données.

Pour ETL, nous récupérons les données et les écrivons d'une manière nouvelle :

Nous avons intégré BentoOperator dans le cadre de finalité des données de Meta pour garantir que les données sont utilisées uniquement aux fins prévues. Ce cadre garantit que l'objectif d'utilisation des données est respecté à mesure que les données circulent et sont transmuées à travers la pile de Meta. Dans le cadre de la planification d'un bloc-notes, une « zone de politique d'objectif » est fournie par l'utilisateur et sert de point d'intégration avec le cadre d'objectif des données.

Explorons maintenant le workflow de planification d'un notebook :

Nous avons exposé le point d'entrée de planification directement à partir de l'en-tête du bloc-notes, il suffit donc aux utilisateurs d'appuyer sur un bouton pour commencer.

La première étape du flux de travail consiste à configurer certains paramètres qui seront utilisés pour générer automatiquement le pipeline pour la planification.

L'étape suivante consiste à prévisualiser le pipeline généré avant la création d'un diff Phabricator (l'outil de révision des différences de Meta).

En plus du code de pipeline pour exécuter le notebook, le notebook lui-même est également archivé dans le contrôle de code source afin de pouvoir être examiné. Les résultats de la tentative d'exécution du portable dans le cadre d'une configuration planifiée sont également inclus dans le plan de test.

Une fois que le diff a été examiné et atterri, le planning commence à s'exécuter le lendemain. Dans le cas où l'exécution du notebook échoue pour une raison quelconque, le propriétaire du planning est automatiquement informé. Nous avons également créé une extension du volet contextuel directement dans Bento pour faciliter le débogage des exécutions de notebook.

Bien que nous ayons relevé le défi de la prise en charge des blocs-notes planifiés dans le respect de la confidentialité, les blocs-notes pouvant être planifiés sont limités à ceux qui effectuent un ETL ou à ceux qui effectuent une analyse de données sans autres effets secondaires. Cela ne représente qu’une fraction des blocs-notes que les utilisateurs souhaitent planifier à terme. Afin d'augmenter le nombre de cas d'utilisation, nous investirons dans la prise en charge d'autres sources de données transparentes en plus de la cellule SQL.