Maison >Périphériques technologiques >IA >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.
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.
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.
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.
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.
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ètresCe chapitre présente principalement comment définir l'encodeur, les hyperparamètres et les paramètres.
Ce que vous devez faire, c'est d'abord cloner le référentiel :
Ensuite installer les dépendances :
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 :
Copiez ensuite le code suivant vers gpt2 Dans .py :
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 ;
Ensuite, les fichiers de modèle et de tokenizer nécessaires seront téléchargés dans le fichier models/124M. 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 :
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 :
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.
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 :
Couche linéaire d'un espace vectoriel Le code pour projeter dans un autre espace vectoriel est le suivant :
Architecture GPT
Cette partie présente l'architecture de GPT elle-même.
L'architecture du transformateur est la suivante :
Le transformateur utilise uniquement la pile de décodeur (partie droite de l'image) :
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 :
Le code ressemble à ceci :
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 résultats de sortie sont les suivants :
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!