sonos/tract

Tiny, no-nonsense, self-contained, Tensorflow and ONNX inference

何を解決するか

tract は、ONNX、TensorFlow Lite、NNEF などの形式からモデルを専用の中間表現(tract-OPL)に変換することで、実行時に重いトレーニングフレームワークのローダーやprotobufを必要とせずに、極めて小さなランタイムフットプリントを実現するニューラルネットワーク推論エンジンです。エッジARM CPU、ブラウザ内のWebAssembly、NVIDIAおよびApple GPUなど、幅広いハードウェア上でAIモデルを実行することを目的としています。

動作方法

ONNX、NNEF、TFLiteなどの形式からモデルを読み込み、ターゲットハードウェアに最適化して実行します。TypedModel IR(中間表現)を使用することで、あるプラットフォームで最適化されたモデルを別のプラットフォームに移行できます。ウェイクワード検出やストリーミング音声認識など、リアルタイムで低遅延が必要なワークロードでは、「パルス化(pulsification)」と呼ばれるプロセスを使用し、通常はフルシーケンスを処理するネットワークを、各ステップで固定サイズのデータパルスを処理するように変換します。

対象ユーザー

エッジシステム、ブラウザベースのAI、またはワークステーション向けのAIアプリケーションを開発し、異なるハードウェアターゲットにモデルをデプロイするための高パフォーマンスで軽量なランタイムを必要とする開発者。

特徴

  • マルチプラットフォーム対応: x86、ARM(SVEを含む)、Apple Metal、NVIDIA CUDA、WebAssemblyで動作。
  • 広範なモデル対応: ONNX、NNEF、TFLiteと互換性があり、torch-to-nnef を通じてPyTorchからNNEFへの直接パスを提供。
  • 小さなランタイムフットプリント: tract-OPLを使用して、必要なランタイムコンポーネントのみを配布し、重いローダーを回避。
  • ストリーミング推論: リアルタイムで低遅延な音声/スピーチワークロード向けに、パルス化推論を第一級のサポート。
  • 言語バインディング: RustおよびPythonの両方で利用可能。

関連

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