Contrôle de version avec Git pour les professionnels de l’analyse
Par : Collin Brown, Statistique Canada
Le déroulement des opérations en analyse et science des données est plus complexe que jamais : un plus grand nombre de données doivent être analysées, le prix des ressources informatiques continue à diminuer et on assiste à un afflux de disponibilité de logiciels libres.
Pour ces raisons ainsi que d'autres, un nombre significatif de professionnels de l'analyse sans formation en informatique classique se sont tournés vers la programmation. Ces progrès ont permis aux professionnels de l'analyse d'étendre la portée de leur travail, d'accomplir de nouvelles tâches et d'utiliser ces outils pour en améliorer la valeur.
Toutefois, cette rapide adoption de la programmation par des professionnels de l'analyse a introduit de nouvelles complexités et en a exacerbé d'anciennes. Dans le déroulement des opérations de l'informatique classique (comme le développement de logiciels), de nombreux outils et techniques ont rigoureusement été développés au cours des décennies pour s'adapter à cette complexité.
À mesure qu'un plus grand nombre de professionnels de l'analyse intègrent la programmation et l'utilisation de logiciels libres à leur travail, l'adoption de certaines pratiques exemplaires de l'informatique peut également leur être particulièrement bénéfique en leur permettant de gérer les analyses et le déroulement d'opérations complexes.
Quand les professionnels de l'analyse devraient-ils utiliser des outils et techniques pour gérer la complexité? Prenons l'exemple de l'enjeu du contrôle de version d'un code source. En particulier, comment plusieurs professionnels de l'analyse peuvent-ils travailler sur un même code de base sans entrer en conflit et comment peuvent-ils rapidement revenir à des versions antérieures du code?
Utilisation de Git pour le contrôle de version
Même sans connaître les détails de Git, le scénario suivant démontrera les avantages d'un tel outil.
Imaginez qu'une petite équipe de professionnels de l'analyse utilise Git (en anglais uniquement) (puissant outil généralement utilisé en génie logiciel) et GCCode (instance interne de GitLab (en anglais uniquement) du gouvernement du Canada).
Les trois professionnels de l'analyse (Jane, Jean et Janice) créent un rapport mensuel faisant intervenir la production de statistiques descriptives et l'estimation de certains paramètres de modèle. Le code qu'ils utilisent pour mettre en œuvre cette analyse est rédigé en Python et les ensembles de données sur lesquels ils effectuent leur analyse sont enregistrés à un emplacement de fichiers partagés auquel ils ont tous accès. Ils doivent produire le rapport le jour où le nouvel ensemble de données est reçu et, ensuite, l'envoyer à leur gestion supérieure pour examen.
L'équipe utilise GCCode pour gérer de manière centrale leur code source et la documentation rédigée en gitlab flavoured markdown (article en anglais). Ils utilisent une version simplifiée d'un modèle de ramification git efficace (article en anglais) pour éviter les conflits lorsqu'ils acheminent individuellement le code vers le répertoire. L'équipe utilise une approche d'examen interne pour les propositions de révision (PR); ce qui signifie qu'une personne autre que celle ayant soumis la PR doit examiner et approuver les modifications apportées dans la PR.
Ce mois-ci est particulier; sans grand préavis, le superviseur informe l'équipe d'un changement de format dans lequel l'un des ensembles de données est reçu. Ce changement de format est important et nécessite des modifications importantes au code de base de l'équipe. En particulier, une fois les modifications apportées, le code prendra en charge le prétraitement des données au nouveau format, mais ne prendra plus en charge l'ancien format.
Les trois employés se répartissent rapidement les responsabilités pour intégrer les modifications nécessaires au code de base :
- Jane rédigera le nouveau code nécessaire pour prendre en charge le nouveau format de données;
- Jean rédigera les tests automatisés qui vérifieront la justesse du code de Jane;
- Janice mettra à jour la documentation pour décrire les changements du format des données.
L'équipe a employé de bonnes pratiques de contrôle de version; la branche principale de leur répertoire central sur GCCode est à jour et applique correctement l'analyse nécessaire pour produire les rapports des mois précédents.
Jane, Jean et Janice commencent par l'extraction à partir de leur répertoire sur GCCode pour s'assurer que chacun de leur répertoire local est à jour. Une fois cette étape effectuée, ils extraient chacun une nouvelle branche de la branche principale. Du fait de la taille réduite de l'équipe, ils choisissent d'omettre la majeure partie des données supplémentaires présentées dans l'article un modèle de ramification efficace (article en anglais) et extraient uniquement leurs propres branches directement de la branche principale.
Les trois employés travaillent à leur poste de travail local, validant leurs modifications au fur et à mesure tout en suivant de bonnes pratiques de validation (article en anglais). À la fin de la journée de travail, ils archivent leurs branches sur le répertoire distant. Le répertoire distant comprend alors trois nouvelles branches présentant chacune plusieurs sauvegardes différentes de la branche principale. Chacun désigne l'un des deux autres membres de l'équipe comme pair devant procéder à l'examen et, le lendemain, l'équipe approuve les changements et fusionne la branche de chaque membre à la principale.
Le jour où le rapport doit être généré, ils exécutent le nouveau code, génèrent le rapport avec succès et l'envoient à leur haute direction en ayant utilisé les nouvelles données.
Plus tard ce jour-là, ils reçoivent une demande urgente de reproduire les rapports des trois mois précédents à des fins de vérification. Du fait du changement de code pour prendre en charge le nouveau format de données, le code actuel n'est plus compatible avec les ensembles de données antérieurs.
Git à la rescousse!
Heureusement, l'équipe utilise Git pour gérer son code de base. Parce que l'équipe utilise Git, elle peut effectuer une extraction selon la sauvegarde précédant l'application des changements et retourner temporairement le dossier de travail à l'état précédant changements. Maintenant que le dossier a été modifié, l'équipe peut produire rétroactivement les trois rapports à partir des données des trois mois précédents. Enfin, elle peut ensuite procéder à une extraction selon la sauvegarde la plus récente de la branche principale, pour pouvoir utiliser le nouveau code de base maintenant adapté au changement de format.
Même si la situation décrite ci-dessus correspond à un déroulement d'opérations d'analyse, l'équipe a pu utiliser Git pour éviter une situation qui aurait, sans cela, été très gênante et chronophage.
En savoir davantage sur Git
Votre travail tirerait-il profit de l'utilisation des pratiques décrites ci-dessus? Vous ne connaissez pas Git? Voici quelques ressources pour vous lancer :
- La première partie du tutoriel en anglais Fonctionnement de Git (en anglais uniquement) d'IBM fournit un modèle abstrait du fonctionnement de Git et présente bon nombre des termes techniques relatifs à Git et leur lien avec ce modèle.
- L'article en anglais un modèle de ramification efficace (en anglais uniquement) fournit un guide sur la façon de réaliser des travaux de programmation en collaboration, à l'aide d'un modèle ramifié et d'un cadre de travail pouvant être ajusté à des besoins particuliers.
- Le Manuel de Git fournit un examen très détaillé du processus de fonctionnement de Git. Il est divisé en sections, permettant ainsi de passer en revue les portions les plus pertinentes pour votre cas d'utilisation.
Quelles sont les étapes suivantes?
Appliquer le contrôle de version à un code source n'est qu'une des nombreuses pratiques inspirées de l'informatique pouvant être appliquées au déroulement des opérations de l'analyse et de la science des données.
Outre le versionnage du code source, de nombreux professionnels de la science des données et de l'analyse peuvent tirer profit du versionnage des données (voir l'article en anglais Contrôle de version de données pour une application de ce concept) ou du versionnage de modèles (p. ex. voir l'article en anglais Versionnage de modèle MLFlow).
Outre le versionnage, les professionnels en analyse peuvent avoir recours à de nombreuses autres pratiques informatiques comme des essais automatisés (article en anglais), respecter des normes de codage (p. ex. l'article en anglais guide de style PEP 8 de Python) et des outils de gestion d'environnements et de progiciels (p. ex. l'article en anglais pip et environnements virtuels dans Python).
Ces ressources sont d'excellentes sources pour commencer à explorer la façon dont des pratiques informatiques de gestion de la complexité peuvent être utilisées pour améliorer le déroulement des opérations d'analyse et de science des données!
- Date de modification :