Installation: OpenAIs Spachmodell: GPT-2

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Dieses Tutorial ist als praktischer Leitfaden gedacht und behandelt keine theoretischen Hintergründe. Diese werden in einer Vielzahl von anderen Dokumenten im Internet behandelt.

Für die Richtigkeit der Inhalte dieses Tutorials gebe ich keinerlei Garantie. Der hier gezeigte Weg ist nicht der einzige um ein solches System aufzusetzen, es ist lediglich, der, den ich bevorzuge.

Was ist GPT-2?

GPT-2 (Generative Pretrained Transformer 2), ist eine Künstliche Intelligenz von Open AI. Die Künstliche Intelligenz kann Texte selbständig vervollständigen.

Der Unterschied zu automatischen Textgeneratoren ist, dass die Künstliche Intelligenz zur Texterzeugung keine vordefinierten Textblöcke nutzt. Sie ist auch nicht auf einen Themenbereich festgelegt, sondern kann zu jeglichem Text einige passende Sätze erzeugen.

Das Sprachmodell basiert auf einem künstlichen neuronalen Netz mit 1,5 Milliarden Parametern. Es handelt sich um ein statistisches Sprachmodell, das beschreibt, wie wahrscheinlich ein bestimmter Satz in einem Kontext ist. Datengrundlage für GPT-2 sind ungefähr 45 Millionen verarbeitete Seiten Text.

GPT-3 ist eine Weiterentwicklung zu GPT-2.

Einleitung

Wir verwenden Anaconda. Anaconda bündelt einen Paketmanager, einen Umgebungsmanager und eine Vielzahl anderer Werkzeuge, die die Verwendung und Verwaltung von Python-Umgebungen erleichtern.

Wie Sie Anaconda installieren können, haben wir hier beschrieben. Eine Anleitung für das Update von Anaconda finden Sie hier.

Anaconda-Umgebung

Erstellen Sie eine neue Anaconda-Umgebung mit dem Namen GPT2 und führen Sie Python aus.

Verwenden Sie:

conda create --name gpt_env python=3.7

Ausgabe:

Collecting package metadata (current_repodata.json): - \ | done
Solving environment: - done

## Package Plan ##

  environment location: /root/anaconda3/envs/gpt_env

  added / updated specs:
    - python=3.7


The following NEW packages will be INSTALLED:

  _libgcc_mutex      pkgs/main/linux-64::_libgcc_mutex-0.1-main
  ca-certificates    pkgs/main/linux-64::ca-certificates-2021.1.19-h06a4308_1
  certifi            pkgs/main/linux-64::certifi-2020.12.5-py37h06a4308_0
  ld_impl_linux-64   pkgs/main/linux-64::ld_impl_linux-64-2.33.1-h53a641e_7
  libffi             pkgs/main/linux-64::libffi-3.3-he6710b0_2
  libgcc-ng          pkgs/main/linux-64::libgcc-ng-9.1.0-hdf63c60_0
  libstdcxx-ng       pkgs/main/linux-64::libstdcxx-ng-9.1.0-hdf63c60_0
  ncurses            pkgs/main/linux-64::ncurses-6.2-he6710b0_1
  openssl            pkgs/main/linux-64::openssl-1.1.1k-h27cfd23_0
  pip                pkgs/main/linux-64::pip-21.0.1-py37h06a4308_0
  python             pkgs/main/linux-64::python-3.7.10-hdb3f193_0
  readline           pkgs/main/linux-64::readline-8.1-h27cfd23_0
  setuptools         pkgs/main/linux-64::setuptools-52.0.0-py37h06a4308_0
  sqlite             pkgs/main/linux-64::sqlite-3.35.4-hdfb4753_0
  tk                 pkgs/main/linux-64::tk-8.6.10-hbc83047_0
  wheel              pkgs/main/noarch::wheel-0.36.2-pyhd3eb1b0_0
  xz                 pkgs/main/linux-64::xz-5.2.5-h7b6447c_0
  zlib               pkgs/main/linux-64::zlib-1.2.11-h7b6447c_3


Proceed ([y]/n)? y

Wenn Sie einverstanden sind, geben Sie y ein.

Ausgabe:

Preparing transaction: | / - done
Verifying transaction: | / - \ | / - done
Executing transaction: | / - \ | / - done
#
# To activate this environment, use
#
#     $ conda activate gpt_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

Sie können Ihre neue Umgebung aktivieren, indem Sie Folgendes eingeben:

conda activate gpt_env

Installation TensorFlow

Es ist sehr wichtig zu beachten, dass TensorFlow 2 (die aktuelle Version von TF zum Zeitpunkt dieses Beitrags) kein Training/Feinabstimmung von gpt2 ohne Modifikationen erlaubt. Wir verwenden TensorFlow 1.15

pip install tensorflow==1.15
Requirement already satisfied: setuptools>=41.0.0 in ./anaconda3/envs/gpt_env/lib/python3.7/site-packages (from tensorboard<1.16.0,>=1.15.0->tensorflow==1.15) (52.0.0.post20210125)
Collecting werkzeug>=0.11.15
  Using cached Werkzeug-1.0.1-py2.py3-none-any.whl (298 kB)
Collecting importlib-metadata
  Downloading importlib_metadata-3.10.0-py3-none-any.whl (14 kB)
Collecting cached-property
  Downloading cached_property-1.5.2-py2.py3-none-any.whl (7.6 kB)
Collecting typing-extensions>=3.6.4
  Downloading typing_extensions-3.7.4.3-py3-none-any.whl (22 kB)
Collecting zipp>=0.5
  Downloading zipp-3.4.1-py3-none-any.whl (5.2 kB)
Building wheels for collected packages: gast, termcolor, wrapt
  Building wheel for gast (setup.py) ... - done
  Created wheel for gast: filename=gast-0.2.2-py3-none-any.whl size=7538 sha256=40d97b6dc9eb19dffdcf8079f122ea56416c6ea6d8995e0e21e794da6bccef67
  Stored in directory: /root/.cache/pip/wheels/21/7f/02/420f32a803f7d0967b48dd823da3f558c5166991bfd204eef3
  Building wheel for termcolor (setup.py) ... - done
  Created wheel for termcolor: filename=termcolor-1.1.0-py3-none-any.whl size=4829 sha256=5caf67a8e374e2db1c300c28439268de7353c50ef3f9bc8cd536b81d455834f4
  Stored in directory: /root/.cache/pip/wheels/3f/e3/ec/8a8336ff196023622fbcb36de0c5a5c218cbb24111d1d4c7f2
  Building wheel for wrapt (setup.py) ... - \ | done
  Created wheel for wrapt: filename=wrapt-1.12.1-cp37-cp37m-linux_x86_64.whl size=71002 sha256=95af20afd1a1d6ecb3ac717b59900e7d253d00fd9ed84e8b6a290eccc148adbf
  Stored in directory: /root/.cache/pip/wheels/62/76/4c/aa25851149f3f6d9785f6c869387ad82b3fd37582fa8147ac6
Successfully built gast termcolor wrapt
Installing collected packages: zipp, typing-extensions, six, numpy, importlib-metadata, cached-property, werkzeug, protobuf, markdown, h5py, grpcio, absl-py, wrapt, termcolor, tensorflow-estimator, tensorboard, opt-einsum, keras-preprocessing, keras-applications, google-pasta, gast, astor, tensorflow
Successfully installed absl-py-0.12.0 astor-0.8.1 cached-property-1.5.2 gast-0.2.2 google-pasta-0.2.0 grpcio-1.37.0 h5py-3.2.1 importlib-metadata-3.10.0 keras-applications-1.0.8 keras-preprocessing-1.1.2 markdown-3.3.4 numpy-1.20.2 opt-einsum-3.3.0 protobuf-3.15.8 six-1.15.0 tensorboard-1.15.0 tensorflow-1.15.0 tensorflow-estimator-1.15.1 termcolor-1.1.0 typing-extensions-3.7.4.3 werkzeug-1.0.1 wrapt-1.12.1 zipp-3.4.1

Installation PyTorch

PyTorch ist großartig für die Texterstellung mit gtp2. Sie müssen zu Start Locally | PyTorch gehen und Ihre Installationsangaben auflisten.

pytorch
pip install torch==1.8.1+cpu torchvision==0.9.1+cpu torchaudio==0.8.1 -f https://download.py
ytorch.org/whl/torch_stable.html

GPT-2 erhalten und verwenden

Klonen Sie das GPT-2-Repository auf Ihren Computer:

git clone https://github.com/r23/gpt-2.git

Installieren Sie innerhalb der aktivierten Conda-Umgebung, die Sie verwenden, die im GPT-2-Repository angegebenen Anforderungen:

cd gpt-2
~/gpt-2 # pip install --upgrade -r requirements.txt

Verwenden Sie das Skript zum Herunterladen des Modells, das mit dem GPT-2-Repository geliefert wird, um ein vortrainiertes Modell herunterzuladen:

python3 download_model.py 774M

Sie können angeben, welches der verschiedenen GPT-2-Modelle Sie herunterladen möchten. Oben haben wir einen Download des 774-Millionen-Parameter-Modells angefordert, was etwa 3,1 Gigabyte entspricht. Sie können auch die kleineren 124M- oder 355M-Modelle oder das viel größere 1,5B-Modell anfordern.

Sie müssen dann die Datei src/interactive_conditional_samples.py mit Ihrem bevorzugten Programmiereditor öffnen und den model_name auf den heruntergeladenen Namen aktualisieren:

Editor

Sie können dann das Python-Skript ausführen:

python3 src/interactive_conditional_samples.py

Dies wird das Modell starten und Ihnen erlauben, etwas Text einzugeben. Sie werden schließlich (wahrscheinlich nach einigen Warnungen, die Sie bezüglich Ihrer CPU und der Version von TensorFlow ignorieren können) etwas wie dieses sehen:

Model prompt >>> 

Geben Sie einen englischen Satz ein und drücken Sie die Eingabetaste. Warten Sie ein wenig und sehen Sie, was das Modell als Antwort generiert.

Jetzt sind Sie gefragt!

Haben Sie Anregungen, Ergänzungen, einen Fehler gefunden oder ist dieser Beitrag nicht mehr aktuell? Dann freuen wir uns auf Ihren Kommentar.