Docker pour les Data Scientists : Rôles, MLOps et Insights Open Source

Datanami

La question de savoir de quelle quantité de connaissances Docker un data scientist a réellement besoin suscite souvent une réponse nuancée : cela dépend. À mesure que le paysage du travail des données évolue, comprendre où et comment les technologies de conteneurisation comme Docker s’intègrent dans les flux de travail quotidiens devient crucial, en particulier à mesure que des solutions open source comme Buildpacks émergent pour simplifier cette intégration.

Pour saisir l’image complète, il est essentiel de différencier les divers rôles au sein des disciplines des données. Un analyste de données se concentre généralement sur l’exploration et l’interprétation des données existantes, extrayant des informations par le nettoyage, la visualisation, l’analyse statistique et le reporting, souvent en utilisant des outils tels que SQL, Excel, des plateformes de Business Intelligence, et parfois Python ou R pour le scripting. En revanche, un data scientist construit des modèles et des algorithmes sophistiqués en utilisant des techniques statistiques et d’apprentissage automatique avancées. Leur travail couvre l’ensemble du cycle de vie, de la collecte et du nettoyage des données à la construction, l’évaluation et, fréquemment, le déploiement de modèles, nécessitant une boîte à outils étendue qui comprend Python, R, divers frameworks d’apprentissage automatique (comme TensorFlow, PyTorch et scikit-learn), SQL, et une familiarité croissante avec les plateformes cloud. L’ingénieur de données, une spécialisation plus récente, est responsable de la conception, de la construction et de la maintenance de l’infrastructure et des systèmes sous-jacents qui permettent aux data scientists et aux analystes d’accéder et d’utiliser efficacement les données. Cela implique la construction de pipelines de données, la gestion de bases de données, le travail avec des systèmes distribués et l’assurance de la qualité et de la disponibilité des données, en s’appuyant fortement sur les compétences en ingénierie logicielle, en gestion de bases de données et en informatique distribuée.

Bien que les ingénieurs de données emploient souvent de nombreux principes et outils associés à DevOps, c’est une simplification excessive de les étiqueter simplement comme des « gens de DevOps ». Les ingénieurs de données possèdent une compréhension approfondie des structures de données, du stockage, de la récupération et des frameworks de traitement qui vont au-delà des opérations informatiques typiques. Cependant, le passage à l’infrastructure cloud et l’adoption de pratiques telles que l’Infrastructure as Code et l’Intégration Continue/Livraison Continue (CI/CD) ont considérablement convergé les compétences requises pour l’ingénierie des données avec celles de DevOps.

Cette convergence est peut-être la plus évidente avec l’essor de MLOps, un domaine spécialisé à l’intersection de l’apprentissage automatique, de DevOps et de l’ingénierie des données. MLOps applique les principes et pratiques de DevOps au cycle de vie de l’apprentissage automatique, visant à déployer, surveiller et maintenir de manière fiable et efficace les modèles d’apprentissage automatique dans des environnements de production. Cela implique l’opérationnalisation de divers artefacts d’apprentissage automatique – des modèles et pipelines aux points de terminaison d’inférence. Au-delà des outils DevOps standards, MLOps introduit des exigences et des outils spécifiques, tels que des registres de modèles, des magasins de fonctionnalités et des systèmes de suivi des expériences et des versions de modèles, représentant une spécialisation distincte au sein du paysage DevOps plus large, adaptée aux défis uniques de la gestion des modèles ML.

Au cours des dernières années, Kubernetes est devenu la norme de facto pour l’orchestration de conteneurs à grande échelle, offrant un moyen robuste et évolutif de gérer les applications conteneurisées. Cette adoption, principalement motivée par les aspects ingénierie et opérations pour ses avantages en matière de scalabilité, de résilience et de portabilité, a inévitablement un impact sur les autres rôles qui interagissent avec les applications déployées. À mesure que les modèles d’apprentissage automatique sont de plus en plus déployés en tant que microservices dans des environnements conteneurisés gérés par Kubernetes, les data scientists se retrouvent à devoir comprendre les bases du fonctionnement de leurs modèles en production. Cela commence souvent par la compréhension des fondamentaux des conteneurs, Docker étant l’outil de conteneurisation le plus répandu. Apprendre un outil d’infrastructure comme Docker ou Kubernetes est une entreprise très différente de la maîtrise d’une application comme un tableur ; cela implique de comprendre des concepts liés aux systèmes d’exploitation, au réseau, aux systèmes distribués et aux flux de travail de déploiement, représentant une étape significative dans le domaine des pratiques d’ingénierie d’infrastructure et logicielle.

Les conteneurs jouent un rôle fondamental à diverses étapes d’un pipeline ML. Pendant la préparation des données, des étapes comme la collecte, le nettoyage et l’ingénierie des caractéristiques peuvent être conteneurisées pour garantir des environnements et des dépendances cohérents. Les tâches d’entraînement de modèles peuvent s’exécuter dans des conteneurs, simplifiant la gestion des dépendances et la mise à l’échelle sur différentes machines. Les conteneurs sont également essentiels pour les pipelines CI/CD pour le ML, permettant la construction, le test et le déploiement automatisés des modèles et du code associé. Bien qu’un registre de modèles lui-même ne soit pas conteneurisé par un data scientist, le processus de poussée et de récupération des artefacts de modèles s’intègre souvent aux flux de travail conteneurisés. Le service de modèles est un cas d’utilisation principal, les modèles étant généralement servis dans des conteneurs pour la scalabilité et l’isolation. Enfin, les outils d’observabilité pour la surveillance de l’utilisation, de la dérive des modèles et de la sécurité s’intègrent fréquemment aux applications conteneurisées pour fournir des informations sur leurs performances et leur comportement.

Malgré l’accent croissant mis sur la conteneurisation, une partie importante du travail de science des données fonctionne toujours en dehors des environnements conteneurisés. Toutes les tâches ou tous les outils ne bénéficient pas immédiatement ou ne nécessitent pas la conteneurisation. Des exemples incluent l’exploration initiale des données et l’analyse ad hoc, souvent menées localement dans un notebook Jupyter ou un environnement de développement intégré sans le surcoût de la conteneurisation. De même, l’utilisation de logiciels statistiques basés sur le bureau, le travail avec de grands ensembles de données sur des clusters partagés traditionnels, ou l’exécution de scripts simples planifiés pour l’extraction ou le reporting de données pourraient ne pas nécessiter de conteneurisation. Les systèmes ou outils hérités plus anciens manquent souvent également de support natif pour les conteneurs.

La prévalence et la commodité de ces options non conteneurisées signifient que les data scientists s’y orientent souvent. Les conteneurs peuvent représenter une charge cognitive significative – une autre technologie à apprendre et à maîtriser. Cependant, les conteneurs offrent des avantages convaincants pour les équipes de science des données, notamment en éliminant les incohérences d’environnement et en prévenant les conflits de dépendances entre les différentes étapes, du développement local à la mise en scène et à la production. Ils facilitent également des builds reproductibles et portables et le service de modèles, qui sont des fonctionnalités très souhaitables pour les data scientists. Toutes les équipes de données ne peuvent pas se permettre de grandes équipes d’opérations dédiées pour gérer ces complexités.

C’est là que les Cloud Native Buildpacks offrent une solution simplifiée. Les data scientists traitent fréquemment de diverses chaînes d’outils impliquant des langages comme Python ou R et une multitude de bibliothèques, ce qui conduit à une gestion complexe des dépendances. L’opérationnalisation de ces artefacts nécessite souvent d’assembler et de maintenir manuellement des Dockerfiles complexes. Les Buildpacks modifient fondamentalement ce processus en automatisant l’assemblage des dépendances de build et d’exécution nécessaires et en créant des images compatibles OCI sans instructions Dockerfile explicites. Cette automatisation réduit considérablement la charge opérationnelle sur les data scientists, les libérant des préoccupations d’infrastructure et leur permettant de se concentrer sur leurs tâches analytiques principales. En tant que projet en incubation de la CNCF, les Cloud Native Buildpacks sont un outil open source maintenu par une communauté issue de diverses organisations, trouvant une utilité substantielle dans l’espace MLOps.