user_picture

Yannis Bendi-Ouis

Doctorant en Intelligence Artificielle

Inria de Bordeaux

GPTJ-Overton : le finetuning d'un LLM Politique

Suite aux précédents travaux que j'ai réalisés lors du projet Overton, je suis ravi de vous présenter mon dernier projet : GPTJ-Overton, un chatbot spécialisé dans la politique française. C'est un projet qui me tient à cœur et pour lequel je me suis pas mal investi. Je suis très heureux de vous le présenter aujourd'hui !

L'idée derrière le projet

L'idée de créer un chatbot spécialisé dans la politique française m'est venue il y a quelques semaines. Alors que les différents LLMs (Large Language Model) étaient en train de faire leurs preuves aux yeux du monde, je me suis demandé comment je pouvais utiliser cette technologie pour créer un chatbot spécialisé dans un domaine précis. Ainsi, fort de mes précédents travaux sur le projet Overton, et notamment du jeu de donnée que j'avais pu récupérer (près de 1 Go de texte politique français), j'ai décidé de me lancer dans l'entraînement d'un chatbot spécialisé dans la politique française. J'ai conscience que mes moyens sont limités, et que je ne pourrais pas rivaliser avec les modèles de OpenAI, mais je suis tout de même déterminer à entraîner un modèle de plusieurs milliards de paramètres sur mes données, ne serait-ce que pour apprendre !

Il y a en effet de nombreuses problématiques à résoudre pour entraîner un tel modèle. La puissance de calcul nécessaire est grande, et bien supérieur à ce que nous pouvons avoir sur nos ordinateurs personnels. De plus, les données nécessaires à l'entraînement d'un tel modèle sont très importantes. Il faut donc trouver un moyen de récupérer des données de qualité, et en grande quantité. Enfin, il faut trouver un moyen de financer tout cela, car cela peut vite devenir très couteux. Ici, je me contenterai de me fixer un budget de 500 euros.

Pour ce projet, j'ai choisi d'utiliser le modèle français open-source Cedille, proposé par Cedille.ai, qui a été entraîné à partir du modèle open-source GPT-J de 6 milliards de paramètres, proposé par Eleutheria. L'avantage d'utiliser ces modèles open-source est que je ne passe pas par OpenAI, et qu'une fois entraîné le modèle que j'obtiendrai m'appartiendra ! Certes, nous ne sommes pas sur les 175 milliards de paramètres que possède GPT-3, mais cela ne nous empêche pas d'obtenir de très bons résultats !

Le POC

Avant d'entraîner le modèle sur l'ensemble de mes données (ce qui peut prendre du temps, et être très coûteux), j'ai préféré réaliser un POC me permettant d'entraîner un modèle sur un subset de mes données (environ 1%, soit 15Mo). Cela m'a permis de tester la faisabilité de mon projet, et de voir si les résultats étaient satisfaisants.

Pour cela, j'ai utilisé le modèle GPTJ-6B de 6 milliards de paramètres, proposé par Eleutheria, et j'ai entraîné le modèle sur 15Mo de données politiques françaises. L'entraînement de ce POC n'a duré qu'une petite demi-heure.

Le résultat de ce POC n'est pas un modèle avec lequel nous pouvons chatter, où à qui nous pouvons poser des questions. Il n'a pas été affiné (finetune) pour ces tâches. Il s'agit seulement d'un modèle capable de continuer un texte (trouver le prochain mot), et ayant des notions plus approfondies sur la politique française qu'un modèle lambda. Comme vous pouvez le voir sur les images ci-dessous, le modèle a été capable de générer des textes politiques cohérents et de conserver un contexte. C'est un bon début ! Nous pouvons alors passer à l'étape suivante : l'entraînement du modèle sur l'ensemble de mes données !

Résultats du POC - Example 1Résultats du POC - Example 1 Résultats du POC - Example 2Résultats du POC - Example 2 Résultats du POC - Example 3Résultats du POC - Example 3

Le processus d'entraînement

Pour entraîner mon modèle, j'ai travaillé avec un jeu de données d'environ 1Go de discours politique que j'ai enrichi avec des données extraites de Wikipedia et de Quora, pour atteindre plus de 2GB de texte, soit l'équivalent de 4000 livres de 150 pages, le tout orienté sur la politique française !

J'ai ensuite loué une grosse machine à Google pour 14$/h (4 GPU A100) pour lancer mon entraînement. Malheureusement, la machine a manqué de stockage pendant la nuit et l'entraînement s'est brusquement arrêté à 20%. Malgré cette mésaventure, j'ai tout de même pu récupérer une version du modèle ayant vu près d'un demi GB de données textuelles politiques, que j'ai ensuite pu affiner (finetune).

Résultats du Modèle - Example 1Résultats du Modèle - Example 1 Résultats du Modèle - Example 2Résultats du Modèle - Example 2 Résultats du Modèle - Example 3Résultats du Modèle - Example 3

Les résultats

Alors, qu'est-ce que ça donne ? Eh bien, je dois dire que je suis assez satisfait des résultats. Certes, GPTJ-Overton dit de grandes bêtises, et semble avoir un penchant pour l'uchronie. Mais il retient un contexte, parle très correctement français, et propose de temps en temps de très bonnes réponses. La politique est un sujet complexe, où une petite erreur peut être assez punitive (beaucoup de dates, d'événements, de valeurs ambiguës, de personnalité), mais malgré cela, le chatbot s'en sort plutôt bien.

Conclusion

En conclusion, je suis très heureux des résultats obtenus avec GPTJ-Overton. Bien sûr, ces derniers auraient pu être bien meilleur si l'entraînement n'avait pas été interrompu, ou si j'avais eu un plus gros budget pour entraîner le modèle sur plus de données. Mais je suis tout de même très satisfait de ce que j'ai pu obtenir avec un budget de 500 euros.

J'espère que ce projet vous a plu et je suis impatient de partager avec vous mes prochains travaux. Restez à l'écoute !

Yannis Bendi-Ouis