L’objectif de ce projet est de reconstruire un modèle de type GPT from scratch, sans dépendances externes (hormis NumPy pour les opérations de base).
Cette démarche m’a permis de comprendre en profondeur les mécanismes internes des Transformers (embeddings, multi-head attention, backpropagation manuelle).
L’idée n’était pas d’obtenir un modèle "state of the art", mais plutôt de démonter et reconstruire chaque pièce pour savoir comment ça marche sous le capot.
- Implémentation de l’architecture Transformer :
- Embeddings
- Multi-Head Attention
- Feed-Forward Network
- Normalisation
- Forward pass et Backpropagation manuelle
- Gestion des poids et initialisation aléatoire
- Entraînement sur corpus texte réduit (toy dataset)
- Génération de texte simple après apprentissage
Comme pour tout projet “from scratch”, j’ai dû affronter plusieurs obstacles techniques :
-
Erreurs de compilation et de logique
- Multiplications matricielles incompatibles → nécessité de bien comprendre les dimensions des tenseurs.
- Implémentation initiale du softmax → plantait à cause d’overflows numériques.
- Correction : ajout de la stabilisation numérique
exp(x - max(x))
.
-
Backpropagation
- Plusieurs erreurs dans les dérivées partielles, donnant un entraînement instable.
- J’ai appris à dériver manuellement chaque étape et à vérifier les dimensions avec des tests unitaires simples.
-
Gestion mémoire
- Les premières versions manipulaient trop de copies de matrices → surconsommation mémoire.
- Correction progressive en réutilisant des buffers.
-
Processus d’entraînement
- Accuracy initiale stagnante à ~10% (aléatoire).
- Après corrections (softmax + loss + normalisation), progression significative.
- Rigueur mathématique : implémenter soi-même softmax, attention, normalisation oblige à tout recalculer et à vérifier chaque détail.
- Stabilité numérique : importance des petites optimisations (soustraction du max dans softmax, initialisation contrôlée).
- Debug systématique : j’ai dû adopter une approche pas à pas (tests unitaires, affichage intermédiaire) pour corriger les erreurs.
- Pourquoi les frameworks existent : ce projet illustre pourquoi TensorFlow / PyTorch sont indispensables pour des modèles réels.
git clone https://github.com/InputOutputStream/transformer-gpt-numpy.git
cd transformer-gpt-numpy
python gpt.py