Ctranslate2 هي مكتبة C ++ و Python لاستدلال فعال مع نماذج المحولات.
يقوم المشروع بتنفيذ وقت تشغيل مخصص يطبق العديد من تقنيات تحسين الأداء مثل تقدير الأوزان ، والانصهار الطبقات ، وإعادة ترتيب الدُفعات ، وما إلى ذلك ، لتسريع استخدام ذاكرة نماذج المحولات على وحدة المعالجة المركزية و GPU وتقليلها.
أنواع النماذج التالية مدعومة حاليًا:
يجب تحويل النماذج المتوافقة أولاً إلى تنسيق نموذج محسن. تتضمن المكتبة محولات لأطر متعددة:
المشروع موجه نحو الإنتاج ويأتي مع ضمانات التوافق المتخلف ، ولكنه يتضمن أيضًا ميزات تجريبية تتعلق بضغط النماذج وتسريع الاستدلال.
من الصعب تحقيق بعض هذه الميزات من خلال أطر التعلم العميق القياسية وهي الدافع لهذا المشروع.
يمكن تثبيت ctranslate2 مع PIP:
pip install ctranslate2يتم استخدام وحدة Python لتحويل النماذج ويمكن ترجمة أو إنشاء نص مع أسطر قليلة من التعليمات البرمجية:
translator = ctranslate2 . Translator ( translation_model_path )
translator . translate_batch ( tokens )
generator = ctranslate2 . Generator ( generation_model_path )
generator . generate_batch ( start_tokens )راجع الوثائق لمزيد من المعلومات والأمثلة.
نقوم بترجمة مجموعة en-> de newstest2014 مع نماذج متعددة:
تقارير القياس عن عدد الرموز المستهدفة التي تم إنشاؤها في الثانية (أعلى أفضل). يتم تجميع النتائج على عدة أشواط. راجع البرامج النصية القياسية لمزيد من التفاصيل وإعادة إنتاج هذه الأرقام.
يرجى ملاحظة أن النتائج الواردة أدناه صالحة فقط للتكوين المستخدم خلال هذا المعيار: قد يتغير الأداء المطلق والنسبي بإعدادات مختلفة.
| الرموز في الثانية | الأعلى. ذاكرة | بلو | |
|---|---|---|---|
| OpenNMT-TF WMT14 نموذج | |||
| OpenNMT-TF 2.31.0 (مع TensorFlow 2.11.0) | 209.2 | 2653 ميجابايت | 26.93 |
| OpenNMT-PY نموذج WMT14 | |||
| OpenNMT-PY 3.0.4 (مع Pytorch 1.13.1) | 275.8 | 2012 ميغابايت | 26.77 |
| - int8 | 323.3 | 1359 ميجابايت | 26.72 |
| Ctranslate2 3.6.0 | 658.8 | 849 ميجابايت | 26.77 |
| - INT16 | 733.0 | 672 ميجابايت | 26.82 |
| - int8 | 860.2 | 529 ميجابايت | 26.78 |
| - int8 + vmap | 1126.2 | 598 ميجابايت | 26.64 |
| نموذج OPUS-MT | |||
| Transformers 4.26.1 (مع Pytorch 1.13.1) | 147.3 | 2332 ميجابايت | 27.90 |
| ماريان 1.11.0 | 344.5 | 7605MB | 27.93 |
| - INT16 | 330.2 | 5901MB | 27.65 |
| - int8 | 355.8 | 4763 ميجابايت | 27.27 |
| Ctranslate2 3.6.0 | 525.0 | 721 ميغابايت | 27.92 |
| - INT16 | 596.1 | 660 ميجابايت | 27.53 |
| - int8 | 696.1 | 516 ميجابايت | 27.65 |
تم تنفيذها مع 4 مؤشرات ترابط على مثيل C5.2xlarge Amazon EC2 مجهز مع وحدة المعالجة المركزية Intel (R) Xeon (R) Platinum 8275Cl.
| الرموز في الثانية | الأعلى. ذاكرة GPU | الأعلى. ذاكرة وحدة المعالجة المركزية | بلو | |
|---|---|---|---|---|
| OpenNMT-TF WMT14 نموذج | ||||
| OpenNMT-TF 2.31.0 (مع TensorFlow 2.11.0) | 1483.5 | 3031 ميغابايت | 3122 ميجابايت | 26.94 |
| OpenNMT-PY نموذج WMT14 | ||||
| OpenNMT-PY 3.0.4 (مع Pytorch 1.13.1) | 1795.2 | 2973 ميجابايت | 3099MB | 26.77 |
| FasterTransformer 5.3 | 6979.0 | 2402 ميجابايت | 1131 ميغابايت | 26.77 |
| - Float16 | 8592.5 | 1360 ميجابايت | 1135 ميجابايت | 26.80 |
| Ctranslate2 3.6.0 | 6634.7 | 1261 ميغابايت | 953 ميجابايت | 26.77 |
| - int8 | 8567.2 | 1005 ميجابايت | 807 ميغابايت | 26.85 |
| - Float16 | 10990.7 | 941 ميغابايت | 807 ميغابايت | 26.77 |
| - int8 + float16 | 8725.4 | 813 ميجابايت | 800 ميجابايت | 26.83 |
| نموذج OPUS-MT | ||||
| Transformers 4.26.1 (مع Pytorch 1.13.1) | 1022.9 | 4097MB | 2109MB | 27.90 |
| ماريان 1.11.0 | 3241.0 | 3381 ميغابايت | 2156 ميجابايت | 27.92 |
| - Float16 | 3962.4 | 3239 ميجابايت | 1976 ميغابايت | 27.94 |
| Ctranslate2 3.6.0 | 5876.4 | 1197 ميجابايت | 754 ميجابايت | 27.92 |
| - int8 | 7521.9 | 1005 ميجابايت | 792 ميجابايت | 27.79 |
| - Float16 | 9296.7 | 909MB | 814 ميغابايت | 27.90 |
| - int8 + float16 | 8362.7 | 813 ميجابايت | 766 ميجابايت | 27.90 |
تم تنفيذها مع CUDA 11 على مثيل G5.xlarge Amazon EC2 مجهز مع وحدة معالجة الرسومات NVIDIA A10G (إصدار برنامج التشغيل: 510.47.03).