Ctranslate2は、トランスモデルを効率的に推論するためのC ++およびPythonライブラリです。
このプロジェクトは、CPUおよびGPUでの変圧器モデルのメモリ使用量を加速および削減するために、重みの量子化、レイヤー融合、バッチ再注文など、多くのパフォーマンス最適化手法を適用するカスタムランタイムを実装します。
現在、次のモデルタイプがサポートされています。
互換性のあるモデルは、最初に最適化されたモデル形式に変換する必要があります。ライブラリには、複数のフレームワーク用のコンバーターが含まれています。
このプロジェクトは生産志向であり、後方互換性の保証が付属していますが、モデルの圧縮と推論の加速に関連する実験的機能も含まれています。
これらの機能のいくつかは、標準的なディープラーニングフレームワークで達成することが困難であり、このプロジェクトの動機です。
Ctranslate2はPIPでインストールできます。
pip install ctranslate2Pythonモジュールはモデルを変換するために使用され、コードの数行でテキストを翻訳または生成できます。
translator = ctranslate2 . Translator ( translation_model_path )
translator . translate_batch ( tokens )
generator = ctranslate2 . Generator ( generation_model_path )
generator . generate_batch ( start_tokens )詳細と例については、ドキュメントを参照してください。
en-> deテストセットNewStest2014を複数のモデルで翻訳します。
ベンチマークは、1秒あたりの生成されたターゲットトークンの数を報告しています(より高い方が優れています)。結果は複数の実行にわたって集約されます。詳細については、ベンチマークスクリプトを参照して、これらの数値を再現してください。
以下に示す結果は、このベンチマーク中に使用される構成に対してのみ有効であることに注意してください。絶対的および相対的なパフォーマンスは、異なる設定で変化する可能性があります。
| 1秒あたりのトークン | マックス。メモリ | ブルー | |
|---|---|---|---|
| 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 |
Intel(R)Xeon(R)Platinum 8275Cl CPUを備えたC5.2XLARGE Amazon EC2インスタンスで4つのスレッドで実行されます。
| 1秒あたりのトークン | マックス。 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 |
| -INT8 + 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 |
| -INT8 + FLOAT16 | 8362.7 | 813MB | 766MB | 27.90 |
g5.xlarge Amazon EC2インスタンスでCUDA 11で実行され、NVIDIA A10G GPU(ドライバーバージョン:510.47.03)を装備しています。