Ctranslate2는 변압기 모델과의 효율적인 추론을위한 C ++ 및 Python 라이브러리입니다.
이 프로젝트는 CPU 및 GPU에서 변압기 모델의 메모리 사용량을 가속화하고 줄이기 위해 가중치 양자화, 계층 융합, 배치 재정렬 등과 같은 많은 성능 최적화 기술을 적용하는 사용자 정의 런타임을 구현합니다.
다음 모델 유형은 현재 지원됩니다.
호환 모델은 먼저 최적화 된 모델 형식으로 변환해야합니다. 라이브러리에는 여러 프레임 워크 용 변환기가 포함되어 있습니다.
이 프로젝트는 생산 지향적이며 후진 호환성 보증이 제공되지만 모델 압축 및 추론 가속도와 관련된 실험 기능도 포함됩니다.
이러한 기능 중 일부는 표준 딥 러닝 프레임 워크로 달성하기가 어렵고이 프로젝트의 동기입니다.
ctranslate2는 PIP와 함께 설치할 수 있습니다.
pip install ctranslate2파이썬 모듈은 모델을 변환하는 데 사용되며 몇 줄의 코드로 텍스트를 번역하거나 생성 할 수 있습니다.
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 | 1359MB | 26.72 |
| ctranslate2 3.6.0 | 658.8 | 849MB | 26.77 |
| -INT16 | 733.0 | 672MB | 26.82 |
| - int8 | 860.2 | 529MB | 26.78 |
| -INT8 + VMAP | 1126.2 | 598MB | 26.64 |
| OPUS-MT 모델 | |||
| 트랜스포머 4.26.1 (Pytorch 1.13.1 포함) | 147.3 | 2332MB | 27.90 |
| 마리안 1.11.0 | 344.5 | 7605MB | 27.93 |
| -INT16 | 330.2 | 5901MB | 27.65 |
| - int8 | 355.8 | 4763MB | 27.27 |
| ctranslate2 3.6.0 | 525.0 | 721MB | 27.92 |
| -INT16 | 596.1 | 660MB | 27.53 |
| - int8 | 696.1 | 516MB | 27.65 |
인텔 (R) Xeon (R) Platinum 8275CL CPU가 장착 된 C5.2xlarge Amazon EC2 인스턴스에서 4 개의 스레드로 실행됩니다.
| 초당 토큰 | 맥스. GPU 메모리 | 맥스. CPU 메모리 | 블루 | |
|---|---|---|---|---|
| OpenNMT-TF WMT14 모델 | ||||
| OpenNMT-TF 2.31.0 (Tensorflow 2.11.0) | 1483.5 | 3031MB | 3122MB | 26.94 |
| Opennmt-Py Wmt14 모델 | ||||
| Opennmt-Py 3.0.4 (Pytorch 1.13.1 포함) | 1795.2 | 2973MB | 3099MB | 26.77 |
| 더 빠른 전환기 5.3 | 6979.0 | 2402MB | 1131MB | 26.77 |
| - float16 | 8592.5 | 1360MB | 1135MB | 26.80 |
| ctranslate2 3.6.0 | 6634.7 | 1261MB | 953MB | 26.77 |
| - int8 | 8567.2 | 1005MB | 807MB | 26.85 |
| - float16 | 10990.7 | 941MB | 807MB | 26.77 |
| -t8 + float16 | 8725.4 | 813MB | 800MB | 26.83 |
| OPUS-MT 모델 | ||||
| 트랜스포머 4.26.1 (Pytorch 1.13.1 포함) | 1022.9 | 4097MB | 2109MB | 27.90 |
| 마리안 1.11.0 | 3241.0 | 3381MB | 2156MB | 27.92 |
| - float16 | 3962.4 | 3239MB | 1976MB | 27.94 |
| ctranslate2 3.6.0 | 5876.4 | 1197MB | 754MB | 27.92 |
| - int8 | 7521.9 | 1005MB | 792MB | 27.79 |
| - float16 | 9296.7 | 909MB | 814MB | 27.90 |
| -t8 + float16 | 8362.7 | 813MB | 766MB | 27.90 |
NVIDIA A10G GPU (드라이버 버전 : 510.47.03)가 장착 된 G5.xlarge Amazon EC2 인스턴스에서 Cuda 11으로 실행되었습니다.