Je viens de terminer mon projet de données massives il y a quelques jours. Mon rapport étant rendu, je me suis dit qu’il pourrait être intéressant de laisser un commentaire à chaud sur cette UA, tant sur le projet lui même que sur le déroulement.
Présentation du sujet
Comme indiqué dans un précédent billet, l’objectif du projet était double :
- Extraire des actualités dominantes de flux RSS de sites d’actualités (environ 400000 enregistrements couvrant une période de 5 ans ; 5 flux RSS étaient analysés)
- Identifier des différences de traitement de l’information entre les divers flux RSS
Entre autres contraintes, je devais mettre en place une architecture de stockage capable de passer à l’échelle ainsi qu’une algorithmique adaptée. Une tolérance à la panne était par ailleurs demandée.
J’avais initialement fait le choix de Cassandra comme système de stockage (système NoSQL parfaitement adapté à ce cas d’usage). Toutefois, pour plus d’originalité, l’un de mes tuteurs m’a proposé de continuer à utiliser PostgreSQL. J’ai donc opté pour cette dernière option, couplée avec Citus qui est justement une extension à PostgreSQL permettant une notamment distribution horizontale des données (sharding). Cela m’a donné l’occasion de m’arrêter un peu plus sur PostgreSQL, ce qui n’est pas si mal.
Côté algorithmique, j’ai opté pour Spark en m’appuyant sur Spark-nlp et des modèles pré-entraînés (extraction de mots clés, extraction de sentiment et extraction de vecteurs représentatifs). Ce choix est assez consensuel mais colle bien avec la réalité du terrain.
Une fois l’infrastructure mise en place, le travail s’est déroulé en deux temps. Tout d’abord une phase de pré-traitement afin de préparer les données et d’extraire une fois pour toutes les informations nécessitant des temps de calculs important. Ensuite une phase d’analyse ou chaque utilisateur peut aller rechercher les informations utiles dans sont cas d’usage.
À travers ce sujet, j’ai pu mettre en œuvre un certain nombre d’outils dans des thématique finalement assez éloignées. Ainsi, je suis passé successivement de la mise en place d’une architecture distribuée à l’exploitation de modèles pré-entraînés, puis à une démarche d’analyse de graphes et de recherche de communautés. À chaque étape, la question de la qualité des résultats s’est posée, de même que le test des propriétés attendues, avec parfois des surprises. J’en retiens qu’il ne faut pas prendre pour argent comptant tous les résultats que l’on trouve et qu’un regard critique associé à de réels tests est absolument nécessaire. J’ai par exemple en tête l’analyse de sentiments qui s’avère être moyennement fiable dans le cas du sujet traité.
Déroulement du projet
La phase amont de définition du sujet et de la méthodologie a été très utile. Cela m’a donné un cadre clair et validé par les enseignants. Le risque de prendre une mauvaise route ou de choisir un mauvais sujet n’est jamais à exclure mais cela était moins probable ici.
J’ai travaillé sur ce sujet tout un été, juste après avoir terminé l’UE SEC201. Je craignais que les deux ne se télescopent mais cela n’a pas été le cas. La contrepartie, c’est qu’en terme de charge de travail, cela a été l’équivalent d’enchaîner directement sur un troisième semestre d’affilée au CNAM sans pause estivale pour souffler. Le volume horaire consacré a été conséquent (en moyenne deux à trois heures quotidiennes durant presque trois mois).
Je suis bien content d’en être arrivé au bout et dans les temps. Ne pas pouvoir le rendre dans les temps était l’une de mes craintes de départ mais ça s’est bien passé. Je me suis fixé assez rapidement un planning à suivre afin de voir notamment quand je prenais du retard. Il est toujours compliqué d’évaluer à l’avance le temps de chaque tâche, faute de recul, mais globalement, j’ai plutôt eu tendance à sur-évaluer le temps nécessaire à l’exécution des tâches.
Rapport
La rédaction du rapport de projet représente une part conséquente du travail à fournir. D’une certaine manière, je ne me suis pas simplifié la vie dans la mesure où je l’ai rédigé en \( \LaTeX \). Ceci dit, le résultat est nettement propre qu’avec un traitement de texte classique donc je suis très content de ce choix.
Mes livrables de projet sont disponibles ici :
Conclusion
Le travail est rendu et je suis actuellement dans l’attente des résultats. Si je valide effectivement l’UA, il ne me restera donc plus qu’à faire ma demande de diplôme.
À noter que ce sera ma dernière UE au CNAM. J’ai décidé de clôturer ce chapitre de mon parcours avec ce dernier diplôme. Ma formation restera toutefois permanente ensuite mais je souhaite avoir plus de libertés pour m’organiser et articuler ça avec tout le reste. Ça aura été une super expérience en tout cas !!!
Édit : UA et certificat de spécialisation validés :D