Réaliser l'étude de faisabilité (POC, pour « Proof of Concept ») d'un projet d’apprentissage automatique (ML, pour « Machine Learning ») peut ressembler à un processus profondément expérimental et décousu qui réclame davantage d’attention pour sa mise en place que pour assurer sa solidité à long terme. Pourtant, si l’on souhaite réussir la POC de son projet de ML, il est important de se réserver un peu de temps supplémentaire au début du processus afin de s’assurer que tous les résultats soient fiables et reproductibles. Dans cette série d’articles de blog, nous avons jusqu’ici abordé les différentes étapes du développement de la POC d'un projet de ML en décrivant d’une part comment identifier les objectifs commerciaux puis les traduire en métriques de ML et d’autre part comment créer un ensemble de données spécifique au projet et pertinent. Vous pourriez penser qu’une fois ces deux étapes essentielles réalisées, le moment est enfin venu de passer au développement et à l’itération du modèle, mais ce serait oublier un paramètre justement souvent négligé, à savoir l’environnement d’expérimentation. Configurer cet environnement est également une étape essentielle du processus, car la fiabilité et la reproductibilité de tout modèle utilisé dans la POC dépendent de votre compréhension des éléments qui ont contribué à créer ledit modèle, mais aussi de ceux qui n’ont pas été retenus. Il s’agit plus précisément de l’ensemble de données utilisé pour le développement, l’architecture du modèle et les artefacts d'entraînement, ainsi que des paramètres des expériences réussies. Tout cela doit faire l’objet d’un suivi. Il existe heureusement de nombreux outils et ressources pour s’assurer de disposer dès le départ d’un environnement de développement correct.
Dans le présent article de blog, nous allons voir les exigences propres à ce type d’environnement, mais aussi ce dont il faut tenir compte concernant les plates-formes disponibles, avant de conclure par quelques exemples de configurations.
Une expérimentation robuste et reproductible est la pierre angulaire d’un projet de ML réussi. Il importe en effet d’obtenir les mêmes résultats lorsqu’une même expérience est relancée ultérieurement et si un modèle plus récent s’avère nécessaire, il devrait être possible de mettre le modèle d’origine à jour en modifiant l’un de ces éléments originels. Il est indispensable que vous disposiez d’une vision claire de la constitution du meilleur modèle possible en termes d’éléments d’entrée, de paramètres et de configurations, de sorte que lorsqu’un changement survient, vous en compreniez aussi la cause. Pour ce faire, vous devez être capable d’identifier en un coup d’œil ce qui n’a pas fonctionné et de comparer de nouvelles lignes d’expérimentation pour choisir la meilleure. À cela s’ajoutent quelques autres points essentiels comme s’assurer de la fiabilité des performances du modèle de POC de façon à rencontrer un minimum de difficultés lors de la mise en production de la POC.
Cela dit, le prototypage et la constitution d’une POC sont censés être des processus rapides et impliquent une itération rapide. Du point de vue du ML, le lancement de diverses expériences avec différents modèles et des variantes de l’ensemble de données avec des paramètres de transformation et de configuration devrait être rapide. De même, si la POC s’appuie sur de grands ensembles de données ou des modèles qui nécessitent des processus volumineux ou complexes, la coordination du traitement de données ou de l'entraînement de modèles dans le cadre d’une expérience ainsi que la répétition de ce processus en parallèle d’un certain nombre d’autres expériences ne devrait pas poser de problèmes majeurs.
Même si ces deux exigences semblent contradictoires, elles ne s’excluent pas. Le problème est que bien souvent, pour gagner du temps, la mise en place d’un environnement qui devrait permettre de concrétiser ces deux objectifs apparemment concurrents est négligée. Étant donné que de nombreuses pièces du puzzle que constitue le ML (code, ensembles de données, fichiers de configuration et artefacts de modèle) doivent faire l’objet d’un suivi, il est indispensable de disposer d’une plate-forme ou d’un environnement d’expérimentation autonome où assembler ces pièces. Pour ce faire, on peut s’appuyer sur les outils disponibles ainsi que sur des plates-formes open source ou hébergées pour l’expérimentation du ML.
Il en va de la constitution d’un modèle de ML comme de la confection d’un gâteau : le résultat dépend en grande mesure des ingrédients choisis. Pour obtenir un modèle dont les résultats sont reproductibles et les performances fiables, tous les « ingrédients » doivent faire l’objet d’un suivi. Il convient donc au minimum de choisir une plate-forme capable de faciliter ce processus sans problèmes, même si cette plate-forme ne dispose pas d’autres fonctionnalités utiles comme la coordination de plusieurs tâches d'entraînement sur différentes ressources ou des capacités d’étiquetage des données à la volée. Les outils open source MLFlow et ClearML sont deux solutions couramment utilisées pour assurer le suivi des éléments constitutifs d’une expérience de ML. Ces deux outils sont relativement similaires et le choix de l’un ou de l’autre dépendra grandement de l’usage que vous en ferez. Par exemple, ClearML existe dans une édition entreprise qui offre davantage de fonctionnalités.
Tous deux peuvent être déployés comme des microservices autonomes et sont fournis avec des kits de développement logiciel qui vous permettent d’intégrer le code utilisé pour l’expérimentation afin d’assurer le suivi de divers éléments dans le cycle de vie du projet de ML. Vous avez en outre la possibilité de personnaliser l’espace de stockage dédié, ce qui s’avère utile si vous utilisez le cloud ou des ressources internes. Chacun de ces deux outils dispose d’une interface utilisateur qui permet d’inspecter les résultats d’expériences individuelles et de comparer les différentes exécutions afin de sélectionner le meilleur modèle. De même, l’un comme l’autre vous permet de conserver un enregistrement de la source de données initiale et des artefacts du modèle (configuration de l’architecture, fichiers de pondération, etc.) et d’assurer le suivi de toutes les variables de l’expérience, dont le taux d’apprentissage et la taille du lot, par exemple. Ces deux plates-formes décrivent comment construire le modèle en termes de couches et la sortie d’une exécution d'entraînement qui combine les données d’entrée, les paramètres de l’expérience et la configuration du modèle. Vous pouvez également associer des exécutions d’expérience à des versions spécifiques du code utilisé pour développer le modèle à l’aide d’outils de vérification de version comme GitHub. Enfin, ClearML dispose d’extensions utiles pour expérimenter de grands modèles de langage (ou LLM, pour « Large Language Models »).
En plus de ces deux options, il se peut que vous souhaitiez connecter davantage d’outils pour les autres aspects de l’expérimentation de ML : transformation et provenance des données, étiquetage continu, coordination des processus… C’est chose possible grâce à la plate-forme DagsHub, dont la mission est de regrouper tous les éléments du cycle de vie du projet de ML au même endroit. La mise en œuvre de plusieurs intégrations permettrait dès lors de faire fonctionner de concert toute une série d’outils couramment utilisés dans le secteur, dont Label Studio, Dagster, MLFlow ou Data Version Control. Pour les POC basées sur des LLM, d’autres fonctionnalités telles que l’étiquetage, l’évaluation et le suivi des prompts sont également disponibles.
Lorsque, dans le cadre de la création d’une POC, vous êtes prêt à commencer le développement du projet de ML, que les métriques sont établies et que l’ensemble de données est construit, il vous faut, avant de procéder à tout codage, consacrer du temps à structurer de manière appropriée un environnement d’expérimentation. Cette étape s’avère non seulement essentielle pour permettre une expérimentation rapide une fois le processus lancé, mais elle garantit surtout l’obtention de résultats reproductibles, robustes et fiables. Heureusement, l’écosystème du ML est un système mature et il existe aujourd’hui plusieurs logiciels de qualité qui peuvent être facilement déployés et connectés afin de couvrir tous les aspects du cycle de vie du projet de ML, y compris avec des modèles plus récents comme les LLM.
Nous avons jusqu’ici abordé dans cette série d’articles de blog les trois premières étapes importantes pour réussir un projet de ML, à savoir :établir des objectifs et les traduire en métriques, préparer l’ensemble de données et, comme nous venons de la voir dans le présent article, structurer l’environnement de façon à rendre l’expérimentation du projet de ML robuste mais rapide. Continuez à suivre cette série d’articles pour découvrir les étapes suivantes – et tout aussi essentielles – afin de développer une POC de ML de manière agile mais reproductible et mettre en production les résultats obtenus. Les articles suivants porteront sur les ressources et les approches utiles au développement d’une POC, notamment sur les modèles open source, les consignes et les points d’attention à respecter lors du passage à une version prête pour la production. Vous y trouverez également quelques conseils sur les points à anticiper et à surveiller après le déploiement.
Becks Simpson
Becks Simpson est responsable du Machine Learning chez AlleyCorp Nord, où des développeurs, des concepteurs de produits et des spécialistes du ML travaillent aux côtés des clients pour réaliser leurs rêves de produits IA. Pendant son temps libre, elle travaille également avec Whale Seeker, une autre startup qui utilise l’IA pour détecter les baleines afin que l’industrie et ces gentils géants puissent coexister intelligemment. Elle a travaillé dans tous les domaines du deep learning (DL) et du ML, depuis l’étude de nouvelles méthodes de DL et l’application directe de la recherche pour résoudre des problèmes réels jusqu’à l’architecture de pipelines et de plateformes pour entraîner et déployer des modèles d’IA dans la nature et conseiller des startups sur leurs stratégies d’IA et de données.