OpenNMT/CTranslate2

Fast inference engine for Transformer models

解決する課題

CTranslate2は、Transformerモデルの推論をより高速かつメモリ効率の高いものにするために設計されています。これは、Transformerベースのモデルを本番環境にデプロイする際に、汎用的なディープラーニングフレームワークで一般的に見られる高いリソース消費と実行速度の遅さという課題に対処します。

仕組み

このライブラリは、以下を含むいくつかのパフォーマンス最適化技術を適用するカスタムランタイムを実装しています。

  • 重みの量子化 (Weight Quantization): 重みの精度を16-bit (FP16, BF16, INT16) または8-bit (INT8) および4-bit (AWQ INT4) に削減し、メモリ使用量を減らして計算を高速化します。
  • レイヤー融合 (Layer Fusion): 複数の操作を単一のカーネルに結合してオーバーヘッドを削減します。
  • バッチ並べ替えとパディング除去 (Batch Reordering and Padding Removal): パディングトークンに対する不要な計算を避けるために、データの処理方法を最適化します。
  • ハードウェア最適化 (Hardware Optimization): Intel MKL、oneDNN、Apple Accelerateなどのライブラリを使用して、さまざまなCPUアーキテクチャ (x86-64, ARM64) 向けの最適化されたバックエンドを統合します。
  • テンソル並列処理 (Tensor Parallelism): 非常に大きなモデルを複数のGPUに分割して分散推論を行うことを可能にします。

モデルは、PyTorch (Transformers)、Fairseq、OpenNMTなどのフレームワークから、CTranslate2固有の最適化された形式に変換する必要があります。

対象ユーザー

CPUとGPUの両方で、高性能かつ本番環境向けの推論のためにTransformerモデル(Llama、Mistral、GemmaなどのLLMを含む)をデプロイする必要がある開発者やエンジニアを対象としています。

主な特徴

  • 幅広いモデルサポート: エンコーダー-デコーダー、デコーダーのみ (LLMs)、エンコーダーのみのモデルをサポートします。
  • C++およびPython API: PythonおよびC++インターフェースを介した簡単な統合を提供します。
  • 低いリソースフットプリント: 量子化により、精度をほとんど損なうことなく、ディスク上のモデルサイズを最大4倍削減できます。
  • Llama/Mistral/Gemmaサポート: 最新のデコーダーのみのアーキテクチャ向けに最適化されています。
  • OpenAI互換API: オプションのWebサーバーラッパーにより、すでにOpenAI APIをサポートしているアプリケーションとの統合が可能です。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト