# 🌍 Galo AI · Pulaar v3
> TP2 — Entraîner un petit modèle de langage sur une langue à faibles ressources
**Auteure :** Fatimata Barry
**Date :** Avril 2026
## Description
Modèle de langage GuppyLM (~9M paramètres) entraîné sur le **Pulaar** (Fulfulde),
langue parlée en Mauritanie, Sénégal, Guinée. Script latin avec caractères spéciaux : ɓ, ɗ, ŋ, ƴ.
## Architecture
- Transformer causale (GuppyLM) ~9M paramètres
- Tokenizer caractère-niveau (inclut ɓ, ɗ, ŋ, ƴ)
- Contexte : 256 tokens
## Dataset
| Version | Paires | Catégories | Source |
|---|---|---|---|
| v1 | 10 000 | 8 | Synthétique |
| v3 | 20 000 | 12 | Synthétique + Glossaire UNESCO 1966 |
## Résultats entraînement
| Epoch | Loss | Perplexité |
|---|---|---|
| 1 | 0.1529 | 1.17 |
| 2 | 0.0914 | 1.10 |
| 3 | 0.0748 | 1.08 |
| 4 | 0.0671 | 1.07 |
| 5 | 0.0642 | 1.07 |
## Fine-tuning QA
| Epoch | Loss | Perplexité |
|---|---|---|
| 1 | 2.2918 | 9.89 |
| 2 | 0.9113 | 2.49 |
| 3 | 0.4836 | 1.62 |
## Application Streamlit
3 onglets :
- 💬 **Dialogue (Jaango)** — conversation libre en Pulaar
- ❓ **Question-Réponse** — QA avec contexte culturel
- 📚 **Glossaire Pulaar** — termes UNESCO/CLT/BALING/13
## Lancer l'application
```bash
pip install streamlit torch
streamlit run app.py
```
## Structure du projet
├── app.py # Application Streamlit
├── tp2_llm_pulaar.ipynb # Notebook principal
├── guppylm_v3.pt # Checkpoint final
├── tokenizer_vocab_v3.json # Vocabulaire Pulaar
├── train.json # Dataset dialogue
├── qa_train_v3.json # Dataset QA enrichi
└── README.md