NOTIZ
PyTorch Translate ist jetzt veraltet. Bitte verwenden Sie stattdessen fairseq.
Translate ist eine in PyTorch geschriebene Bibliothek für maschinelle Übersetzung. Es bietet Training für Sequenz-zu-Sequenz-Modelle. Translate basiert auf fairseq, einer allgemeinen Sequenz-zu-Sequenz-Bibliothek, was bedeutet, dass Modelle, die sowohl in Translate als auch in Fairseq implementiert sind, trainiert werden können. Translate bietet außerdem die Möglichkeit, einige Modelle über ONNX in Caffe2-Graphen zu exportieren und diese Modelle für Produktionszwecke aus C++ zu laden und auszuführen. Derzeit exportieren wir Komponenten (Encoder, Decoder) separat nach Caffe2 und die Strahlsuche ist in C++ implementiert. In naher Zukunft werden wir auch die Strahlsuche exportieren können. Wir planen außerdem, die Exportunterstützung für weitere Modelle hinzuzufügen.
Wenn Sie nur daran interessiert sind, MT-Modelle zu trainieren/auszuwerten und die Modelle nicht über ONNX nach Caffe2 zu exportieren, können Sie Translate für Python 3 installieren, indem Sie die folgenden Schritte ausführen:
git clone https://github.com/pytorch/translate.git pytorch-translate && cd pytorch-translate
python setup.py install
ausVorausgesetzt, Sie haben CUDA installiert, können Sie loslegen.
Installieren Sie Docker und nvidia-docker und führen Sie es dann aus
sudo docker pull pytorch/translate
sudo nvidia-docker run -i -t --rm pytorch/translate /bin/bash
. ~/miniconda/bin/activate
cd ~/translate
Sie sollten nun in der Lage sein, die Beispielbefehle im Abschnitt „Verwendungsbeispiele“ unten auszuführen. Sie können die verfügbaren Bildversionen auch unter https://hub.docker.com/r/pytorch/translate/tags/ einsehen.
Diese Anleitung wurde hauptsächlich auf Ubuntu 16.04.5 LTS (Xenial Xerus) mit einer Tesla M60-Karte und einer CUDA 9-Installation getestet. Wir empfehlen Ihnen dringend, ein Problem zu melden, wenn Sie dieses Projekt für Ihre spezifische Konfiguration nicht installieren können.
Wenn Sie noch keine Anaconda-Umgebung mit Python 3.6 haben, können Sie eine über Miniconda3 installieren:
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
chmod +x miniconda.sh
./miniconda.sh -b -p ~/miniconda
rm miniconda.sh
. ~/miniconda/bin/activate
Klonen Sie das Translate-Repository:
git clone https://github.com/pytorch/translate.git
pushd translate
Installieren Sie das PyTorch-Conda-Paket:
# Set to 8 or 9 depending on your CUDA version.
TMP_CUDA_VERSION="9"
# Uninstall previous versions of PyTorch. Doing this twice is intentional.
# Error messages about torch not being installed are benign.
pip uninstall -y torch
pip uninstall -y torch
# This may not be necessary if you already have the latest cuDNN library.
conda install -y cudnn
# Add LAPACK support for the GPU.
conda install -y -c pytorch "magma-cuda${TMP_CUDA_VERSION}0"
# Install the combined PyTorch nightly conda package.
conda install pytorch-nightly cudatoolkit=${TMP_CUDA_VERSION}.0 -c pytorch
# Install NCCL2.
wget "https://s3.amazonaws.com/pytorch/nccl_2.1.15-1%2Bcuda${TMP_CUDA_VERSION}.0_x86_64.txz"
TMP_NCCL_VERSION="nccl_2.1.15-1+cuda${TMP_CUDA_VERSION}.0_x86_64"
tar -xvf "${TMP_NCCL_VERSION}.txz"
rm "${TMP_NCCL_VERSION}.txz"
# Set some environmental variables needed to link libraries correctly.
export CONDA_PATH="$(dirname $(which conda))/.."
export NCCL_ROOT_DIR="$(pwd)/${TMP_NCCL_VERSION}"
export LD_LIBRARY_PATH="${CONDA_PATH}/lib:${NCCL_ROOT_DIR}/lib:${LD_LIBRARY_PATH}"
ONNX installieren:
git clone --recursive https://github.com/onnx/onnx.git
yes | pip install ./onnx 2>&1 | tee ONNX_OUT
Wenn Sie die Fehlermeldung erhalten, dass der Protobuf compiler not found
, müssen Sie ihn installieren:
conda install -c anaconda protobuf
Versuchen Sie dann erneut, ONNX zu installieren:
yes | pip install ./onnx 2>&1 | tee ONNX_OUT
Build-Übersetzung:
pip uninstall -y pytorch-translate
python3 setup.py build develop
Jetzt sollten Sie in der Lage sein, die folgenden Beispielskripte auszuführen!
Hinweis: Bei den angegebenen Beispielbefehlen wird davon ausgegangen, dass Sie das Stammverzeichnis des geklonten GitHub-Repositorys sind oder sich im translate
des Docker- oder Amazon-Images befinden. Möglicherweise müssen Sie auch sicherstellen, dass die Anaconda-Umgebung aktiviert ist.
Wir stellen ein Beispielskript zum Trainieren eines Modells für die Deutsch-Englisch-Aufgabe IWSLT 2014 bereit. Wir haben diesen Befehl verwendet, um ein vorab trainiertes Modell zu erhalten:
bash pytorch_translate/examples/train_iwslt14.sh
Das vorab trainierte Modell enthält tatsächlich zwei Prüfpunkte, die einem zweimaligen Training mit zufälliger Initialisierung der Parameter entsprechen. Dies ist nützlich, um Ensembles zu erhalten. Dieser Datensatz ist relativ klein (ca. 160.000 Satzpaare), sodass das Training auf einer einzelnen GPU in wenigen Stunden abgeschlossen ist.
Wir bieten Unterstützung für die Visualisierung von Trainingsstatistiken mit Tensorboard. Als Abhängigkeit muss tensorboard_logger installiert sein.
pip install tensorboard_logger
Bitte stellen Sie außerdem sicher, dass das Tensorboard installiert ist. Es kommt auch mit tensorflow
Installation.
Sie können das obige Beispielskript verwenden, um mit Tensorboard zu trainieren, müssen jedoch Zeile 10 ändern von:
CUDA_VISIBLE_DEVICES=0 python3 pytorch_translate/train.py
Zu
CUDA_VISIBLE_DEVICES=0 python3 pytorch_translate/train_with_tensorboard.py
Das Ereignisprotokollverzeichnis für Tensorboard kann mit der Option --tensorboard_dir
mit einem Standardwert angegeben werden: run-1234
. Dieses Verzeichnis wird an Ihr Argument --save_dir
angehängt.
Im obigen Skript können Sie beispielsweise Folgendes visualisieren:
tensorboard --logdir checkpoints/runs/run-1234
Mehrere Läufe können durch die Angabe unterschiedlicher --tensorboard_dir
verglichen werden. dh run-1234
und run-2345
. Dann
tensorboard --logdir checkpoints/runs
kann Statistiken aus beiden Läufen visualisieren.
Ein vorab trainiertes Modell für IWSLT 2014 kann durch Ausführen des Beispielskripts evaluiert werden:
bash pytorch_translate/examples/generate_iwslt14.sh
Beachten Sie die Leistungsverbesserung bei Verwendung eines Ensembles der Größe 2 anstelle eines einzelnen Modells.
Wir stellen ein Beispielskript zum Exportieren eines PyTorch-Modells in ein Caffe2-Diagramm über ONNX bereit:
bash pytorch_translate/examples/export_iwslt14.sh
Dadurch werden zwei Dateien ausgegeben, encoder.pb
und decoder.pb
, die der Berechnung des Encoders und einem Schritt des Decoders entsprechen. Das Beispiel exportiert einen einzelnen Prüfpunkt ( --checkpoint model/averaged_checkpoint_best_0.pt
, es ist jedoch auch möglich, ein Ensemble zu exportieren ( --checkpoint model/averaged_checkpoint_best_0.pt --checkpoint model/averaged_checkpoint_best_1.pt
). Beachten Sie, dass Sie dies beim Export auch tun können Steuern Sie einige Hyperparameter wie Strahlsuchgröße, Wort- und UNK-Belohnungen.
Um das exportierte Caffe2-Beispielmodell zum Übersetzen von Sätzen zu verwenden, führen Sie Folgendes aus:
echo "hallo welt" | bash pytorch_translate/examples/translate_iwslt14.sh
Beachten Sie, dass das Modell BPE-Eingaben akzeptiert, sodass einige Eingabewörter in mehrere Token aufgeteilt werden müssen. Beispielsweise wird „hineinstopfen“ als „hinein@@ stop@@ fen“ dargestellt.
Wir heißen Sie herzlich willkommen, die Modelle zu erkunden, die wir im Ordner pytorch_translate/research
haben. Wenn Sie sie verwenden und auf Fehler stoßen, fügen Sie bitte Protokolle und einen Befehl ein, mit dem wir den Fehler reproduzieren können. Fühlen Sie sich frei, Bugfixes beizusteuern oder Ihre Erfahrungen zu melden. Beachten Sie jedoch, dass diese Modelle noch in Arbeit sind und daher derzeit nicht unterstützt werden.
Wir freuen uns über Beiträge! Weitere Informationen finden Sie in der Datei CONTRIBUTING.md
.
Translate ist BSD-lizenziert, wie in der LICENSE
Datei zu finden ist.