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.
Deep Learning Deutsch
Wie man mit einem modernen Deep-Learning-Modell seine Gedanken automatisch vervollständigt, auf Deutsch!
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 Anacon.
Anaconda-Umgebung
Erstellen Sie eine neue Anaconda-Umgebung mit dem Namen tlm_env und führen Sie Python aus.
Verwenden Sie:
conda create --name tlm_env python=3.7
Ausgabe:
Collecting package metadata (current_repodata.json): - \ | / - \ | / - done
Solving environment: | / done
## Package Plan ##
environment location: /root/anaconda3/envs/tlm_env
added / updated specs:
- python=3.7
The following packages will be downloaded:
package | build
---------------------------|-----------------
ca-certificates-2021.4.13 | h06a4308_1 114 KB
------------------------------------------------------------
Total: 114 KB
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.4.13-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 mit der Auswahl an Paketen einverstanden sind, geben Sie y ein.
Ausgabe:
Downloading and Extracting Packages
ca-certificates-2021 | 114 KB | | 0%
ca-certificates-2021 | 114 KB | ##################################### | 100%
ca-certificates-2021 | 114 KB | ##################################### | 100%
Preparing transaction: \ | / - \ | / done
Verifying transaction: \ | / - \ | / - \ | / done
Executing transaction: \ | / - \ | / - \ | / - \ | done
#
# To activate this environment, use
#
# $ conda activate tlm_env
#
# To deactivate an active environment, use
#
# $ conda deactivate
Sie können Ihre neue Umgebung aktivieren, indem Sie Folgendes eingeben:
conda activate tlm_env
Installation PyTorch
PyTorch ist großartig für die Texterstellung mit gtp2. Sie müssen zu Start Locally | PyTorch gehen und Ihre Installationsangaben auflisten.
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
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
Installieren Sie innerhalb der aktivierten Conda-Umgebung, die Sie verwenden, die im GPT-2-Repository angegebenen Anforderungen:
~/gpt-2 # pip install --upgrade -r requirements.txt
cd ..
Die Open AI GPT-2 Modelle verwenden TensorFlow. Eine Installationsanleitung finden Sie hier https://blog.r23.de/kuenstliche-intelligenz/installation-openais-spachmodell-gpt2/
transformer-lm
installieren
Download
mkdir Notebooks
cd Notebooks
git clone https://github.com/lopuhin/transformer-lm.git
Installation
cd transformer-lm
pip install -r requirements.txt
python setup.py develop
Ausgabe
running develop
running egg_info
writing lm.egg-info/PKG-INFO
writing dependency_links to lm.egg-info/dependency_links.txt
writing entry points to lm.egg-info/entry_points.txt
writing requirements to lm.egg-info/requires.txt
writing top-level names to lm.egg-info/top_level.txt
reading manifest file 'lm.egg-info/SOURCES.txt'
writing manifest file 'lm.egg-info/SOURCES.txt'
running build_ext
Creating /root/anaconda3/envs/tlm_env/lib/python3.7/site-packages/lm.egg-link (link to .)
Adding lm 0.1.0 to easy-install.pth file
Installing gpt-2 script to /root/anaconda3/envs/tlm_env/bin
Installing gpt-2-gen script to /root/anaconda3/envs/tlm_env/bin
Installing gpt-2-tf-train script to /root/anaconda3/envs/tlm_env/bin
Installing lm-web-ui script to /root/anaconda3/envs/tlm_env/bin
Installing sp-encode script to /root/anaconda3/envs/tlm_env/bin
Installing sp-train script to /root/anaconda3/envs/tlm_env/bin
Installed /root/Notebooks/transformer-lm
Processing dependencies for lm==0.1.0
Searching for torch==1.8.1
Best match: torch 1.8.1
Adding torch 1.8.1 to easy-install.pth file
Installing convert-caffe2-to-onnx script to /root/anaconda3/envs/tlm_env/bin
Installing convert-onnx-to-caffe2 script to /root/anaconda3/envs/tlm_env/bin
Using /root/anaconda3/envs/tlm_env/lib/python3.7/site-packages
Searching for sentencepiece==0.1.95
Best match: sentencepiece 0.1.95
Adding sentencepiece 0.1.95 to easy-install.pth file
Using /root/anaconda3/envs/tlm_env/lib/python3.7/site-packages
Searching for numpy==1.20.2
Best match: numpy 1.20.2
Adding numpy 1.20.2 to easy-install.pth file
Installing f2py script to /root/anaconda3/envs/tlm_env/bin
Installing f2py3 script to /root/anaconda3/envs/tlm_env/bin
Installing f2py3.7 script to /root/anaconda3/envs/tlm_env/bin
Using /root/anaconda3/envs/tlm_env/lib/python3.7/site-packages
Searching for attrs==20.3.0
Best match: attrs 20.3.0
Adding attrs 20.3.0 to easy-install.pth file
Using /root/anaconda3/envs/tlm_env/lib/python3.7/site-packages
Searching for typing-extensions==3.7.4.3
Best match: typing-extensions 3.7.4.3
Adding typing-extensions 3.7.4.3 to easy-install.pth file
Using /root/anaconda3/envs/tlm_env/lib/python3.7/site-packages
Finished processing dependencies for lm==0.1.0
cd ..
Zamia AI’s German GPT-2 Model
Zamia-Brain bietet Softwarekomponenten, Werkzeuge und Modelle für die semantische Verarbeitung natürlicher Sprache. Derzeit basiert es auf OpenAI GPT-2.
Ein 384M deutsches GPT-2 Modell steht zum Download bereit
mkdir pytorch_models
cd pytorch_models
wget https://goofy.zamia.org/zamia-speech/brain/gpt2-german-345M-r20191119.tar.xz
wget https://goofy.zamia.org/zamia-speech/brain/sp.vocab
tar xvf gpt2-german-345M-r20191119.tar.xz
Optional
wget https://goofy.zamia.org/zamia-speech/brain/transformerXL-german-163M-r20190928.tar.xz
tar xvf transformerXL-german-163M-r20190928.tar.xz
rm gpt2-german-345M-r20191119.tar.xz
rm xvf transformerXL-german-163M-r20190928.tar.xz
Für weitere Informationen besuchen Sie die Zamia-Brain Website
Deep Learning Deutsch
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Guenter Bartsch gooofy https://github.com/gooofy
# https://github.com/lopuhin/transformer-lm/issues/2#issuecomment-511742139
from pathlib import Path
from lm import inference
import numpy as np
MODEL_PATH = Path('/..../pytorch_models/de345-root/')
TOKENS_TO_GENERATE = 38
TOP_K = 8
mw = inference.ModelWrapper.load(MODEL_PATH)
txt = "Die Forschung an der künstlichen Intelligenz"
tokens = mw.tokenize(txt)
for i in range(TOKENS_TO_GENERATE):
# generate TOP_K potential next tokens
ntk = mw.get_next_top_k(tokens, TOP_K)
# convert log probs to real probs
logprobs = np.array(list(map(lambda a: a[0], ntk)))
probs = np.exp(logprobs) / np.exp(logprobs).sum()
# pick next token randomly according to probs distribution
next_token_n = np.random.choice(TOP_K, p=probs)
next_token = ntk[next_token_n][1]
print (next_token)
tokens.append(next_token)
print(mw.sp_model.DecodePieces(tokens))
Danksagung
Vielen Dank an Günter Bartsch (Zamia AI) für das Training des deutschen GPT-2-Modells und an Konstantin Lopuhin für seine hervorragende Arbeit an transformer-lm, seiner PyTorch-Implementierung von GPT-2.
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.