CTRANSLATE2 является библиотекой C ++ и Python для эффективного вывода с моделями трансформаторов.
Проект реализует пользовательское время выполнения, которое применяет много методов оптимизации производительности, таких как квантование весов, слияние слоев, переупорядочение партии и т. Д., Для ускорения и уменьшения использования памяти моделей трансформаторов на процессоре и графическом процессоре.
В настоящее время поддерживаются следующие типы моделей:
Совместимые модели должны быть сначала преобразованы в оптимизированный формат модели. Библиотека включает в себя преобразователи для нескольких рамок:
Проект ориентирован на производство и поставляется с гарантиями обратной совместимости, но также включает экспериментальные функции, связанные с сжатием модели и ускорением вывода.
Некоторые из этих функций трудно достичь со стандартными рамками глубокого обучения и являются мотивацией для этого проекта.
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 Test Set NewStest2014 с несколькими моделями:
Тест сообщает, что количество целевых токенов, генерируемых в секунду (лучше лучше). Результаты агрегируются по нескольким прогонам. Смотрите эталонные сценарии для получения более подробной информации и воспроизводите эти цифры.
Обратите внимание, что результаты, представленные ниже, действительны только для конфигурации, используемой во время этого эталона: Абсолютная и относительная производительность может измениться с различными настройками.
| Жетоны в секунду | Максимум память | Блю | |
|---|---|---|---|
| OpenNMT-TF WMT14 Модель | |||
| OpenNMT-TF 2.31.0 (с TensorFlow 2.11.0) | 209,2 | 2653MB | 26.93 |
| OpenNMT-PY WMT14 Модель | |||
| OpenNMT-PY 3.0.4 (с Pytorch 1.13.1) | 275,8 | 2012mb | 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 Model | |||
| Трансформаторы 4.26.1 (с Pytorch 1.13.1) | 147.3 | 2332 МБ | 27,90 |
| Мариан 1.11.0 | 344,5 | 7605 МБ | 27.93 |
| - int16 | 330.2 | 5901 МБ | 27.65 |
| - int8 | 355,8 | 4763MB | 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.
| Жетоны в секунду | Максимум Память графического процессора | Максимум Память процессора | Блю | |
|---|---|---|---|---|
| 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 | 2973MB | 3099 МБ | 26.77 |
| Быстрее перевозит 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 | 813MB | 800 МБ | 26.83 |
| Opus-MT Model | ||||
| Трансформаторы 4.26.1 (с Pytorch 1.13.1) | 1022,9 | 4097 МБ | 2109 МБ | 27,90 |
| Мариан 1.11.0 | 3241.0 | 3381 МБ | 2156 МБ | 27,92 |
| - float16 | 3962.4 | 3239 МБ | 1976mb | 27,94 |
| Ctranslate2 3.6.0 | 5876.4 | 1197 МБ | 754 МБ | 27,92 |
| - int8 | 7521.9 | 1005 МБ | 792 МБ | 27,79 |
| - float16 | 9296.7 | 909 МБ | 814MB | 27,90 |
| - int8 + float16 | 8362,7 | 813MB | 766 МБ | 27,90 |
Выполнено с помощью CUDA 11 на экземпляре G5.xlarge Amazon EC2, оснащенном графическим процессором NVIDIA A10G (версия драйвера: 510.47.03).