Les modèles de langage open-source – Une alternative sérieuse à ChatGPT?
Depuis le lancement du chatbot ChatGPT, nous avons exploré différentes possibilités de l’IA générative, en particulier les grands modèles de langage (large language model – LLM). Cela inclut l’utilisation des LLMs pour la génération de code et la mise en œuvre de systèmes de réponse aux questions (question answering). Jusqu’à présent, nous avons principalement utilisé le modèle propriétaire le plus populaire : OpenAI GPT3/4 (ChatGPT). Ces modèles sont faciles à utiliser et leurs capacités sont impressionnantes. Cependant, le manque de transparence et les restrictions d’utilisation inhérentes aux modèles propriétaires ont conduit, ces derniers mois, au développement rapide d’alternatives open-source.
L’article abordera deux sujets principaux. Tout d’abord, il explorera les large language models open-source en abordant leur mise en œuvre sur des machines locales, leur facilité d’utilisation et leur qualité de résultats comparée aux modèles propriétaires. Ensuite, il examinera les différentes possibilités d’amélioration des performances de ces modèles sur des tâches spécifiques.
Avantages liés à l’utilisation des large language models open-source
- La transparence. Les détails sur les données d’entraînement, les caractéristiques et l’architecture des modèles propriétaires sont souvent gardés secrets. Cela rend difficile l’identification et la résolution des problèmes liés aux biais et aux fausses informations contenues dans les données d’entraînement. En revanche, les modèles open-source permettent une plus grande transparence, car toutes les informations sont accessibles au public. Cela facilite l’identification et la résolution des problèmes.
- Le confidentialité. La confidentialité est un facteur important et constitue la principale raison de notre démarche d’exploration des modèles open-source. Les données sensibles et confidentielles peuvent être traitées en local avec des modèles open-source, évitant ainsi le risque de violation de données et d’utilisation non autorisée. En revanche, l’utilisation de modèles propriétaires hébergés sur le cloud accroît ce risque. Les modèles open-source offrent donc une solution plus sûre pour le traitement des données confidentielles à condition de disposer du hardware suffisant pour les héberger.
- Le coût. Les modèles propriétaires ont un coût important à grande échelle et leur disponibilité ne peut pas toujours être garantie. Les modèles open-source, par contre sont gratuits, ce qui les rend plus accessibles. Cependant, il est important de noter que le déploiement des modèles open-source sur des infrastructures locales entraîne des coûts supplémentaires qui doivent être pris en compte.
- L’adaptabilité. Les LLM open-source ont une plus grande flexibilité et peuvent être facilement adaptés pour répondre aux besoins spécifiques d’un domaine d’utilisation particulier.
Un tour des large language models open-source
L’un des premiers exemples de grands modèles de langage (LLM) open-source à avoir vu le jour est le modèle BLOOM. Son objectif est de démocratiser les LLM en proposant un modèle de langage équivalent à GPT-3, cependant multilingue, transparent et accessible à la communauté de recherche. Cependant, la mise en œuvre de BLOOM reste difficile car elle nécessite des infrastructures lourdes.
Par la suite, d’autres modèles beaucoup plus “légers” ont été développés. Il est impossible d’établir une liste complète ou une évaluation pertinente de tous ces modèles dans cet article car la situation évolue rapidement. Cependant, la plateforme Hugging Face est une bonne référence pour accéder à ces modèles et aux informations qui y sont associées. Lors du choix d’un modèle, il est important de vérifier les conditions d’entraînement (ensemble de données, modération incluse, etc.), les conditions d’utilisation (à des fins de recherche ou commerciales) ainsi que ses spécificités (langues et domaines d’application, orientation vers les instructions ou le chat). Voici quelques-uns des modèles les plus populaires :
- Llama 2 est une suite de modèles de différentes tailles (7b-70b1) développée par Meta et reproduite sous différentes formes : Alpaca (à des fins de recherche uniquement) et Vicuna. Il existe également une version spécifique de Llama 2 pour la génération de code.
- Phi-2 est un modèle compact (2.7b) par Microsoft pour l’expérimentation et la recherche.
- Falcon est un modèle multilingue qui a récemment occupé la première place dans le classement open LLM établi par Hugging Face. Ce modèle est plus grand que Llama 2 (40b-180b) et nécessite donc des ressources importantes pour fonctionner.
- Mistral est un modèle multilingue de “petite” taille (7b) mais très performant. La société française Mistral AI a récemment publié un nouveau modèle, Mixtral 8X7B, qui peut rivaliser avec GPT-3.5. Cela confirme la tendance dans le domaine de l’open-source à développer des modèles plus petits et plus abordables sans sacrifier les performances.
- Et enfin MPT développé par Mozaic ML est principalement destiné à une utilisation commerciale.
Déploiement et utilisation d’un LLM en local
Faire tourner un modèle en local peut être complexe. Heureusement, il existe pour cela des outils qui permettent d’accéder aux modèles via un API. Parmi les plus populaires, on retrouve les frameworks suivants :
- Llama.ccp est un moteur d’inférence spécialement conçu pour faire tourner les modèles Llama 2 et autres modèles compatibles (format GGML) sur des ressources hardware limitées. Cependant, Llama.cpp est un outil qui s’exécute en ligne de commande et ne dispose pas d’interface utilisateur.
- OLlama est un service facile d’utilisation. L’application est lancée en une ligne de commande dans un terminal Linux et l’utilisateur peut ensuite dialoguer avec le modèle.
- LMStudio et GPT4All sont des applications ayant une interface conviviale pour une expérience utilisateur « à la ChatGPT ».
- Notons aussi le projet PrivateGPT, utile pour l’utilisation des modèles en local pour interroger des documents sensibles en mode déconnecté.
Grâce aux outils décrits ci-dessus, les modèles open-source peuvent être appelés de la même manière que les modèles OpenAI à partir de bibliothèques Python telles que LangChain.
from langchain.llms import OLlama
from langchain.embeddings import OLlamaEmbeddings
llm = OLlama(base_url='http://localhost:11434',
model='Llama2_7b_fine-tuned',
temperature=0)
embeddings = OLlamaEmbeddings(base_url='http://localhost:11434',
model='Llama2_7b_fine-tuned')
Amélioration des LLM (fine-tuning)
Les LLM sont puissants et très polyvalents mais souvent peu précis lorsqu’ils sont utilisés pour une tâche ou un domaine spécifique ayant son propre langage et ses propres concepts.
Il y a plusieurs façons d’améliorer un grand modèle de langage. La première et la plus simple consiste à adapter le prompt (prompt engineering, few-shot learning) mais cela n’est pas toujours suffisant. Une autre alternative est le réglage fin ou fine-tuning à condition d’avoir accès aux modèles et ses paramètres. Cette méthode consiste à entraîner les dernières couches pour raffiner un modèle existant sur une tâche spécifique en utilisant un set de données personnalisé pour le domaine/la tâche visée. L’avantage du fine-tuning est qu’en partant d’un modèle existant, l’entraînement nécessite beaucoup moins de données (et de ressources): c’est le principe du transfer learning.
Nous avons réalisé une expérience de fine-tuning d’un LLM open-source pour l’amélioration de résultats d’un système de question-réponses en l’entrainant sur des données propres au domaine de la sécurité sociale. Les principales étapes de notre expérience sont les suivantes :
- Préparation des données de training. Les exemples d’entraînement consistent en une série de question/réponses sur le domaine de la sécurité sociale, les questions étant partiellement générées avec le modèle GPT-4. Cette étape est la plus difficile et la plus chronophage car elle requiert beaucoup de travail de collecte et de nettoyage de données.
- Sélection du modèle de base. Nous avons testé plusieurs modèles open-source mais étant donné les ressources computationnelles dont nous disposons le modèle Llama 2-7b s’est avéré le plus efficace en termes de précision/rapidité.
- Réglage fin du modèle. La bibliothèque Python « transformers » développée par Hugging Face est un bon outil pour le réglage des LLM mais cela demande un minimum de compétence pour son utilisation. Nous avons choisi pour notre expérience d’utiliser la plateforme H2O LLMstudio. Cet outil est une plateforme « no-code » où la configuration des hyperparamètres et l’entraînement s’effectuent à l’aide d’une interface utilisateur.
- Évaluation du modèle raffiné. Nous avons pu démontrer, à partir de notre expérience de fine-tuning, qu’il était possible avec peu de données d’améliorer les performances d’un modèle open-source « light » sur une tâche bien spécifique (+ 28%). Néanmoins, ces performances étaient en-dessous de celles obtenues avec le modèle GPT-4.
Enfin, l’adaptation du modèle peut également se faire par réglage fin basé sur des instructions. Cette méthode plus avancée de fine-tuning est similaire à celle décrite précédemment. En effet, on apprend au modèle à suivre des instructions en ajoutant des instructions explicites en tant qu’entrée dans les données d’entraînement. Ceci permet de raffiner le modèle de manière polyvalente c’est-à-dire de le rendre capable d’effectuer différentes tâches avec précision.
Conclusion
Les grands modèles de langage open-source offrent une transparence, une confidentialité et une adaptabilité supérieures par rapport aux modèles propriétaires. Leur gratuité constitue un avantage supplémentaire, mais il ne faut pas négliger les coûts d’inférence et de maintenance. Ces avantages en font une alternative logique et attrayante pour de nombreuses applications. Cependant, il reste du travail à faire pour rendre ces modèles de langage open-source véritablement compétitifs, notamment pour des tâches complexes telles que le raisonnement (reasoning). Néanmoins, le développement open-source évolue rapidement et l’écart de performance avec les modèles payants se réduit. Ces modèles sont certainement nécessaires pour des utilisations spécifiques qui nécessitent de travailler localement sur des données confidentielles. Il est possible de recourir à un réglage fin pour pallier leur manque de précision dans des tâches spécifiques, à condition de disposer de données pertinentes.
- Les chiffres 7b et 70b font références au nombre de paramètres du modèle. Ex: 7b = 7 milliards de paramètres. En comparaison, le modèle GPT3 a 175 milliards de paramètres. ︎
_________________________
Ce post est une contribution individuelle de Katy Fokou, spécialisée en intelligence artificielle chez Smals Research. Cet article est écrit en son nom propre et n’impacte en rien le point de vue de Smals.