sonos/tract

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

解決的問題

tract 是一個神經網路推論引擎,旨在於各種硬體上執行 AI 模型,從嵌入式 ARM CPU 和瀏覽器中的 WebAssembly,到 NVIDIA 與 Apple GPU。它透過將模型從 ONNX、TensorFlow Lite 和 NNEF 等格式轉換為專用的中間表示(tract-OPL),避免執行時需要重型訓練框架載入器與 protobuf,從而提供極小的執行時佔用空間。

工作原理

它從 ONNX、NNEF 和 TFLite 等格式載入模型,針對目標硬體進行優化並執行。它使用 TypedModel IR(中間表示),允許在不同平台之間移轉已優化的模型。對於如喚醒詞偵測或串流語音辨識等即時、低延遲的工作負載,它採用稱為「脈衝化(pulsification)」的程序,將通常處理完整序列的網路轉換為每步處理固定大小資料脈衝的網路。

適用對象

需要在不同硬體目標上部署模型的嵌入式系統、瀏覽器端 AI 或工作站開發者,他們需要高效率且輕量的執行時環境。

主要特色

  • 多平台支援: 支援 x86、ARM(含 SVE)、Apple Metal、NVIDIA CUDA 與 WebAssembly。
  • 廣泛模型支援: 兼容 ONNX、NNEF 與 TFLite,並透過 torch-to-nnef 提供 PyTorch 到 NNEF 的直接路徑。
  • 極小執行時佔用: 使用 tract-OPL 僅分發必要的執行時元件,避免使用龐大的載入器。
  • 串流推論: 對即時、低延遲的音訊/語音工作負載提供原生支援的脈衝化推論。
  • 語言綁定: 支援 Rust 與 Python 兩種語言。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案