CI4 : Modèles de langage
Dans ce TP, vous allez découvrir concrètement comment fonctionnent les modèles Transformers à travers la bibliothèque HuggingFace Transformers. Nous allons approfondir ensemble des notions fondamentales telles que la tokenisation, l'encodage positionnel, la génération de texte ainsi que les différentes méthodes de génération proposées par les modèles pré-entraînés comme GPT-2.
Objectifs du TP :
- Comprendre le processus de tokenisation et notamment la méthode BPE (Byte Pair Encoding).
- Visualiser et analyser le rôle des encodages positionnels dans un modèle Transformer.
- Calculer les probabilités de génération d'une phrase à partir d'un modèle GPT-2 en utilisant la dérivation causale.
- Expérimenter et comparer différentes méthodes de génération telles que le décodage glouton, les méthodes par échantillonnage (top-k, top-p, température) et la recherche par faisceau (beam search).
Tout au long du TP, vous utiliserez des exemples pratiques et effectuerez des expérimentations pour renforcer votre compréhension.
Découverte du tokenizer GPT-2
Dans cet exercice, vous allez découvrir le concept de tokenisation, qui est une étape fondamentale du traitement du langage naturel (NLP). La tokenisation consiste à découper une phrase ou un texte en unités élémentaires appelées tokens. Nous utiliserons un tokenizer pré-entraîné basé sur le mécanisme de Byte Pair Encoding (BPE). Le BPE est une méthode permettant de découper des mots en sous-mots en fonction de leur fréquence dans les données d'entraînement du modèle.
Pour cet exercice, nous utiliserons le tokenizer associé au modèle GPT-2 de Hugging Face. Il vous faudra pour cela installer la bibliothèque transformers. Vous pouvez consulter la documentation complète ici.
"Artificial intelligence is metamorphosing the world!"
Pourquoi certains tokens commencent-ils par un symbole spécial ?
Le tokenizer GPT-2 découpe les mots fréquents en tokens entiers, tandis que les mots rares ou complexes sont divisés en sous-mots précédés de l'espace (ex : " artificielle"). De plus, la ponctuation est traitée comme des tokens séparés.
"GPT models use BPE tokenization to process unusual words like antidisestablishmentarianism."
Observez le résultat de la tokenisation. Que constatez-vous concernant le découpage du mot "antidisestablishmentarianism" ?
On remarque que le mot "antidisestablishmentarianism" est découpé en plusieurs sous-mots. Cela est dû à sa rareté dans les données d'entraînement, forçant le tokenizer à le diviser en unités plus fréquentes et réutilisables.
Analyse des encodages positionnels dans GPT-2
Dans ce deuxième exercice, nous allons nous intéresser à l'encodage positionnel (positional encoding), une caractéristique essentielle des Transformers. Contrairement aux modèles récurrents (RNN), les Transformers ne traitent pas les données de manière séquentielle. Ils utilisent plutôt un mécanisme d'attention qui ne prend pas en compte par défaut l'ordre des tokens dans une phrase. C'est pour cette raison qu'ils ont recours à l'encodage positionnel afin d'intégrer explicitement l'information de la position des mots.
Dans cet exercice, nous allons visualiser les encodages positionnels utilisés par GPT-2.
Visualisez les encodages positionnels en deux dimensions avec PCA en utilisant Plotly (par exemple). Sauvegardez le graphique sous forme de fichier HTML nommé positions_50.html pour les 50 premières positions.
Les embeddings positionnels forment souvent des structures continues, où les positions proches dans une séquence (c'est-à-dire avec des indices proches) ont tendance à être proches également dans l'espace d'embedding. Cela aide le modèle à comprendre l'ordre relatif des mots dans une séquence. Cependant, cette représentation n'implique pas forcément une importance plus grande des positions initiales, mais indique simplement que les positions initiales sont souvent distinctes car elles posent les bases du contexte de la phrase.
On remarque que les positions plus élevées (au-delà de 50) continuent de former des motifs réguliers, mais peuvent être moins clairement regroupées que les positions initiales. Cela suggère que le modèle représente distinctement les positions initiales car elles servent souvent à établir le contexte initial, tandis que les positions plus éloignées varient plus subtilement pour représenter les détails ou nuances ultérieures dans la séquence.
Probabilités et génération de texte avec GPT-2
Dans ce troisième exercice, nous allons étudier comment les modèles de type Transformer génèrent du texte. Plus précisément, nous allons analyser comment un modèle comme GPT-2 attribue des probabilités à chaque mot (ou token) en fonction des mots précédents. On appelle cela la modélisation du langage causal (ou "causal language modeling").
Nous allons utiliser le modèle GPT-2 disponible via la bibliothèque Transformers pour observer les probabilités que le modèle donne à chaque mot dans une phrase donnée.
"Artificial intelligence is fascinating."
La probabilité totale d'une phrase est calculée comme le produit des probabilités conditionnelles de chaque mot étant donné tous les mots précédents. Plus cette probabilité est élevée, plus le modèle considère la phrase comme plausible ou naturelle. Des phrases inhabituelles ou non grammaticales auront typiquement des probabilités très faibles, car le modèle n'aura pas vu de combinaisons similaires pendant son entraînement.
"Artificial fascinating intelligence is."
Que constatez-vous et pourquoi ?
La probabilité totale de la phrase non grammaticale est considérablement plus faible que celle de la phrase grammaticale. Cela montre que GPT-2 apprend effectivement des régularités grammaticales et contextuelles, attribuant des probabilités plus élevées aux séquences qui respectent l'ordre habituel et la syntaxe du langage naturel.
"L'intelligence artificielle est fascinante."
Que constatez-vous et pourquoi ?
La probabilité est beaucoup plus faible qu'avant. GPT-2 a été entraîné sur des textes anglais, et ne connaît pas le français.
Exploration des méthodes de génération avec GPT-2
Dans ce quatrième exercice, nous allons explorer plusieurs méthodes de génération de texte à partir d'un modèle Transformer comme GPT-2. Nous analyserons comment différents paramètres et techniques influencent le texte produit par le modèle. Les méthodes que nous allons étudier sont les suivantes :
- Décodage glouton (Greedy decoding)
- Décodage par échantillonnage (Sampling) avec les paramètres : température, top-k, top-p (nucleus sampling) et pénalité de répétition.
- Recherche par faisceau (Beam search)
Pour toutes ces expérimentations, nous utiliserons le modèle GPT-2 disponible dans la bibliothèque Transformers.
"The future of artificial intelligence is"
Utilisez une longueur maximale de 50 tokens.
Le décodage par échantillonnage produit généralement des textes plus variés et créatifs que le décodage glouton, qui tend à produire des textes plus répétitifs et prévisibles. Les paramètres de température et top-k/top-p permettent de contrôler le degré de créativité ou de diversité des phrases générées.
La pénalité de répétition élevée empêche le modèle de répéter des phrases ou mots identiques trop fréquemment, rendant le texte généré souvent plus cohérent et moins répétitif, ce qui améliore la qualité globale du texte produit.
La recherche par faisceau explore plusieurs chemins simultanément pour choisir une génération optimale en termes de probabilité globale. Ainsi, elle génère souvent un texte plus fluide et grammaticalement correct, mais peut être légèrement moins variée ou créative par rapport à l'échantillonnage.