Ctranslate2 adalah perpustakaan C ++ dan Python untuk inferensi yang efisien dengan model transformator.
Proyek ini mengimplementasikan runtime khusus yang menerapkan banyak teknik optimasi kinerja seperti kuantisasi bobot, fusi lapisan, pemesanan ulang batch, dll., Untuk mempercepat dan mengurangi penggunaan memori model transformator pada CPU dan GPU.
Jenis model berikut saat ini didukung:
Model yang kompatibel harus dikonversi terlebih dahulu menjadi format model yang dioptimalkan. Perpustakaan mencakup konverter untuk beberapa kerangka kerja:
Proyek ini berorientasi pada produksi dan dilengkapi dengan jaminan kompatibilitas ke belakang, tetapi juga mencakup fitur eksperimental yang terkait dengan kompresi model dan akselerasi inferensi.
Beberapa fitur ini sulit dicapai dengan kerangka kerja pembelajaran mendalam standar dan merupakan motivasi untuk proyek ini.
Ctranslate2 dapat dipasang dengan PIP:
pip install ctranslate2Modul Python digunakan untuk mengonversi model dan dapat menerjemahkan atau menghasilkan teks dengan beberapa baris kode:
translator = ctranslate2 . Translator ( translation_model_path )
translator . translate_batch ( tokens )
generator = ctranslate2 . Generator ( generation_model_path )
generator . generate_batch ( start_tokens )Lihat dokumentasi untuk informasi dan contoh lebih lanjut.
Kami menerjemahkan En-> De Test Set NewStest2014 dengan beberapa model:
Benchmark melaporkan jumlah token target yang dihasilkan per detik (lebih tinggi lebih baik). Hasilnya dikumpulkan selama beberapa kali berjalan. Lihat skrip benchmark untuk detail lebih lanjut dan mereproduksi angka -angka ini.
Harap dicatat bahwa hasil yang disajikan di bawah ini hanya berlaku untuk konfigurasi yang digunakan selama tolok ukur ini: kinerja absolut dan relatif dapat berubah dengan pengaturan yang berbeda.
| Token per detik | Max. ingatan | Bleu | |
|---|---|---|---|
| Model OpenNMT-TF WMT14 | |||
| OpenNMT-TF 2.31.0 (dengan TensorFlow 2.11.0) | 209.2 | 2653MB | 26.93 |
| Model OpenNMT-PY WMT14 | |||
| OpenNMT-PY 3.0.4 (dengan 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 |
| Model Opus-MT | |||
| Transformers 4.26.1 (dengan Pytorch 1.13.1) | 147.3 | 2332MB | 27.90 |
| Marian 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 |
Dieksekusi dengan 4 utas pada instance C5.2Xlarge Amazon EC2 yang dilengkapi dengan CPU Intel (R) Xeon (R) Platinum 8275Cl.
| Token per detik | Max. Memori GPU | Max. Memori CPU | Bleu | |
|---|---|---|---|---|
| Model OpenNMT-TF WMT14 | ||||
| OpenNMT-TF 2.31.0 (dengan TensorFlow 2.11.0) | 1483.5 | 3031MB | 3122MB | 26.94 |
| Model OpenNMT-PY WMT14 | ||||
| OpenNMT-PY 3.0.4 (dengan Pytorch 1.13.1) | 1795.2 | 2973MB | 3099MB | 26.77 |
| FasterTransformer 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 |
| - int8 + float16 | 8725.4 | 813MB | 800MB | 26.83 |
| Model Opus-MT | ||||
| Transformers 4.26.1 (dengan Pytorch 1.13.1) | 1022.9 | 4097MB | 2109MB | 27.90 |
| Marian 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 |
| - int8 + float16 | 8362.7 | 813MB | 766MB | 27.90 |
Dieksekusi dengan CUDA 11 pada instance G5.XLarge Amazon EC2 yang dilengkapi dengan GPU NVIDIA A10G (Versi Driver: 510.47.03).