2 points par GN⁺ 2023-09-24 | 1 commentaires | Partager sur WhatsApp
  • 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

 
GN⁺ 2023-09-24
Discussion Hacker News
  • Cet article traite de la création manuelle d’un transformer capable de prédire des séquences simples.
  • L’étude associée, "Thinking Like Transformers", présente RASP, un langage de programmation primitif pouvant être modélisé à l’aide de composants de transformer.
  • Des programmes similaires à RASP peuvent être compilés en poids de modèle sans entraînement.
  • Il est recommandé d’implémenter un transformer from scratch pour mieux comprendre son fonctionnement, notamment l’importance du dropout et la parallélisation de l’entraînement sur les tokens.
  • L’article suggère qu’une expérience directe avec les transformers peut produire des apprentissages inattendus.
  • Une vidéo réalisée par Karpathy et d’autres est mentionnée comme ressource utile pour comprendre les transformers.
  • L’idée d’une interface intuitive pour les poids du modèle, qu’un expert métier pourrait ajuster manuellement afin d’accélérer l’entraînement, est proposée.
  • L’article est salué pour la clarté de ses explications sur les transformers, qui rendent les concepts techniques plus accessibles.
  • Les transformers sont comparés à des machines abstraites, comme une machine de Turing ou une machine analysant des expressions régulières.
  • L’auteur doute de l’utilité pratique, mais encourage les lecteurs à construire eux-mêmes un modèle.
  • L’article est jugé intéressant et instructif, et suscite discussions et idées chez les lecteurs technophiles.