Cet article explore l'importance d'une structure solide dans les projets de machine learning et présente CookieCutter, un outil puissant pour organiser vos travaux de data science. Vous y découvrirez les principes clés d'une analyse de données reproductible, notamment l'approche DAG (graphe orienté acyclique), l'importance des données brutes immuables, et l'utilisation judicieuse des notebooks et du code source. L'article souligne également l'importance de la documentation des expériences de modélisation et offre des conseils pratiques pour améliorer la qualité et la reproductibilité de vos projets de machine learning. Une lecture essentielle pour tout data scientist cherchant à professionnaliser sa démarche et à optimiser ses flux de travail.
La technique est indispensable. C’est bien souvent par elle que commence le progrès. Ce n’est qu’après que les chercheurs interviennent en l’intellectualisant; c’est du moins ce que soutient Nicolas Nassim Taleb dans « antifragile »
Toutefois la technique n’est pas tout. Avoir une structure clair et bien pensée permet d’aller plus loin et plus vite sur le long terme.
Et en Datascience, on a la chance que CookieCutter s’en soit occuper en concevant une template auquel notre projet devrait s’efforcer de ressembler. Car suivre rigoureusement quelque chose sans se poser des questions n’est jamais une bonne chose; alors n’hésitez pas à prendre vos liberté et adapter la structure à votre cas!
Cookie Cutter - Qu’est-ce que c’est ?
Cookie Cutter est un cli qui permet de générer une structure pour les projets data science.
Il rajoute une grosse part de « sérieux » et donne enfin cet aspect « industrieux » qui manque tant à notre discipline.
On n’est plus au niveau d’un data-scientist qui crée 2-3 notebooks et de la data dans tous les sens. Avec qui on peut avoir quelques rapports et analyses bien jolis, mais les étapes pour l’obtenir sont ésotériques et brumeux. La reproductibilité du code est jeté aux oublis. Alors que c’est un point essentiel de la qualité du code.
Un code qui permet de retrouver des résultats corrects et reproductibles.
Cela se fait en 2 commandes :
pip install cookiecutter-data-science
ccds
On obtient alors la structure suivante , modulo quelques changement selon les paramètres de votre projet
Les éléments les plus importants d'une analyse de données de qualité sont la justesse et la reproductibilité.
—> Toute personne doit pouvoir relancer votre analyse en utilisant uniquement votre code et les données brutes pour obtenir les mêmes résultats finaux.
Pour cela, il faut considérer votre pipeline d'analyse comme un DAG, où chaque étape est un nœud dans un graphe orienté sans boucle.
Vous pouvez exécuter le graphe dans un sens pour recréer n'importe quel résultat d'analyse, ou le parcourir en sens inverse pour examiner la combinaison de code et de données qui a conduit à ce résultat
Dans une analyse de données vue comme un graphe orienté acyclique (DAG), les données brutes doivent rester immuables. Vous pouvez les lire et les copier pour créer de nouveaux résultats, mais ne les modifiez jamais directement.
À éviter :
À noter, qu’il faut éviter des mettre sa donnée dans les sources control tels que git. Mettez les plutôt dans un cloud ( S3, Azure Blob storage …) ou dans un serveur on-prem.
Le folder « data/» devrait aller directement dans le .gitignore
Les notebooks, comme Jupyter Notebook ou Apache Zeppelin, sont excellents pour l'exploration des données et la visualisation rapide des résultats. Cependant, ils sont moins adaptés pour reproduire une analyse. Le code source est supérieur pour la répétabilité car il est plus portable, plus facile à tester et à relire.
Évitez de répéter le même code dans plusieurs notebooks.
‼️ Les signes que vous êtes prêt à passer du notebook au code source incluent :
💡Tips : Exécuter cela dans la première cellule du notebook
%load_ext autoreload
%autoreload 2
Pour que les changements dans votre code source soient pris en compte dans votre notebook directement.
Documenter les expériences de modélisation est essentiel pour assurer la reproductibilité, l'apprentissage continu et l'amélioration. Vous devez mettre en place des procédures de documentation permettant d'identifier au minimum
Vous pouvez même utiliser des outils plus avancés tel que MLFlow.
• Latest new on data engineering
• How to design Production ready AI Systems
• Curated list of material to Become the ultimate AI Engineer