Stage : Data Scientist & ML Engineer

LLM, IA générative, computeur vision, Python

Résumé du Stage

Nous sommes partis d'un constat simple : bien que les Large Language Models (LLM) soient extrêmement performants pour la compréhension et la génération de texte, ils montrent des faiblesses lorsqu'il s'agit de tâches nécessitant des connaissances spécifiques ou des capacités multimodales, comme le traitement d'images. Pourtant, certains modèles de machine learning, ou plus simplement des fonctions spécifiques, peuvent exceller dans ces tâches.

Objectif du Stage :

L'objectif était donc simple : durant ce stage, un Proof of Concept (POC) a été développé pour démontrer l'efficacité d'une architecture hybride basée sur un Large Language Model (LLM) appuyé par des plugins spécialisés.

Architecture Mise en Place :

Voici quelques éléments pour mieux comprendre l'architecture développée :

Architecture du Modèle
Partie 1 :
  • Formation du premier prompt à partir de la liste de plugins, de la requête et du template
  • Sélection du plugin par le (M)LLM
  • Si le plugin demande des paramètres :
    • Récupération de la documentation du plugin
Partie 2 :
  • Formation du deuxième prompt à partir de la documentation, de la requête et du template
  • Génération du JSON
  • Optionnel : Redirection si le plugin sélectionné est jugé inapproprié par le (M)LLM
  • Exécution du plugin

Évaluation des Performances :

Nous avons créé notre propre benchmark pour évaluer l'efficacité de la sélection des plugins et la génération des paramètres. Les résultats obtenus montrent des précisions très satisfaisantes avec un score de 98,9 % de réussite pour la sélection du plugin et de 93,4 % pour la génération des paramètres.

Développement des Plugins :

Des plugins ont été développés pour illustrer des cas d'usage importants dans un contexte industriel. Chaque plugin a été conçu pour répondre à des besoins spécifiques et optimiser le traitement des données dans diverses situations.

RAG Plugin :

Le plugin RAG (Retrieval-Augmented Generation) a été développé et optimisé pour répondre à des questions dans des domaines spécifiques où une base de connaissances est disponible. Ce plugin permet de fournir des réponses précises en s'appuyant sur cette base de connaissances tout en citant les sources utilisées. Il est particulièrement efficace pour des applications où l'exactitude et la traçabilité des informations sont cruciales.

RAG Plugin
Nous avons également étudié des améliorations telles que la recherche hybride de documents, le re-ranking des documents et la reformulation des questions (avec HyDE) pour améliorer la pertinence des documents récupérés.
Présentation d'OWLv2

OWLv2 est un modèle avancé de détection d'objets utilisant un vocabulaire ouvert, capable de reconnaître des objets qu'il n'a pas explicitement appris à détecter lors de son entraînement. Grâce à une méthode d'auto-formation (self-training) et à l'exploitation de données massives provenant d'Internet, OWLv2 élargit considérablement sa base de données d'entraînement, atteignant une grande précision même sur des objets inconnus via la détection zéro-shot. Cette technologie repose sur des embeddings sémantiques qui permettent de transférer les connaissances d'objets connus à des objets inconnus.

Cas d'usage :
  • Comptage en zone dense : OWLv2 peut être utilisé pour compter avec précision des objets dans des environnements denses, comme des foules ou des ensembles de produits en magasin, en exploitant sa capacité à identifier un grand nombre d'éléments différents.
  • Identification zéro-shot avec un text query : En fournissant au modèle une image et une liste de termes (text query), OWLv2 est capable d'identifier des objets qu'il n'a jamais rencontrés pendant sa phase d'apprentissage, démontrant ainsi sa puissance dans des scénarios où l'inventaire des objets est constamment en évolution.
Image 1

Comptage d'objets en zone dense. Résultat lorsqu'on demande d'identifier les "block".

Image 2

Identification d'objets. Résultat lorsqu'on demande d'identifier “hat”, “book”, “sunglasses”, “camera”.

Plugin de Classification :

Le plugin de Classification a été développé pour effectuer des tâches de catégorisation automatique en utilisant un fine-tuning du modèle de vision YOLOv8. Ce plugin est essentiel pour des applications telles que la classification d'images de produits défectueux ou normaux sur une chaîne de distribution, par exemple.

Exemple de Classification

Exemple d'application du plugin de Classification : détection la présence et l'absence de casque

Plugin SQL: DrugReviewSQLSearch

DrugReviewSQLSearch est un plugin conçu pour interagir avec une base de données contenant des informations sur les médicaments, associées à une maladie, un commentaire, une note, et une date. Ce plugin sert à interroger la base de données afin de récupérer des informations pertinentes, telles que :

Plugin de restriction : Other

Le plugin Other est conçu pour gérer les questions qui ne relèvent d'aucun domaine spécifique couvert par les autres plugins. Lorsque le plugin Other est invoqué, il retourne la réponse suivante : "Cette requête ne fait pas partie de mon domaine d'expertise." Il sert en quelque sorte de plugin par défaut et assure que le LLM ne donne pas de réponses inappropriées ou imprécises dans des domaines non prévus pour être traités.

Optimisation de l'Architecture :

Pour optimiser notre architecture, nous avons utilisé des librairies telles que vLLM et le traitement par batch, ce qui a permis d'obtenir des gains de performance significatifs, notamment un gain de performance avec un facteur de 14 sur le temps d'inférence. Nous avons également envisagé des métriques pour un futur déploiement, afin d'estimer le coût et le temps d'inférence.

Gestion des Erreurs en Contexte Industriel :

Dans un contexte industriel, où les risques d'erreur ne sont pas permis, il est crucial que le LLM soit capable de reconnaître ses limites. C'est pourquoi nous avons introduit un plugin de restriction. Ce plugin est sélectionné par défaut lorsque aucun autre plugin ne convient, et il cadre le champ d'expertise du LLM en renvoyant une réponse du type "Ceci ne fait pas partie de mon domaine d'expertise".

Conclusion :

Toutes ces recherches ont été utilisées dans la réalisation du Proof of Concept (POC), où nous avons démontré la faisabilité de notre architecture. Par souci de disponibilité des données open source, nous avons appliqué ce POC au domaine médical. Les cas d'usage illustrés dans la démonstration montrent un système piloté automatiquement par un LLM, avec une gestion dynamique de l'ajout et de la suppression des plugins, permettant un LLM complètement modulable et adaptable aux besoins spécifiques de l'industrie.

Pour illustrer concrètement ces concepts, une démo vidéo a été réalisée. Cette vidéo montre comment le système fonctionne en temps réel, en mettant en évidence l'efficacité de l'architecture dans des scénarios pratiques. Elle démontre également la facilité avec laquelle les plugins peuvent être ajoutés ou retirés, offrant une flexibilité maximale pour répondre aux besoins spécifiques de chaque application.