메모
PyTorch Translate는 이제 더 이상 사용되지 않습니다. 대신 fairseq를 사용하세요.
Translate는 PyTorch로 작성된 기계 번역용 라이브러리입니다. 시퀀스 간 모델에 대한 교육을 제공합니다. Translate는 일반적인 시퀀스-시퀀스 라이브러리인 fairseq를 사용합니다. 즉, Translate와 Fairseq 모두에서 구현된 모델을 학습할 수 있습니다. Translate는 또한 ONNX를 통해 일부 모델을 Caffe2 그래프로 내보내고 생산 목적으로 C++에서 이러한 모델을 로드하고 실행하는 기능을 제공합니다. 현재는 컴포넌트(인코더, 디코더)를 Caffe2로 별도로 내보내고 있으며 빔 검색은 C++로 구현되어 있습니다. 가까운 시일 내에 빔 검색도 내보낼 수 있게 될 것입니다. 또한 더 많은 모델에 수출 지원을 추가할 계획입니다.
MT 모델 학습/평가에만 관심이 있고 ONNX를 통해 모델을 Caffe2로 내보내는 데 관심이 없다면 다음 몇 단계에 따라 Python 3용 번역을 설치할 수 있습니다.
git clone https://github.com/pytorch/translate.git pytorch-translate && cd pytorch-translate
python setup.py install
실행CUDA가 설치되어 있다면 잘 작동할 것입니다.
Docker와 nvidia-docker를 설치한 후 실행하세요.
sudo docker pull pytorch/translate
sudo nvidia-docker run -i -t --rm pytorch/translate /bin/bash
. ~/miniconda/bin/activate
cd ~/translate
이제 아래 사용 예 섹션에서 샘플 명령을 실행할 수 있습니다. https://hub.docker.com/r/pytorch/translate/tags/에서 사용 가능한 이미지 버전을 확인할 수도 있습니다.
이 지침은 주로 Tesla M60 카드와 CUDA 9가 설치된 Ubuntu 16.04.5 LTS(Xenial Xerus)에서 테스트되었습니다. 특정 구성에 대해 이 프로젝트를 설치할 수 없는 경우 문제를 보고하는 것이 좋습니다.
Python 3.6이 포함된 기존 Anaconda 환경이 아직 없는 경우 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
번역 저장소를 복제합니다.
git clone https://github.com/pytorch/translate.git
pushd translate
PyTorch conda 패키지를 설치합니다.
# 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를 설치합니다.
git clone --recursive https://github.com/onnx/onnx.git
yes | pip install ./onnx 2>&1 | tee ONNX_OUT
Protobuf compiler not found
오류가 발생하는 경우 이를 설치해야 합니다.
conda install -c anaconda protobuf
그런 다음 ONNX를 다시 설치해 보세요.
yes | pip install ./onnx 2>&1 | tee ONNX_OUT
빌드 번역:
pip uninstall -y pytorch-translate
python3 setup.py build develop
이제 아래 예제 스크립트를 실행할 수 있습니다!
참고: 제공된 예제 명령에서는 사용자가 복제된 GitHub 저장소의 루트이거나 Docker 또는 Amazon 이미지의 translate
디렉터리에 있다고 가정합니다. Anaconda 환경이 활성화되어 있는지 확인해야 할 수도 있습니다.
IWSLT 2014 독일어-영어 작업을 위한 모델을 훈련하기 위한 예제 스크립트를 제공합니다. 사전 훈련된 모델을 얻기 위해 이 명령을 사용했습니다.
bash pytorch_translate/examples/train_iwslt14.sh
사전 훈련된 모델에는 실제로 매개변수의 무작위 초기화를 통해 두 번 훈련하는 것에 해당하는 두 개의 체크포인트가 포함되어 있습니다. 이는 앙상블을 얻는 데 유용합니다. 이 데이터세트는 상대적으로 작기 때문에(~160,000개의 문장 쌍) 단일 GPU에서 훈련은 몇 시간 안에 완료됩니다.
우리는 텐서보드를 사용하여 훈련 통계 시각화를 지원합니다. 종속성으로 tensorboard_logger가 설치되어 있어야 합니다.
pip install tensorboard_logger
텐서보드가 설치되어 있는지도 확인하세요. tensorflow
설치도 함께 제공됩니다.
위의 예제 스크립트를 사용하여 텐서보드로 학습할 수 있지만 10행을 다음에서 변경해야 합니다.
CUDA_VISIBLE_DEVICES=0 python3 pytorch_translate/train.py
에게
CUDA_VISIBLE_DEVICES=0 python3 pytorch_translate/train_with_tensorboard.py
텐서보드의 이벤트 로그 디렉터리는 --tensorboard_dir
옵션으로 지정할 수 있으며 기본값은 run-1234
입니다. 이 디렉토리는 --save_dir
인수에 추가됩니다.
예를 들어 위 스크립트에서 다음을 사용하여 시각화할 수 있습니다.
tensorboard --logdir checkpoints/runs/run-1234
서로 다른 --tensorboard_dir
지정하여 여러 실행을 비교할 수 있습니다. 즉, run-1234
및 run-2345
입니다. 그 다음에
tensorboard --logdir checkpoints/runs
두 실행의 통계를 시각화할 수 있습니다.
IWSLT 2014에 대한 사전 훈련된 모델은 예제 스크립트를 실행하여 평가할 수 있습니다.
bash pytorch_translate/examples/generate_iwslt14.sh
단일 모델 대신 크기 2의 앙상블을 사용할 때 성능이 향상됩니다.
ONNX를 통해 PyTorch 모델을 Caffe2 그래프로 내보내는 예제 스크립트를 제공합니다.
bash pytorch_translate/examples/export_iwslt14.sh
그러면 인코더의 계산과 디코더의 한 단계에 해당하는 두 개의 파일 encoder.pb
및 decoder.pb
이 출력됩니다. 이 예에서는 단일 체크포인트( --checkpoint model/averaged_checkpoint_best_0.pt
를 내보내지만 앙상블( --checkpoint model/averaged_checkpoint_best_0.pt --checkpoint model/averaged_checkpoint_best_1.pt
)을 내보낼 수도 있습니다. 내보내는 동안 다음을 수행할 수도 있습니다. 빔 검색 크기, 단어 및 UNK 보상과 같은 몇 가지 하이퍼 매개변수를 제어합니다.
내보낸 샘플 Caffe2 모델을 사용하여 문장을 번역하려면 다음을 실행하세요.
echo "hallo welt" | bash pytorch_translate/examples/translate_iwslt14.sh
모델은 BPE 입력을 사용하므로 일부 입력 단어를 여러 토큰으로 분할해야 합니다. 예를 들어 "hineinstopfen"은 "hinein@@ stop@@ fen"으로 표시됩니다.
pytorch_translate/research
폴더에 있는 모델을 탐색해 보시기 바랍니다. 이를 사용하다가 오류가 발생하면 오류를 재현하는 데 사용할 수 있는 로그와 명령을 붙여넣으세요. 버그 수정에 기여하거나 경험을 보고해 주시기 바랍니다. 하지만 이러한 모델은 진행 중인 작업이므로 현재 지원되지 않는다는 점을 명심하세요.
우리는 기여를 환영합니다! 도움을 주는 방법은 CONTRIBUTING.md
파일을 참조하세요.
번역은 LICENSE
파일에 있는 BSD 라이센스를 받았습니다.