[PYTHON] Ich habe versucht, Sätze mit GPT-2 zu generieren

Letztes Mal wollte ich Sätze mit Flairs TextRegressor generieren (https://qiita.com/ochiba0227/items/c4e599d8be31e624d009), aber es schlug fehl, also habe ich diesmal GPT-2 verwendet. Ich werde versuchen, ein Dokument zu generieren.

Als ich anfing zu schreiben, bemerkte ich, dass es eine Gottbibliothek namens [gpt-2-simple] gab (https://github.com/minimaxir/gpt-2-simple), also habe ich sie ausgeliehen und gemacht. Gehen.

Probieren Sie zuerst die Probe aus

Da gpt-2-simple auf openai GPT-2 basiert, funktioniert es nicht mit der tensorflow2.x-Serie. Wenn Sie also das Docker-Image verwenden möchten, verwenden Sie tensorflow / tensorflow: 1.15.2-py3 (für CPU).

Bei Verwendung der GPU
Bei Verwendung eines Docker-Images (aber [funktioniert nicht mit Docker unter Windows](https://github.com/NVIDIA/nvidia-docker/wiki/Frequently-Asked-Questions#is-microsoft-windows-supported) Es scheint, dass...)
docker run --runtime=nvidia -it tensorflow/tensorflow:1.15.2-gpu-py3 bash

Beim schnellen Aufbau einer Umgebung mit Conda

conda create -n gpt-2 python=3.6
conda activate gpt-2
pip install tensorflow-gpu==1.15

Installieren Sie es also mit pip3 install gpt-2-simple und lernen Sie den Shakespeare-Text und geben Sie ihn wie unter Verwendung gezeigt aus. Das Ergebnis des Trainings und der Ausführung nur einer Epoche ist wie folgt.

1 Ergebnis des Lernens nur von Epochen
>>> gpt2.generate(sess)
Cells in the body of a whale are often used as a means to induce sleep in some whales. But in the case of a whale, this particular type of whale is known as a cusps whale because it is usually about the size of a human hair.

The, or humpback whale, is one of the largest cusps whales in the world. It is an extremely large, highly muscled, and highly territorial mammal, with a very large mouth and, in some sections, white, skinned head.

...

Ist der Inhalt, der herauskommt, ein Wal? Es klingt wie eine Geschichte, aber es scheint, dass Sie eine Epoche lernen und das Modell vorerst speichern können. Fahren wir also mit der nächsten fort.

Lass uns deinen eigenen Korpus lernen

Im obigen Beispiel ist das 124-MB-Modell von GPT-2 fein abgestimmt. Geben Sie hier eine japanische Zeichenkette ein und prüfen Sie, ob Sie sie gut einstellen können.

Ein Beispiel für das Werfen japanischer Sätze, die durch Leerzeichen getrennt sind, und das Erlernen von 200 Epochen
"Northeast Regional" 188 (United Station) in Richtung Norden, der den Korridor betreibt(Washington D.. C .)Abfahrt Pennsylvania Station(New York)To) verließ Philadelphias 30th Street Station. Der Zug ist ACS, der vor einem Jahr 7 Personenkraftwagen hergestellt hat.-Elektrolokomotive Typ 64( No . 601 )Schleppte.

Ungefähr 11 Minuten später fährt der Zug auf der Hauptstrecke mehrerer Linien südöstlich von, nahe der Kreuzung der Frank Ford Avenue und der Wheatseef Lane im Bezirk Port Richmond, bei 4 Grad (Radius ca. 440 m). ) Geben Sie die linke Kurve ein.
2015 Amtrack Entgleisungsunfall

Die Ausgabe sieht gut aus!

Ergebnisse

https://github.com/ochiba0227/gpt2-simple/blob/master/gpt2_simple.py

Impressionen

Als ich versuchte, nur mit GPT-2-Repository eine Feinabstimmung vorzunehmen, war dies eine sehr schwierige Aufgabe und ich war in der Mitte enttäuscht ... Zu dieser Zeit hatte ich das Glück, gpt-2-simple kennenzulernen. Es ist erstaunlich, GPT-2 optimieren zu können und Dokumente mit einem so kurzen Code zu generieren. Ich schätze die Leute, die die Bibliothek machen, sehr! Jetzt, da ich weiß, wie man Feinabstimmungen vornimmt, möchte ich lernen und mit den Sätzen spielen, die ich persönlich generieren möchte.

Was ich am Anfang schrieb, war, dass ich unterwegs enttäuscht war

Was ich am Anfang geschrieben habe
## Probieren Sie zuerst die Probe aus Klonen aus [GPT-2 Repository](https://github.com/openai/gpt-2) ... Fügen Sie das Paket gemäß [DEVELOPERS.md](https://github.com/openai/gpt-2/blob/master/DEVELOPERS.md) ein. Aber plötzlich kann ich `tensorflow 1.12` nicht mehr installieren ...
# pip install tensorflow==
ERROR: Could not find a version that satisfies the requirement tensorflow== (from versions: 2.2.0rc1, 2.2.0rc2)
ERROR: No matching distribution found for tensorflow==

Wenn ich vorerst die neueste Version installiere und fortfahre, tritt der folgende Fehler auf.

# python3 src/generate_unconditional_samples.py | tee /tmp/samples
Traceback (most recent call last):
  File "src/generate_unconditional_samples.py", line 9, in <module>
    import model, sample, encoder
  File "/target/src/model.py", line 3, in <module>
    from tensorflow.contrib.training import HParams
ModuleNotFoundError: No module named 'tensorflow.contrib'

Bei der Prüfung scheint "tensorflow.contrib" in tensorflow 2.x [veraltet] zu sein (https://github.com/tensorflow/tensorflow/issues/31350#issuecomment-518749548) ... Es gibt keine Hilfe dafür. Wechseln Sie daher von Dockerfile zur Installation. Hier wird das Bild von "Tensorflow / Tensorflow: 1.12.0-py3" verwendet. Wenn Sie alle Modelle fallen lassen, wird es schwer. Ändern Sie es so, dass nur das leichteste Modell fallen gelassen wird.

Dockerfile.cpu


FROM tensorflow/tensorflow:1.12.0-py3

ENV LANG=C.UTF-8
RUN mkdir /gpt-2
WORKDIR /gpt-2
ADD . /gpt-2
RUN pip3 install -r requirements.txt
RUN python3 download_model.py 124M

Wenn Sie es bearbeiten können, wird es vorerst auf der CPU ausgeführt, so dass es wie folgt aussieht ...

docker build --tag gpt-2 -f Dockerfile.cpu .
docker run -it gpt-2 bash

export PYTHONIOENCODING=UTF-8
python3 src/generate_unconditional_samples.py | tee /tmp/samples

Dann bekam ich den Fehler AttributeError: module'tensorflow 'hat kein Attribut'sort'. Bei der Prüfung scheint es, dass der Tensorflow "1.12.0" geändert werden muss, um "tf.contrib.framework.sort" zu importieren ... Es scheint zu funktionieren, wenn Sie "tensorflow 1.14.0" verwenden, daher möchte ich dieses Mal die Dockerfile-Seite ändern.

Dockerfile.cpu


#Weil es eine große Sache ist, 1.Ich habe es zur neuesten Version der x-Serie gemacht
FROM tensorflow/tensorflow:1.15.2-py3

ENV LANG=C.UTF-8
RUN mkdir /gpt-2
WORKDIR /gpt-2
ADD . /gpt-2
RUN pip3 install -r requirements.txt
RUN python3 download_model.py 124M

Wenn Sie also einen zweiten Blick darauf werfen und es ausführen, erhalten Sie die folgende Ausgabe von "Lügenartikel"!

Beispiel für die Ausgabe falscher Artikel
python3 src/generate_unconditional_samples.py | tee /tmp/samples
======================================== SAMPLE 1 ========================================
 — President Donald Trump tweeted on Saturday that he would not do it again in the 2017 budget.

"Of course, and I bet WA will accept my debt — but if a bad story develops, they'll tell me as long as I am cutting deduction for health care," Trump tweeted on December 19.

If a bad story develops, they'll tell me as long as I am reducing deduction for health care. — President Donald Trump (@realDonaldTrump) December 19, 2017  

The first budget request "is building around a debt epidemic for $3.5 trillion," according to CNN. The problem, it turns out, is that Trump would work with 
Republicans to pass a debt-ceiling increase, despite claims that the written framework can't be passed.

The budget would create $11.1 trillion in government debt, according to PPP , Russia, and China – which have agreed on a plan to get rid of regulations on corporate taxes as part of a five-year plan which includes massive cuts to subsidies for growth to deal with the looming financial crisis.

Today's budget contradicts Cliff's upcoming budget agreement, which to...

Sicherlich kann selbst das kleinste Modell einen Artikel erstellen, der sich wie ... erstaunlich anfühlt. Nachdem ich das Sample endlich verschoben habe, möchte ich es als nächstes lernen lassen.

Lernen mit GPT-2

Um ehrlich zu sein, gibt es zu wenige Orte, um sie zu erklären, also ist es ziemlich schwierig ... Vielleicht liegt es daran, dass es nicht missbraucht wird ...

Verwendung von japanischem Korpus

In Ausgabe 104, 114 heißt es im Korpus Es wird gesagt, dass es [Byte_pair_encoding] ist (https://en.wikipedia.org/wiki/Byte_pair_encoding). Wenn Sie Ihr eigenes Modell erstellen möchten, lesen Sie Der Weg dieser Person und [Satzteil](https: / (/github.com/google/sentencepiece) sieht gut aus.

Dieses Mal werden wir [BERT-Modell aus der japanischen Wikipedia von Mr. Possible] ausleihen (https://yoheikikuta.github.io/bert-japanese/). Laden Sie [Trained Model] herunter (https://drive.google.com/drive/folders/1Zsm9DD40lrUVu6iAnIuTH2ODIkh-WM-O?usp=sharing) ...

Recommended Posts

Ich habe versucht, Sätze mit GPT-2 zu generieren
Ich habe fp-Wachstum mit Python versucht
Ich habe versucht, mit Python zu kratzen
Ich habe versucht, mit Elasticsearch Ranking zu lernen!
Ich habe versucht, mit PyCaret zu clustern
Ich habe gRPC mit Python ausprobiert
Ich habe versucht, mit Python zu kratzen
Ich habe den Code für die japanische Satzgenerierung mit DeZero geschrieben
Ich habe versucht, Sätze mit summpy zusammenzufassen
Ich habe maschinelles Lernen mit liblinear versucht
Ich habe versucht, WebScraping mit Python.
Ich habe versucht, Essen mit SinGAN zu bewegen
Ich habe versucht, DeepPose mit PyTorch zu implementieren
Ich habe versucht, das Gesicht mit MTCNN zu erkennen
Ich habe die SMTP-Kommunikation mit Python versucht
Ich habe versucht, LightGBM mit Yellowbrick zu lernen
Ich habe versucht, das Gesicht mit OpenCV zu erkennen
Ich habe versucht, die Satzklassifizierung durch Self Attention mit PyTorch zu implementieren
Ich habe eine multiple Regressionsanalyse mit Polypoly-Regression versucht
Ich habe versucht, Amazon SQS mit Django-Sellerie zu verwenden
Ich habe versucht, Autoencoder mit TensorFlow zu implementieren
Ich habe Linebot mit Flasche (Anaconda) + Heroku ausprobiert
Ich habe versucht, mit Hy anzufangen
Ich habe versucht, Selen mit Headless-Chrom zu verwenden
Ich habe versucht, Faktoren mit Titanic-Daten zu analysieren!
Ich habe versucht, mit Kaggles Titanic (kaggle②) zu lernen.
Ich habe versucht, mit Python + opencv nicht realistisch zu rendern
Ich habe eine funktionale Sprache mit Python ausprobiert
Ich habe versucht, mit Python ② (Fibonacci-Zahlenfolge) aufzuklären.
Ich habe versucht, DeepPose mit PyTorch PartⅡ zu implementieren
Ich habe versucht, CVAE mit PyTorch zu implementieren
Ich habe versucht, mit Pillow mit dem Bild zu spielen
Ich habe versucht, TSP mit QAOA zu lösen
Ich habe mit Jupyter eine einfache Bilderkennung versucht
Ich habe versucht, CNN mit Resnet fein abzustimmen
Ich habe versucht, natürliche Sprache mit Transformatoren zu verarbeiten.
# Ich habe so etwas wie Vlookup mit Python # 2 ausprobiert
Ich habe versucht zu kratzen
Ich habe PyQ ausprobiert
Ich habe AutoKeras ausprobiert
Ich habe es mit Papiermühle versucht
Ich habe versucht, Django-Slack
Ich habe es mit Spleeter versucht
Ich habe es mit cgo versucht
Ich habe versucht, nächstes Jahr mit AI vorherzusagen
Ich habe versucht, das Bild mit Python + OpenCV zu "glätten"
Ich habe Hunderte Millionen SQLite mit Python ausprobiert
Ich habe versucht, das Lesen von Dataset mit PyTorch zu implementieren
Ich habe versucht, lightGBM, xg Boost mit Boruta zu verwenden
Ich habe versucht, Bilder mit CIFAR-10 mit Keras-Learning- zu erkennen.
Ich habe versucht, mit TF Learn die logische Operation zu lernen
Ich habe versucht, GAN (mnist) mit Keras zu bewegen
Ich habe versucht, Bilder von CIFAR-10 mit Keras-Bilderkennung zu erkennen.
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich habe versucht, mit OpenCV Bewegungen schnell zu erkennen
Ich habe versucht, Keras in TFv1.1 zu integrieren
Ich habe Flask mit Remote-Containern von VS Code ausprobiert