Skip to content

InputOutputStream/transformer-gpt-numpy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🧠 Transformer GPT from Scratch (NumPy only)

📌 Contexte & Motivation

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.


⚙️ Fonctionnalités principales

  • 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

🔧 Difficultés rencontrées

Comme pour tout projet “from scratch”, j’ai dû affronter plusieurs obstacles techniques :

  1. 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)).
  2. 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.
  3. Gestion mémoire

    • Les premières versions manipulaient trop de copies de matrices → surconsommation mémoire.
    • Correction progressive en réutilisant des buffers.
  4. Processus d’entraînement

    • Accuracy initiale stagnante à ~10% (aléatoire).
    • Après corrections (softmax + loss + normalisation), progression significative.

📊 Leçons apprises

  • 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.

🚀 Utilisation

Installation

git clone https://github.com/InputOutputStream/transformer-gpt-numpy.git
cd transformer-gpt-numpy
python gpt.py

About

Have tried coding a transformer from scratch with solely numpy and built in functions

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published