Le GPT "Generative Pre-Traden Transformateur" est la première version de la série GPT de modèles, révolutionné le traitement du langage naturel avec ses capacités de modélisation du langage autorégressives construites sur l'architecture du transformateur.
Ce projet est une implémentation du modèle GPT (transformateur pré-formé générateur) à partir de zéro à l'aide de TensorFlow. Il comprend tous les composants du modèle, tels que les incorporations positionnelles, le mécanisme d'attention, les couches d'alimentation et plus encore.
Remarque importante: Le but de ce projet est de fournir une compréhension approfondie de l'architecture GPT et de son fonctionnement intérieur. C'est donc principalement à des fins éducatives. Vous pouvez comprendre pleinement la structure et le mécanisme de travail de ce modèle ici, et utiliser les composants que j'ai mis en œuvre dans vos projets. Généralement, si vous souhaitez utiliser le projet pour former votre modèle de langue avec Big Data, vous devrez peut-être modifier le fichier de jeu de données pour pouvoir traiter plus efficacement les mégadonnées. J'ai conçu le fichier d'ensemble de données principalement pour gérer les données simples et non grandes, car je ne suis pas à cet égard maintenant.
Il existe plusieurs versions du GPT. Cette implémentation se concentre principalement sur la mise en œuvre de "l'amélioration de la compréhension du langage par la pré-formation générative".
config.py : fichier de configuration pour les hyperparamètres du modèle.decoder.py : GPT Decoder.positional_embeddings.py : génération d'intégration positionnelle.embeddings.py : Génération d'embeddings de jetons.attention.py : mécanisme d'auto-agence.feed_forward.py : réseau neuronal alimentaire.lr_schedule.py : planification des taux d'apprentissage.utils.py : fonctions utilitaires pour la formation et l'inférence.loss_functions.py : fonctions de perte personnalisées.metrics.py : Metrics d'évaluation personnalisés.streamer.py : Data Streamer pour une formation efficace.gpt_model.py : Implémentation du modèle GPT principal.bpe_tokenizer.py : Tokenizer pour la tokenisation BPE (codage des paires d'octets).tokenizer.py : Tokenizer GPT pré-formé.prepare_dataset.py : un fichier à travers lequel nous effectuons certaines opérations sur l'ensemble de données (créant un dossier spécial pour les données de validation).inferance.py : un fichier nécessaire pour générer des phrases à partir du modèle en fonction de l'invite d'entrée.tmp/ : répertoire pour stocker les points de contrôle du modèle.demo/ : Documentation du projet.tokenizer/ : répertoire pour enregistrer le jetons recyclé.dummy_data/ : répertoire dans lequel nous mettons des données pour tester le streamer. Une documentation détaillée du projet peut être trouvée dans la demo/ répertoire. Il comprend des explications de l'architecture GPT, des procédures de formation et comment utiliser le modèle pour diverses tâches de traitement du langage naturel.
Clone le référentiel:
git clone https://github.com/AliHaiderAhmad001/GPT-from-Scratch-with-Tensorflow.git
cd GPT-from-Scratch-with-TensorflowCréez un environnement virtuel (facultatif mais recommandé):
python -m venv venv
source venv/bin/activate # On Windows: venvScriptsactivateInstallez les dépendances du projet:
pip install -r requirements.txtTéléchargez et préparez un ensemble de données: vous pouvez aller consulter la démo.Vous pouvez travailler sur le même ensemble de données, le modifier ou ajuster vos préférences. Cependant, vous pouvez télécharger l'ensemble de données directement à partir d'ici. Vous pouvez en prendre une partie pour la validation via le code suivant:
python prepare_dataset.py aclImdb/test aclImdb/valid --num_files_to_move 2500Le chargeur de données que j'utilise nécessite l'ensemble de validation dans un dossier séparé.
python bpe_tokenizer.py aclImdb --batch_size 1000 --vocab_size 50357 --save --save_fp tokenizer/adapted-tokenizerpython train.pypython train.py --resumepython inferance.py " input_text_prompt " --sampler " greedy " # For greedy samplingpython inferance.py " input_text_prompt " --sampler " beam " --beam_width 5 # For beam search sampling with a beam width of 5 Ce projet est autorisé sous la licence du MIT. Voir le fichier de licence pour plus de détails.