OpenNMT/CTranslate2

Fast inference engine for Transformer models

What it solves

CTranslate2 は、Transformer モデルの遅い推論とメモリ使用量が大きいという問題を解決するために設計されました。CPU と GPU の両方で実行を高速化し、メモリ使用量を削減するカスタムランタイムを提供し、汎用のディープラーニングフレームワークよりも効率的です。

How it works

このライブラリは、以下のパフォーマンス最適化技術を実装しています。

  • 重みの量子化(FP16、BF16、INT16、INT8、INT4/AWQ をサポート)
  • レイヤー融合
  • パディング除去
  • バッチの再順序付け
  • インプレース演算

エンコーダ‑デコーダ(例: T5、Whisper)、デコーダのみ(例: Llama、Mistral、Gemma)、エンコーダのみ(例: BERT)といった幅広いモデルタイプをサポートします。モデルは、PyTorch(Transformers)、Fairseq、OpenNMT などのフレームワーク用に提供されているコンバータを使用して最適化フォーマットに変換する必要があります。

Who it’s for

高スループットかつ低メモリフットプリントで Transformer モデルをデプロイしたい、開発者や本番環境志向のユーザー向けです。x86‑64、ARM64 といったさまざまなハードウェアアーキテクチャや GPU で動作します。

Highlights

  • Broad Model Support: Llama、Mistral、BERT など、幅広い Transformer アーキテクチャをサポート。
  • Hardware Optimization: Intel MKL、oneDNN、OpenBLAS、Ruy、Apple Accelerate など複数の CPU バックエンドに最適化されており、CPU を自動検出します。
  • Quantization: 精度低下を最小限に抑えながら、ディスク上のモデルサイズとメモリ使用量を削減。
  • Parallel Execution: 複数 GPU や CPU コア間での並列・非同期実行をサポートし、非常に大きなモデル向けにテンソル並列も提供。
  • Simple Integration: 依存関係が少ないシンプルな Python と C++ API を提供。