Schulung von GPT-2-Transformator-Sprachmodell in Ihrer eigenen Korpora mit Satzstück-Tokenisierung.
Dieses Repo enthält eine Pytorch-Implementierung von GPT-2, die Multi-GPU-Schulungen unterstützen. Es enthält auch eine TensorFlow -Implementierung in lm/gpt_2_tf , aber es wird nicht mehr entwickelt. Sie teilen die gleichen Datenvorbereitungsskripte. Der TF-Trainingsbefehl ist gpt-2-tf-train und benötigt TensorFlow 1.13. Die folgende Dokumentation ist für die Pytorch -Version.
Inhalt
Python 3.6+ ist mit Torch Nightly oder 1,6.0+ erforderlich. Die Arbeit in einem Virtualenv wird unten angenommen. Installieren Sie zuerst die entsprechende Version von Pytorch und dann:
PIP Installation -r Anforderungen.txt python setup.py entwickeln
Anweisungen finden Sie unten. Siehe auch test/test_shakespeare.sh für eine vollständige Pipeline -Demo auf einem kleinen Korpus (dauert eine Minute auf einer CPU).
Corpus-Format: Ein Verzeichnis mit train , valid und test auf höchstem Niveau. Jeder Ordner der obersten Ebene kann Unterordner enthalten. In ihnen müssen UTF-8-codierte Textdateien mit .txt Erweiterung vorhanden sein.
Die Befehle zum Ausbilden von Satzpropie-Modell und die Codierung der Corpus unterstützen mehrere Korpora. In folgenden Beispielen gehen wir davon aus, dass sie als data/corpora-* aufgeführt werden können.
Train Surepiece-Modell ( sp-text.txt kann nach dem Laufen entfernt werden). Dies kann eine große Menge an Speicher konsumieren, Satzstückargumente bei Bedarf anpassen (dies wird im Befehl sp-train nicht direkt unterstützt):
SP-Train-Daten/Corpora-* sp-text.txt sp-Model
CORCE CORPORA, Numpy -Dateien erzeugen:
SP-CODE-Daten/Corpora-* SP-Model.Model Data/Coded
Beispielbefehl:
GPT-2-Run-Root-Daten/codiert SP-Model.model
run-root würde Modell-Checkpoints und JSON-Lines-Protokolle enthalten, die in einem Jupyter-Notizbuch mit json_log_plots.plot("run-root") gezeichnet werden können, wobei die Anzahl der Token auf der X-Achse zu sehen ist.
Standard-Hyperparameter entsprechen dem freigegebenen "Small" -GPT-2-Modell.
Wenn mehrere GPUs verfügbar sind, werden sie mithilfe von torch.distributed für das Training verwendet.
Wenn der Weg vorhanden ist und --clean Key -Key nicht weitergegeben wird, würde das Training wieder aufgenommen. Beachten Sie, dass noch alle Parameter angegeben und die Modellparameter übereinstimmen müssen.
Hinweise zu Trainingsparametern:
--batch-size ist pro GPU, sodass Sie es beim Ändern der Anzahl von GPUs nicht erneut stimmen müssen. Verwenden Sie einfach Max, der in den Speicher passt.--g-accum-gradients sind die globale Anzahl von Gradientenakkumulationen, sie muss durch die Anzahl der GPUs teilbar sein. Effektive globale Chargengröße ist immer batch_size * g_accum_gradients .--lr muss --n-ctx --batch-size nicht geändert werden --g-accum-gradientsBeispielbefehl:
GPT-2-Gen-Run-Root "Künstliche Intelligenz"
run-root würde Modell-Checkpoints "Artificial intelligence" enthalten. Das Textpräfix ist als Ausgangspunkt für die Generierung von Token
Anmerkungen zu Inferenzparametern:
--tokens-to-generate : Anzahl der Token, die generiert werden sollen, ist 42 Jahre alt--top-k : Anzahl der Token-Kandidaten, die für jede Position (Strahlbreite) generieren können, die Standardeinstellung beträgt 8. Lizenz ist MIT.
TensorFlow GPT-2-Modell stammt von https://github.com/openai/gpt-2/blob/master/src/model.py und Tensorflow GPT-2 Training Code basiert auf https://github.com/nshepperd/gpt-2/bob/finetuning/train.pypypypypypypypypypypypypypypypypypypypypypypypy.pypypy.pypypypypypypypy.pypypypy.pypypypypy.pypypypypy.pypypypypy.pypypypypypypypypypypypy.
Pytorch Port basiert auf Original -OpenAI -Code.
Test Shakespeare Corpus zu tests/shakespeare stammt von http://shakespeare.mit.edu im öffentlichen Raum.
Siehe auch OpenAI GPT-2 Paper und Blog.