Maison  >  Article  >  Périphériques technologiques  >  Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. L'introduction technique est comparable à un didacticiel.

Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. L'introduction technique est comparable à un didacticiel.

PHPz
PHPzavant
2023-04-11 23:49:011269parcourir

Actuellement, les grands modèles de langage (LLM) sont considérés comme la direction des percées en matière d'intelligence artificielle. Les gens essaient de les utiliser pour faire toutes sortes de choses complexes, telles que des questions et réponses, la création, le raisonnement mathématique et l'écriture de code. La récente explosion de ChatGPT en est le meilleur exemple.

Cependant, pour les praticiens du machine learning, le seuil pour les grands modèles est très élevé : parce qu'ils sont trop volumineux et difficiles à former, cette direction a longtemps été monopolisée par les grandes entreprises. Cependant, depuis peu, il existe de plus en plus de moyens de simplifier le modèle GPT. À la mi-janvier, Andrej Karpathy, ancien directeur principal de Tesla AI (maintenant de retour chez OpenAI) a publié un tutoriel complet sur la création d'un modèle GPT à partir de zéro​. Cependant, par rapport au GPT formé et au GPT-3 d'OpenAI, la différence de taille entre les deux est de 10 000 à 1 million de fois. Récemment, Jay Mody, étudiant de premier cycle en génie logiciel à l'Université McMaster au Canada, a implémenté un modèle GPT à partir de zéro avec seulement 60 lignes de code en important la bibliothèque NumPy et l'a nommé PicoGPT. De plus, il a également chargé les poids du modèle GPT-2 formés dans son implémentation et généré du texte. 60 lignes de code sont présentées ci-dessous.

Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. Lintroduction technique est comparable à un didacticiel.

Mais pour ce faire, vous devez être familier avec Python et NumPy et avoir une expérience de base dans la formation de réseaux de neurones. L'auteur a déclaré que ce blog vise à fournir une introduction simple, facile à comprendre et complète à GPT. Par conséquent, l'auteur utilise uniquement les poids du modèle déjà formés pour implémenter le code d'accès direct.

Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. Lintroduction technique est comparable à un didacticiel.

Adresse du code :

​https://github.com/jaymody/picoGPT/blob/29e78cc52b58ed2c1c483ffea2eb46 ff 6bdec785/gpt2_pico.py#L3-L58​

Pour cette recherche, Andrej Karpathy a donné quatre mots : en retard mais arrivé. À l’époque, les minGPT et nanoGPT construits par Karpathy nécessitaient 300 lignes de code.

Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. Lintroduction technique est comparable à un didacticiel.Il est à noter que ce tutoriel n'est pas totalement à seuil zéro. Afin de permettre aux lecteurs de comprendre, l'auteur présente d'abord ce qu'est GPT, ses entrées, sorties et autres contenus, le tout de manière très détaillée.

Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. Lintroduction technique est comparable à un didacticiel.

Quant à ce que GPT peut faire exactement, l'auteur donne quelques exemples. Il peut écrire des e-mails, résumer un livre, vous donner des idées de légendes sur Instagram et expliquer les trous noirs à un 5-. ans, écrire du code en SQL, etc.

En lisant attentivement cette partie, vous pouvez approximativement comprendre certaines connaissances de base de GPT. Avec ces informations générales, l’étape suivante consiste à savoir comment le configurer.

Introduction au projet

Paramètres

Ce chapitre présente principalement comment définir l'encodeur, les hyperparamètres et les paramètres.

Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. Lintroduction technique est comparable à un didacticiel.

Ce que vous devez faire, c'est d'abord cloner le référentiel :

Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. Lintroduction technique est comparable à un didacticiel. Ensuite installer les dépendances :

Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. Lintroduction technique est comparable à un didacticiel.

Remarque, si vous utilisez un Macbook M1, vous devez remplacer tensorflow par tensorflow-macos dans Requirements.txt avant d'exécuter pip install. Dans le cadre de ce projet, les fichiers incluent encoder.py, utils.py, gpt2.py, gpt2_pico.py :

  • encoder.py : contient le code d'OpenAI BPE Tokenizer, extrait directement du dépôt gpt-2
  • ; utils.py : contient le code pour télécharger et charger les poids, les tokenizers et les hyperparamètres du modèle GPT-2 ;
  • gpt2.py : contient le modèle GPT et le code de génération, qui peuvent être exécutés en tant que script python ; .py : identique à gpt2.py, mais avec moins de lignes de code.
  • où gpt2.py doit être implémenté à partir de zéro, vous devez donc d'abord supprimer gpt2.py et recréer un fichier vide :

Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. Lintroduction technique est comparable à un didacticiel.

Copiez ensuite le code suivant vers gpt2 Dans .py :

Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. Lintroduction technique est comparable à un didacticiel.

Le code ci-dessus contient 4 parties principales :

la fonction gpt2 est le code réel pour implémenter GPT cette fois ; algorithme de décodage autorégressif ;

  • fonction principale ;
  • fire.Fire (main) Convertissez le fichier en application CLI pour pouvoir enfin exécuter le code : python gpt2.py "une invite ici". La fonction
  • main contient les paramètres encode, hparams, params et exécute le code suivant :

Ensuite, les fichiers de modèle et de tokenizer nécessaires seront téléchargés dans le fichier models/124M.

Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. Lintroduction technique est comparable à un didacticiel.

Une fois les réglages terminés, l'auteur commence à introduire quelques détails sur l'encodeur, les hyperparamètres et les paramètres. En prenant l'encodeur comme exemple, l'encodeur de cet article est le même que le tokenizer BPE utilisé par GPT-2. Voici quelques exemples de texte encodé et décodé par cet encodeur :

Le jeton réel ressemble à ceci :

Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. Lintroduction technique est comparable à un didacticiel.

Notez que parfois le jeton est un mot (par exemple Non) , Parfois ce sont des mots mais précédés d'un espace (par exemple Ġall, Ġ représente un espace), parfois ils font partie d'un mot (par exemple capes est divisé en Ġcap et es), et parfois ce sont des signes de ponctuation (par exemple .).

L'un des avantages de BPE est qu'il peut encoder des chaînes arbitraires, et s'il rencontre quelque chose qui n'existe pas dans le vocabulaire, il le divisera en sous-chaînes qu'il comprend : Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. Lintroduction technique est comparable à un didacticiel.

Le contenu plus détaillé ne sera pas décrit à nouveau. Ensuite, nous présenterons le réseau neuronal de base. Cette partie est encore plus basique, comprenant principalement GELU, la fonction Softmax, la normalisation des couches et le linéaire.

Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. Lintroduction technique est comparable à un didacticiel.

Il y a des exemples de code dans chaque petite partie, par exemple dans la partie Linéaire, l'auteur montre la multiplication matricielle standard + biais :

Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. Lintroduction technique est comparable à un didacticiel.

Couche linéaire d'un espace vectoriel Le code pour projeter dans un autre espace vectoriel est le suivant :

Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. Lintroduction technique est comparable à un didacticiel.

Architecture GPT

Cette partie présente l'architecture de GPT elle-même.

Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. Lintroduction technique est comparable à un didacticiel.

L'architecture du transformateur est la suivante :

Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. Lintroduction technique est comparable à un didacticiel.

Le transformateur utilise uniquement la pile de décodeur (partie droite de l'image) :

Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. Lintroduction technique est comparable à un didacticiel.

Il convient de noter qu'en raison de la suppression de l'encodeur, la couche intermédiaire d'attention croisée est également supprimée. ​

À un niveau élevé, l'architecture GPT comprend les trois parties suivantes :

  • intégration de texte + position
  • Pile de décodeur de transformateur
  • projection vers le vocabulaire ;

Le code ressemble à ceci :

Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. Lintroduction technique est comparable à un didacticiel.

Capture d'écran de la section de code

Ensuite, chacune des trois parties ci-dessus est décomposée plus en détail, ce qui n'est pas le cas. ici non plus.

Ce qui précède est l'implémentation de GPT par l'auteur. L'étape suivante consiste à les combiner et à exécuter le code pour obtenir gpt2.py. L'ensemble de son contenu ne comporte que 120 lignes de code (60 lignes si vous supprimez les commentaires et les espaces).

L'auteur a testé les résultats de la manière suivante :

Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. Lintroduction technique est comparable à un didacticiel.

Les résultats de sortie sont les suivants :

Les étudiants de premier cycle utilisent 60 lignes de code pour vous apprendre à créer manuellement un grand modèle GPT. Lintroduction technique est comparable à un didacticiel.

Comme l'a dit l'auteur : Cette expérience Cela a fonctionné.

Cet article ne présente que brièvement le processus global en suivant les idées de l'auteur. Les amis qui souhaitent en savoir plus peuvent se référer au lien d'origine.

Lien original : https://jaykmody.com/blog/gpt-from-scratch/#basic-layers

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer