
Pouvez-vous vous présenter ?
Je suis Mathias Chouet, ingénieur au Cirad. Au sein de Pl@ntNet, je m’occupe d’une partie du développement informatique, essentiellement du backend et des bases de données.
En quoi consiste votre travail chez Pl@ntNet ?
Essentiellement, je développe des logiciels et j’administre une base de données.
Je travaille sur une partie de la suite logicielle qui assure le fonctionnement de Pl@ntNet. Je développe des parties de logiciels que l’on appelle le backend, c’est-à-dire non pas les interfaces que voient les utilisateurs, mais les composants qui font le lien entre la base de données, l’infrastructure matérielle et les couches supérieures du logiciel.
De plus, je travaille aussi sur la gestion des données, qui sont très nombreuses, et sur la disponibilité de ces données de façon rapide, efficace, pérenne et fiable pour les millions d’utilisateurs.
Au quotidien, je contribue à faire en sorte que tout ce qui se passe derrière l’application fonctionne correctement. Les utilisateurs voient l’application mobile ou le site Web. Moi, je travaille plutôt sur les services qui leur permettent d’accéder aux données. C’est un travail qui est peu visible pour les utilisateurs, mais il est indispensable au fonctionnement de la plateforme.
Vous travaillez sur les bases de données de Pl@ntNet. Qu’est-ce qu’une base de données ?
Une base de données, c’est un logiciel qui permet de stocker de nombreuses données dans un système informatique, de façon ordonnée, solide et pérenne, pour pouvoir les retrouver très rapidement en effectuant ce qu’on appelle des requêtes.
Une requête, c’est simplement le fait de demander au système de retrouver des données en combinant parfois de nombreux critères. Le but, c’est que le système puisse répondre en une fraction de seconde.
Dans Pl@ntNet, il y a une grosse brique qui est la base de données centrale. C’est la plus ancienne et la principale. C’est elle qui contient toutes les données des utilisateurs : les observations partagées, les votes, les discussions, les comptes utilisateurs et la majorité de ce qui fait vivre la plateforme.
Quand on parle de base de données, on entend parfois le terme Data Access Layer. De quoi s’agit-il ?
Ce qu’on appelle Data Access Layer, ou DAL, est littéralement la couche d’accès aux données. C’est la couche logicielle qui se situe juste au-dessus de la base de données et de certaines ressources matérielles. C’est une brique commune à plusieurs applications. Que l’on utilise l’application mobile, l’application Web ou l’API payante, toutes ces applications viennent interroger cette même couche pour accéder aux données.
On peut voir le DAL comme un ensemble de fonctions communes, dont le code est partagé et réutilisé par plusieurs applications. Son objectif principal est de mutualiser l’accès aux données en un point unique.
Le DAL joue le rôle d’intermédiaire entre les applications et les données. Il va chercher les informations nécessaires, puis les prépare en les sélectionnant, en les organisant et en les adaptant afin qu’elles soient directement exploitables par les applications. Elles utilisent simplement des données déjà préparées selon un format commun.
Plusieurs langages de programmation sont utilisés dans Pl@ntNet. Pourquoi ?
On utilise principalement le JavaScript, aussi bien côté serveur avec Node.js que dans certaines interfaces. Il y a aussi du C++ sur la partie intelligence artificielle, du Python dans certains développements de recherche, ainsi que quelques scripts d’administration système en BASH. À côté de ça, il y a les langages utilisés pour les interfaces, comme HTML et CSS.
Au final, cela représente cinq ou six langages principaux. Chaque langage présente des avantages selon les usages.
JavaScript, par exemple, était un choix assez audacieux à l’époque, mais qui s’est révélé pertinent. Il offrait de très bonnes performances pour tout ce qui tourne autour du Web : les API, les interfaces ou encore les traitements asynchrones côté serveur.
Pour d’autres composants, d’autres langages sont simplement mieux adaptés. Chaque partie de la plateforme utilise donc les outils qui répondent le mieux à ses contraintes techniques.
Vous avez parlé d’infrastructure. C’est un terme que l’on entend souvent, mais qui n’est pas toujours très clair. Qu’entendez-vous par là ?
Pour moi, l’infrastructure, au sens large, c’est la structure qui est en dessous, littéralement.
Si on prend l’exemple d’une ville, ce seraient les routes, les conduites d’eau, les égouts, l’électricité… Tout ce qui permet ensuite de construire par-dessus. L’infrastructure ne se suffit pas à elle-même, mais elle donne la possibilité de fabriquer ce qu’on a envie de fabriquer.
En informatique, c’est la même idée. L’infrastructure, ce sont les machines, mais aussi le réseau qui les relie, le stockage des données et, plus généralement, tous les moyens matériels qui permettent aux logiciels de fonctionner.
Comme Pl@ntNet a beaucoup d’utilisateurs et énormément de données, on a besoin d’une infrastructure qui soit puissante, rapide et fiable. Il faut pouvoir stocker beaucoup de données, les lire rapidement et faire en sorte que le système continue de fonctionner même si une machine tombe en panne.
À quoi ressemble concrètement l’infrastructure de Pl@ntNet aujourd’hui ?
Elle est composée de machines physiques et de machines virtuelles.
Les machines virtuelles sont des espaces de travail qui se présentent comme des machines indépendantes, alors qu’en réalité plusieurs d’entre elles fonctionnent sur une même machine physique.
Les machines physiques sont réservées aux traitements qui demandent des performances particulièrement élevées. C’est notamment le cas de la base de données, de l’inférence sur GPU, ou d’autres traitements qui nécessitent beaucoup de ressources.
Aujourd’hui, nous avons une douzaine de grosses machines physiques et une cinquantaine de machines virtuelles.
Il y a de plus en plus d’utilisateurs, de plus en plus de données et de plus en plus de traitements à effectuer. Les besoins en capacité augmentent en permanence et l’infrastructure a évolué pour suivre cette croissance.
On tire donc parti de l’infrastructure proposée par la Direction des Systèmes d’Information (DSI) du Cirad. Elle met à disposition des machines virtuelles, des salles serveurs et des connexions réseau à très haut débit. Elle assure également des services essentiels comme les sauvegardes, une partie de la sécurité, les pare-feux ou encore l’administration de certains systèmes.
Où sont stockées toutes les images de Pl@ntNet ?
Pour le stockage, nous utilisons ISDM-MESO. L’Institut de Science des Données de Montpellier (conjointement administré par le Cirad, l’INSERM et l’Université de Montpellier) est ce qu’on appelle un mésocentre, en somme, c’est une plateforme mutualisée qui fournit des ressources informatiques (calcul intensif, stockage massif de données, traitement de données, cloud) à une communauté d’utilisateurs, et ici au service de la recherche. C’est une infrastructure régionale répartie entre Montpellier et Toulouse. Elle est particulièrement adaptée au stockage de très grands volumes de données et offre également des mécanismes de sauvegarde.
C’est là que sont stockés tous les fichiers images de Pl@ntNet.
Justement, quels sont aujourd’hui les ordres de grandeur des données manipulées par Pl@ntNet ?
En ce moment, nous avons environ un milliard et demi d’images et de métadonnées associées (une image pour chaque demande d’identification en général, rarement deux ou plus).
En matière de stockage, nous utilisons plus de 200 téraoctets de données.
Il n’y a pas seulement les images. Il y a aussi les bases de données, des cartes, des espaces de travail, des données temporaires… Tout ce qui est nécessaire au fonctionnement de la plateforme.
Si vous vous projetez dans cinq ans, comment imaginez-vous l’évolution de Pl@ntNet ?
C’est toujours difficile de répondre à ce genre de question, mais en tant qu’utilisateur de Pl@ntNet autant qu’en tant que développeur, il y a une direction qui m’intéresserait beaucoup : améliorer la qualification des données.
Pl@ntNet collecte énormément d’observations provenant de ses utilisateurs, c’est un projet de science participative. C’est une richesse énorme, mais toutes ces données n’ont pas la même qualité. Je pense qu’on pourrait aller plus loin en enrichissant progressivement les observations avec davantage d’informations descriptives.
Je crois beaucoup aux annotations collaboratives. Aujourd’hui, les utilisateurs partagent surtout des observations. Mais on pourrait aussi imaginer qu’ils enrichissent progressivement ces observations ou les espèces elles-mêmes avec des informations complémentaires.
Par exemple les traits morphologiques des espèces : décrire la forme des feuilles, la couleur des fleurs, la taille de la plante, le fait qu’il s’agisse d’un arbre, d’un arbuste ou d’une plante herbacée… Toutes ces informations ne sont pas toujours visibles sur une photographie, mais elles peuvent être très utiles.
On pourrait aussi renseigner l’habitat, le caractère cultivé ou spontané d’une plante, ou d’autres informations écologiques qui aideraient ensuite à l’identification.
En quoi cela améliorerait-il l’identification des espèces ?
L’identification repose essentiellement sur la comparaison des images. C’est très performant, mais il y a des cas où plusieurs espèces se ressemblent énormément.
Prenons un exemple caricatural : une fleur blanche avec un cœur jaune. Plusieurs espèces peuvent avoir cet aspect. En revanche, certaines auront des fleurs de cinq centimètres de diamètre et d’autres des fleurs de cinq millimètres.
Sur une photo, cette différence n’est pas forcément visible. Si l’application pouvait indiquer ces caractéristiques, l’utilisateur disposerait immédiatement d’un critère supplémentaire pour choisir entre plusieurs espèces proposées. À mon avis, cette combinaison entre l’image et les connaissances naturalistes pourrait faire progresser Pl@ntNet.
Un dernier mot?
On a beaucoup parlé de technique, mais Pl@ntNet, ce n’est pas seulement des logiciels, des bases de données ou des serveurs. C’est aussi une équipe. Chacun travaille sur un domaine différent et apporte ses compétences. Au final, c’est l’ensemble de ces métiers qui permet au projet d’avancer.