- L’auteur a construit manuellement un modèle de transformer semblable à GPT-2 afin de prédire des séquences simples et d’acquérir une compréhension plus profonde des transformers et du mécanisme d’attention.
- Le transformer n’a pas été entraîné à partir de poids existants ; chaque poids a été attribué manuellement.
- La tâche choisie pour le transformer consiste à prédire la séquence "aabaabaabaab...", ce qui nécessite de consulter les deux tokens précédents pour déterminer la sortie suivante.
- L’auteur utilise un schéma de tokenisation où
a est représenté par 0 et b par 1.
- Le code du modèle est basé sur l’implémentation GPT-2 de picoGPT par jaymody, avec quelques modifications pour le simplifier.
- Les dimensions du modèle comprennent une longueur de contexte de 5, une taille de vocabulaire de 2 et une taille d’embedding de 8.
- L’auteur a conçu les poids d’embedding en utilisant les 5 premiers éléments pour un embedding positionnel one-hot, et les deux éléments suivants pour un embedding one-hot de l’identifiant du token.
- Le bloc transformer a été conçu pour produire les matrices q, k et v, reprojeter le résultat dans l’embedding, puis le reprojeter en un ensemble de logits du token suivant à l’aide des poids d’embedding des tokens.
- L’auteur fournit une explication détaillée de la conception de la tête d’attention et de la projection vers l’espace des embeddings.
- La dernière étape consiste à multiplier le résultat de l’exécution du bloc transformer par la transposée des poids d’embedding des tokens pour obtenir les logits finaux.
- Le modèle utilise la fonction softmax pour l’entraînement et peut générer des complétions raisonnables pour la séquence donnée.
- Le modèle atteint un taux de réussite de 100 % lorsqu’il est testé avec un contexte non ambigu.
- L’auteur encourage les lecteurs à acquérir une compréhension plus intuitive des transformers et de l’attention, et à essayer de construire leur propre modèle.
- L’article inclut le code complet du modèle, qui effectue les calculs avec numpy et définit des fonctions pour la tokenisation, la prédiction et la complétion de séquence.
- L’auteur suggère qu’il est possible d’améliorer l’efficacité du modèle en réduisant la fenêtre de contexte et en utilisant des techniques comme les fused multiply-add et le cache kv.
- Cet article s’adresse aux personnes intéressées par le domaine des modèles de langage, en particulier celles qui s’intéressent au machine learning et à l’IA.
1 commentaires
Discussion Hacker News