CATATAN
Terjemahan PyTorch sekarang tidak digunakan lagi, harap gunakan fairseq sebagai gantinya.
Translate adalah perpustakaan untuk terjemahan mesin yang ditulis dalam PyTorch. Ini memberikan pelatihan untuk model urutan-ke-urutan. Translate mengandalkan fairseq, pustaka urutan-ke-urutan umum, yang berarti model yang diterapkan di Translate dan Fairseq dapat dilatih. Translate juga menyediakan kemampuan untuk mengekspor beberapa model ke grafik Caffe2 melalui ONNX dan memuat serta menjalankan model ini dari C++ untuk tujuan produksi. Saat ini, kami mengekspor komponen (encoder, decoder) ke Caffe2 secara terpisah dan pencarian berkas diimplementasikan dalam C++. Dalam waktu dekat, kami juga dapat mengekspor pencarian berkas. Kami juga berencana menambahkan dukungan ekspor ke lebih banyak model.
Jika Anda hanya tertarik untuk melatih/mengevaluasi model MT, dan tidak mengekspor model ke Caffe2 melalui ONNX, Anda dapat menginstal Translate untuk Python 3 dengan mengikuti beberapa langkah berikut:
git clone https://github.com/pytorch/translate.git pytorch-translate && cd pytorch-translate
python setup.py install
Asalkan Anda telah menginstal CUDA, Anda dapat melakukannya dengan baik.
Instal Docker dan nvidia-docker, lalu jalankan
sudo docker pull pytorch/translate
sudo nvidia-docker run -i -t --rm pytorch/translate /bin/bash
. ~/miniconda/bin/activate
cd ~/translate
Anda sekarang dapat menjalankan contoh perintah di bagian Contoh Penggunaan di bawah. Anda juga dapat melihat versi gambar yang tersedia di https://hub.docker.com/r/pytorch/translate/tags/.
Instruksi ini terutama diuji pada Ubuntu 16.04.5 LTS (Xenial Xerus) dengan kartu Tesla M60 dan instalasi CUDA 9. Kami sangat menganjurkan Anda untuk melaporkan masalah jika Anda tidak dapat menginstal proyek ini untuk konfigurasi spesifik Anda.
Jika Anda belum memiliki lingkungan Anaconda dengan Python 3.6, Anda dapat menginstalnya melalui Miniconda3:
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
Kloning repo Terjemahan:
git clone https://github.com/pytorch/translate.git
pushd translate
Instal paket conda PyTorch:
# 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}"
Instal ONNX:
git clone --recursive https://github.com/onnx/onnx.git
yes | pip install ./onnx 2>&1 | tee ONNX_OUT
Jika Anda mendapatkan kesalahan Protobuf compiler not found
, Anda perlu menginstalnya:
conda install -c anaconda protobuf
Lalu, coba instal ONNX lagi:
yes | pip install ./onnx 2>&1 | tee ONNX_OUT
Bangun Terjemahan:
pip uninstall -y pytorch-translate
python3 setup.py build develop
Sekarang Anda seharusnya sudah bisa menjalankan contoh skrip di bawah ini!
Catatan: contoh perintah yang diberikan mengasumsikan bahwa Anda adalah akar dari repositori GitHub yang dikloning atau bahwa Anda berada di direktori translate
gambar Docker atau Amazon. Anda mungkin juga perlu memastikan lingkungan Anaconda telah diaktifkan.
Kami memberikan contoh skrip untuk melatih model tugas Jerman-Inggris IWSLT 2014. Kami menggunakan perintah ini untuk mendapatkan model terlatih:
bash pytorch_translate/examples/train_iwslt14.sh
Model yang telah dilatih sebelumnya sebenarnya berisi dua pos pemeriksaan yang sesuai dengan pelatihan dua kali dengan inisialisasi parameter secara acak. Ini berguna untuk mendapatkan ansambel. Kumpulan data ini relatif kecil (~160 ribu pasangan kalimat), sehingga pelatihan akan selesai dalam beberapa jam pada satu GPU.
Kami memberikan dukungan untuk memvisualisasikan statistik pelatihan dengan tensorboard. Sebagai ketergantungan, Anda perlu menginstal tensorboard_logger.
pip install tensorboard_logger
Harap pastikan juga bahwa tensorboard sudah terpasang. Itu juga dilengkapi dengan instalasi tensorflow
.
Anda dapat menggunakan contoh skrip di atas untuk berlatih dengan tensorboard, tetapi perlu mengubah baris 10 dari :
CUDA_VISIBLE_DEVICES=0 python3 pytorch_translate/train.py
ke
CUDA_VISIBLE_DEVICES=0 python3 pytorch_translate/train_with_tensorboard.py
Direktori log peristiwa untuk tensorboard dapat ditentukan dengan opsi --tensorboard_dir
dengan nilai default: run-1234
. Direktori ini ditambahkan ke argumen --save_dir
Anda.
Misalnya pada skrip di atas, Anda dapat memvisualisasikannya dengan:
tensorboard --logdir checkpoints/runs/run-1234
Beberapa proses dapat dibandingkan dengan menentukan --tensorboard_dir
yang berbeda. yaitu run-1234
dan run-2345
. Kemudian
tensorboard --logdir checkpoints/runs
dapat memvisualisasikan statistik dari kedua proses.
Model yang telah dilatih sebelumnya untuk IWSLT 2014 dapat dievaluasi dengan menjalankan skrip contoh:
bash pytorch_translate/examples/generate_iwslt14.sh
Perhatikan peningkatan performa saat menggunakan ansambel ukuran 2, bukan model tunggal.
Kami memberikan contoh skrip untuk mengekspor model PyTorch ke grafik Caffe2 melalui ONNX:
bash pytorch_translate/examples/export_iwslt14.sh
Ini akan menghasilkan dua file, encoder.pb
dan decoder.pb
, yang sesuai dengan komputasi encoder dan satu langkah decoder. Contoh ini mengekspor satu pos pemeriksaan ( --checkpoint model/averaged_checkpoint_best_0.pt
tetapi juga memungkinkan untuk mengekspor ansambel ( --checkpoint model/averaged_checkpoint_best_0.pt --checkpoint model/averaged_checkpoint_best_1.pt
). Perhatikan bahwa selama ekspor, Anda juga dapat mengontrol beberapa hyperparameter seperti ukuran pencarian berkas, kata, dan hadiah UNK.
Untuk menggunakan contoh model Caffe2 yang diekspor guna menerjemahkan kalimat, jalankan:
echo "hallo welt" | bash pytorch_translate/examples/translate_iwslt14.sh
Perhatikan bahwa model ini menerima masukan BPE, sehingga beberapa kata masukan perlu dipecah menjadi beberapa token. Misalnya, "hineinstopfen" direpresentasikan sebagai "hinein@@ stop@@ fen".
Kami menyambut Anda untuk menjelajahi model yang kami miliki di folder pytorch_translate/research
. Jika Anda menggunakannya dan menemukan kesalahan apa pun, silakan tempelkan log dan perintah yang dapat kami gunakan untuk mereproduksi kesalahan tersebut. Jangan ragu untuk menyumbangkan perbaikan bug atau melaporkan pengalaman Anda, namun perlu diingat bahwa model ini masih dalam proses sehingga saat ini tidak didukung.
Kami menyambut kontribusi! Lihat file CONTRIBUTING.md
untuk mengetahui cara membantu.
Terjemahan berlisensi BSD, seperti yang ditemukan dalam file LICENSE
.