Dieser Beitrag Erklärung zu BERT! Lassen Sie uns eine Vorhersage mit dem japanischen Modell machen! Wenn Sie der Straße folgen, können Sie BERT problemlos im Google-Labor erleben.
Ich habe mich gefragt, ob es öffentlich auf einem billigen Server anstatt in einem Google-Labor verwendet werden kann, also habe ich versucht, es auf Sakura VPS1G (800 Yen pro Monat) auszuführen.
Der Punkt ist, dass die GPU, die mit Google Colaboratory verwendet werden kann, nicht mit Sakura VPS verwendet werden kann. Daher muss die CPU-Version der Bibliothek installiert werden.
Sakura VPS Speicher 1 GB, Speicher SSD 50 GB, CPU 2 Kerne (800 Yen pro Monat) Standardinstallation CentOS8 x86_64
Zunächst habe ich unter Bezugnahme auf den folgenden Artikel einen "anaconda" -Benutzer erstellt und eine Umgebung "ml_env" für maschinelles Lernen erstellt. In dem Artikel wurde es mit Centos 7.7 erstellt, aber ich hatte keine Probleme mit CentOS 8. [Teil 1] Erstellen Sie eine Python-Entwicklungsumgebung für maschinelles Lernen unter CentOS (Anaconda-Installation) - Qiita
In Fortsetzung des obigen Artikels werden wir die maschinelle Lernumgebung "ml_env" als "anaconda" -Benutzer aktivieren und BERT in dieser Umgebung einführen.
pip install transformers[tf-cpu]
pip install torch==1.7.0+cpu torchvision==0.8.1+cpu torchaudio===0.7.0 -f https://download.pytorch.org/whl/torch_stable.html
Sie haben jetzt die erforderlichen Bibliotheken installiert.
Als nächstes das [Kurohashi / Kawahara / Murawaki Laboratory] der Universität Kyoto (http://nlp.ist.i.kyoto-u.ac.jp/index.php?BERT%E6%97%A5%E6% 9C% AC% E8% AA% 9EPretrained% E3% 83% A2% E3% 83% 87% E3% 83% AB) ist jetzt verfügbar. Laden Sie das BERT Japanese Pretrained-Modell herunter.
Angenommen, Sie befinden sich derzeit als Anaconda-Benutzer in / home / anaconda /
, erstellen und verschieben Sie das Verzeichnis / home / anaconda / bert / japan_test
, um das japanische Modell zu speichern.
mkdir bert
cd bert
mkdir japan_test
cd japan_test
Laden Sie dann die Download-Datei herunter, entpacken Sie sie und löschen Sie sie.
curl -OL http://nlp.ist.i.kyoto-u.ac.jp/nl-resource/JapaneseBertPretrainedModel/Japanese_L-12_H-768_A-12_E-30_BPE.zip
unzip Japanese_L-12_H-768_A-12_E-30_BPE.zip
rm -rf Japanese_L-12_H-768_A-12_E-30_BPE.zip
Das Modell ist jetzt unter / home / anaconda / bert / japan_test / apanese_L-12_H-768_A-12_E-30_BPE
installiert.
Beenden Sie das von Ihnen erstellte Verzeichnis.
cd ../..
Platzieren Sie die Python-Programmdatei bert_test.py
für BERT-Tests hier in / home / anaconda /
.
bert_test.py
from transformers import BertTokenizer, BertForMaskedLM, BertConfig
import torch
import numpy as np
config = BertConfig.from_json_file('/home/anaconda/bert/japan_test/Japanese_L-12_H-768_A-12_E-30_BPE/bert_config.json')
model = BertForMaskedLM.from_pretrained('/home/anaconda/bert/japan_test/Japanese_L-12_H-768_A-12_E-30_BPE/pytorch_model.bin', config=config)
bert_tokenizer = BertTokenizer('/home/anaconda/bert/japan_test/Japanese_L-12_H-768_A-12_E-30_BPE/vocab.txt',
do_lower_case=False, do_basic_tokenize=False)
tokenized_text = ['[CLS]', 'Es war einmal', 'Urashima', 'Das', 'Fischer', 'Aber', 'Leben', 'War dort', '。'
, 'Gibt es', 'Tag', '、', '[MASK]', 'Aber', 'Strand', 'Zu', 'Gehen', 'Wenn du es bist', '[SEP]']
masked_index = 12
tokens=bert_tokenizer.convert_tokens_to_ids(tokenized_text)
tokens_tensor=torch.tensor([tokens])
model.eval()
with torch.no_grad():
outputs = model(tokens_tensor)
predictions = outputs[0]
_,predicted_indexes=torch.topk(predictions[0,masked_index],k=10)
predicted_tokens = bert_tokenizer.convert_ids_to_tokens(predicted_indexes.tolist())
print(predicted_tokens)
Dieses Programm
['[CLS]', 'Es war einmal', 'Urashima', 'Das', 'Fischer', 'Aber', 'Leben', 'War dort', '。', 'Gibt es', 'Tag', '、', '[MASK]', 'Aber', 'Strand', 'Zu', 'Gehen', 'Wenn du es bist', '[SEP]']
Sagen Sie die Wörter voraus, die in die "[MASKE]" von gehen.
python bert_test.py
Wenn Sie es mit ausführen
['Fischer', '[UNK]', 'Mann', 'Menschen', 'Mann', 'Jugend', 'Frau', '役Mann', 'Junge', 'Fisch']
Das ist das Ergebnis. Es ist Ihnen gelungen, BERT auszuführen.
Ich wollte dieses BERT-Analyseergebnis in einer Webanwendung verwenden, also habe ich mit Flask einen lokalen Webserver eingerichtet und das BERT-Modell zu einem Daemon (resident) in Flask gemacht. Dann habe ich mit Apache einen Webserver eingerichtet und als API veröffentlicht. Mit anderen Worten, wenn ich von außen auf die Apache-API zugreife, greift das API-Programm auf BERT on Flask zu und erhält das Analyseergebnis von BERT. das ist,
BERT-Demo zum Erraten von Wörtern
Es wird sein. Bitte versuchen Sie es, wenn Sie möchten.
Recommended Posts