ملحوظة
لقد تم الآن إيقاف خدمة PyTorch Translate، يرجى استخدام fairseq بدلاً من ذلك.
Translate هي مكتبة للترجمة الآلية المكتوبة بلغة PyTorch. ويوفر التدريب على نماذج التسلسل إلى التسلسل. تعتمد خدمة Translate على fairseq، وهي مكتبة عامة للتسلسل إلى تسلسل، مما يعني أنه يمكن تدريب النماذج المطبقة في كل من Translate وFairseq. توفر الترجمة أيضًا القدرة على تصدير بعض النماذج إلى الرسوم البيانية Caffe2 عبر ONNX وتحميل هذه النماذج وتشغيلها من C++ لأغراض الإنتاج. حاليًا، نقوم بتصدير المكونات (جهاز التشفير ووحدة فك التشفير) إلى Caffe2 بشكل منفصل ويتم تنفيذ بحث الشعاع في لغة C++. وفي المستقبل القريب، سنكون قادرين على تصدير بحث الشعاع أيضًا. نخطط أيضًا لإضافة دعم التصدير إلى المزيد من النماذج.
إذا كنت مهتمًا فقط بتدريب/تقييم نماذج الترجمة الآلية، وليس بتصدير النماذج إلى Caffe2 عبر ONNX، فيمكنك تثبيت Translate for 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
استنساخ ترجمة الريبو:
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}"
تثبيت أونكس:
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 ألف زوج من الجمل)، لذا سيكتمل التدريب في غضون ساعات قليلة على وحدة معالجة رسومات واحدة.
نحن نقدم الدعم لتصور إحصائيات التدريب باستخدام Tensorboard. باعتبارها تبعية، ستحتاج إلى تثبيت Tensorboard_logger.
pip install tensorboard_logger
يرجى أيضًا التأكد من تثبيت لوحة الشد. كما يأتي مع تثبيت tensorflow
.
يمكنك استخدام المثال النصي أعلاه للتدريب باستخدام Tensorboard، لكن عليك تغيير السطر 10 من:
CUDA_VISIBLE_DEVICES=0 python3 pytorch_translate/train.py
ل
CUDA_VISIBLE_DEVICES=0 python3 pytorch_translate/train_with_tensorboard.py
يمكن تحديد دليل سجل الأحداث لـ Tensorboard عن طريق الخيار --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
للتعرف على كيفية المساعدة.
الترجمة مرخصة من قبل BSD، كما هو موجود في ملف LICENSE
.