บันทึก
ขณะนี้ PyTorch Translate เลิกใช้แล้ว โปรดใช้ fairseq แทน
Translate เป็นไลบรารีสำหรับการแปลด้วยเครื่องที่เขียนด้วย PyTorch ให้การฝึกอบรมสำหรับแบบจำลองตามลำดับ Translate อาศัย fairseq ซึ่งเป็นไลบรารีลำดับต่อลำดับทั่วไป ซึ่งหมายความว่าโมเดลที่ใช้งานทั้งใน Translate และ Fairseq สามารถฝึกได้ นอกจากนี้ Translate ยังให้ความสามารถในการส่งออกโมเดลบางรุ่นไปยังกราฟ Caffe2 ผ่าน ONNX และโหลดและรันโมเดลเหล่านี้จาก C++ เพื่อวัตถุประสงค์ในการใช้งานจริง ในปัจจุบัน เราส่งออกส่วนประกอบ (ตัวเข้ารหัส ตัวถอดรหัส) ไปยัง Caffe2 แยกกัน และมีการใช้การค้นหาบีมในภาษา C++ ในอนาคตอันใกล้นี้เราจะสามารถส่งออกการค้นหาบีมได้เช่นกัน นอกจากนี้เรายังวางแผนที่จะเพิ่มการสนับสนุนการส่งออกให้กับรุ่นอื่นๆ อีกด้วย
หากคุณเพียงสนใจที่จะฝึกอบรม/ประเมินโมเดล MT และไม่ต้องการส่งออกโมเดลไปยัง Caffe2 ผ่าน ONNX คุณสามารถติดตั้ง Translate สำหรับ 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/
คำแนะนำเหล่านี้ได้รับการทดสอบบน Ubuntu 16.04.5 LTS (Xenial Xerus) เป็นหลักด้วยการ์ด Tesla M60 และการติดตั้ง CUDA 9 เราขอแนะนำให้คุณรายงานปัญหาหากคุณไม่สามารถติดตั้งโปรเจ็กต์นี้สำหรับการกำหนดค่าเฉพาะของคุณได้
หากคุณยังไม่มีสภาพแวดล้อม Anaconda ที่มีอยู่ด้วย Python 3.6 คุณสามารถติดตั้งผ่าน 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
โคลน repo การแปล:
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 ที่โคลนไว้ หรือคุณอยู่ในไดเร็กทอรี translate
ของอิมเมจ Docker หรือ Amazon คุณอาจต้องตรวจสอบให้แน่ใจว่าคุณเปิดใช้งานสภาพแวดล้อม 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 แทนรุ่นเดียว
เราจัดเตรียมสคริปต์ตัวอย่างเพื่อส่งออกโมเดล PyTorch ไปยังกราฟ Caffe2 ผ่าน ONNX:
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
สำหรับวิธีช่วยเหลือ
Translate ได้รับลิขสิทธิ์ BSD ดังที่พบในไฟล์ LICENSE