GPT "Generative PreAnt Transformator" ist die erste Version der GPT-Serie von Modellen, die natürliche Sprachverarbeitung mit ihren autoregressiven Sprachmodellierungsfunktionen revolutionierte, die auf der Transformatorarchitektur basieren.
Dieses Projekt ist eine Implementierung des GPT-Modells (Generative Pre-trainierte Transformator) von Grund auf den TensorFlow. Es enthält alle Komponenten des Modells, wie die Positionsbettendings, Aufmerksamkeitsmechanismus, Vorwärtsschichten und mehr.
Wichtiger Hinweis: Ziel dieses Projekts ist es, die GPT -Architektur und ihre innere Funktionsweise ein tiefes Verständnis zu vermitteln. Es ist also hauptsächlich für Bildungszwecke. Sie können die Struktur und den Arbeitsmechanismus dieses Modells hier vollständig verstehen und die Komponenten verwenden, die ich in Ihren Projekten implementiert habe. Wenn Sie das Projekt verwenden möchten, um Ihr Sprachmodell mit Big Data zu trainieren, müssen Sie im Allgemeinen die Datensatzdatei ändern, um Big Data effizienter zu verarbeiten. Ich habe die Datensatzdatei hauptsächlich so gestaltet, dass einfache, nicht große Daten verarbeitet werden, da ich in dieser Hinsicht jetzt nicht bin.
Es gibt mehrere Versionen des GPT. Diese Implementierung konzentriert sich hauptsächlich auf die Implementierung von "Verbesserung des Sprachverständnisses durch generatives Vorverbrauch".
config.py : Konfigurationsdatei für Modellhyperparameter.decoder.py : GPT -Decoder.positional_embeddings.py : Positionseinbettungserzeugung.embeddings.py : Token -Einbettungserzeugung.attention.py : Selbstbekämpfungsmechanismus.feed_forward.py : Neuronales Feed-Forward-Netzwerk.lr_schedule.py : Planung der Lernrate.utils.py : Versorgungsfunktionen für Training und Inferenz.loss_functions.py : benutzerdefinierte Verlustfunktionen.metrics.py : benutzerdefinierte Bewertungsmetriken.streamer.py : Data Streamer für ein effizientes Training.gpt_model.py : Haupt -GPT -Modellimplementierung.bpe_tokenizer.py : Tokenizer für BPE (Byte -Paar -Kodierung) Tokenisierung.tokenizer.py : Vorausgebildeter GPT-Tokenizer.prepare_dataset.py : Eine Datei, über die wir einige Vorgänge im Datensatz ausführen (Erstellen eines speziellen Ordners für Validierungsdaten).inferance.py : Eine Datei, die zum Generieren von Sätzen aus dem Modell basierend auf der Eingabeaufforderung erforderlich ist.tmp/ : Verzeichnis zum Speichern von Modellkontrollpunkten.demo/ : Projektdokumentation.tokenizer/ : Verzeichnis zum Speichern des umkassierten Tokens.dummy_data/ : Verzeichnis, in dem wir einige Daten einstellen, um den Streamer zu testen. Eine detaillierte Projektdokumentation finden Sie im demo/ Verzeichnis. Es enthält Erklärungen der GPT -Architektur, Schulungsverfahren und der Verwendung des Modells für verschiedene Aufgaben zur Verarbeitung natürlicher Sprache.
Klonen Sie das Repository:
git clone https://github.com/AliHaiderAhmad001/GPT-from-Scratch-with-Tensorflow.git
cd GPT-from-Scratch-with-TensorflowErstellen Sie eine virtuelle Umgebung (optional, aber empfohlen):
python -m venv venv
source venv/bin/activate # On Windows: venvScriptsactivateProjektabhängigkeiten installieren:
pip install -r requirements.txtDownload und vorbereiten Sie den Datensatz: Sie können die Demo überprüfen. Sie können an demselben Datensatz arbeiten, diese ändern oder Ihre Einstellungen anpassen. Sie können den Datensatz jedoch hier direkt herunterladen. Sie können einen Teil davon zur Validierung über den folgenden Code nehmen:
python prepare_dataset.py aclImdb/test aclImdb/valid --num_files_to_move 2500Der von mir verwendete Datenloader erfordert den Validierungssatz, um sich in einem separaten Ordner zu befinden.
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 Dieses Projekt ist unter der MIT -Lizenz lizenziert. Weitere Informationen finden Sie in der Lizenzdatei.