Ce dépôt contient un notebook qui implémente un mini-modèle de langage de type GPT à partir de zéro en PyTorch (architecture Transformer causale), puis l’entraîne pour générer du texte.
Projet réalisé dans le cadre d’un cours de Traitement Automatique du Langage Naturel (TALN). L’objectif pédagogique est de comprendre le fonctionnement interne des modèles de langage : embeddings, self-attention masquée, blocs Transformer, apprentissage auto-régressif, et génération.
Notebook principal : build_a_tiny_language_model.ipynb
- Implémenter un Mini GPT from scratch avec PyTorch.
- Préparer un dataset simple pour l’entraînement : MaxLSB/LeCarnet (Hugging Face).
- Entraîner le modèle à prédire le prochain token et générer du texte.
- Analyser les performances : cohérence qualitative, perte (loss) et (optionnel) perplexité.
Le notebook charge le dataset MaxLSB/LeCarnet via la librairie datasets (Hugging Face), puis concatène la colonne texte en un grand corpus.
Remarque : pour accélérer les essais, le notebook permet de limiter le nombre de lignes via max_train_rows.
- Python 3.10+ recommandé
- Accès internet (téléchargement du dataset)
- GPU recommandé (sinon CPU possible mais plus lent)
Dépendances (voir requirements.txt) :
torchdatasetstqdm
L’environnement recommandé est Google Colab avec un GPU T4.
- Ouvrir build_a_tiny_language_model.ipynb dans Colab.
- Activer le GPU :
Runtime→Change runtime type→GPU. - Installer les dépendances dans une cellule :
pip install -r requirements.txt- Exécuter les cellules dans l’ordre (chargement des données → tokenisation → modèle → entraînement → génération).
Vous pouvez exécuter le notebook localement (Jupyter/VS Code) en installant les dépendances depuis requirements.txt dans un environnement pip ou uv.
Depuis la racine du projet :
python -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -r requirements.txtEnsuite, lancez Jupyter (au choix) :
pip install notebook
jupyter notebookOu ouvrez le notebook dans VS Code en sélectionnant l’interpréteur .venv.
Si uv est installé :
uv venv
source .venv/bin/activate
uv pip install -r requirements.txtPuis ouvrez/executez le notebook avec Jupyter ou VS Code.
Le notebook suit les étapes suivantes :
- Chargement des données (
datasets.load_dataset). - Tokenisation au choix :
char: caractère par caractèreword: tokens “mots + ponctuation + espaces” via une regex (mode par défaut)
- Création du vocabulaire + mappings
stoi/itos+encode/decode. - Modèle : embeddings (token + position) → empilement de blocs Transformer causaux → projection vocabulaire.
- Entraînement : AdamW, cross-entropy sur la prédiction du prochain token.
- Sauvegarde : checkpoint PyTorch (ex.
best_model_2.pt). - Inférence : génération auto-régressive token par token.
Vous pouvez ajuster dans le notebook :
tokenization_mode:'word'ou'char'block_size: longueur de contexten_layer,n_head,n_embd: taille/capacité du modèlemax_iters,learning_rate: entraînementmax_train_rows: taille du dataset utilisée
Le notebook affiche périodiquement la perte train_loss et val_loss.
Pour une mesure standard en modélisation de langue, vous pouvez convertir une perte moyenne (cross-entropy) en perplexité :
(Optionnel) vous pouvez aussi analyser qualitativement :
- cohérence locale (accords, ponctuation)
- répétitions
- respect du style du corpus
Après entraînement, le modèle doit être capable de générer du texte en français qui suit globalement la distribution du corpus (même si la cohérence globale reste limitée pour un “mini GPT”).
- Téléchargement dataset lent/échoue : vérifier la connexion internet et réessayer.
- CPU trop lent : réduire
max_train_rows,max_iters,n_layer/n_embd, ou passer sur Colab GPU. - CUDA OOM (manque de VRAM) : réduire
batch_size,block_size,n_embd,n_layer.
Notebook fourni à des fins pédagogiques dans le cadre du cours.