apache/tvm-ffi

Open ABI and FFI for Machine Learning Systems

解決的問題

解決機器學習系統中因內核函式庫、DSL 和執行環境通常需針對不同框架(如 PyTorch 或 JAX)與語言(如 Python、C++ 或 Rust)分別實作或建立綁定,導致的碎片化問題。提供一種統一且穩定的方式,讓機器學習內核與程式碼可在不同環境間共享,無需為每種組合撰寫自訂的膠水程式碼。

如何運作

TVM FFI 建立一個最小化、與框架無關的 C ABI(應用程式二進位介面)與外部函式介面。使用緊湊的值與呼叫慣例以最小化開銷,並透過 DLPack 協定實作跨框架的零複製資料交換。

適用對象

  • 內核開發者:希望發佈一個可在多個 ML 框架與 Python 版本中運作的單一套件(wheel)。
  • DSL 創作者:建構 JIT 或 AOT 內核曝光框架。
  • 框架與執行環境開發者:尋求 ABI 相容函式庫的統一擴充點。
  • ML 基礎設施工程師:需要在 Python、C++ 與 Rust 之間實現一致的互操作性。

特色

  • 穩定的 C ABI:優先考慮長期相容性的統一二進位介面。
  • 零複製互操作:透過 DLPack 實現 PyTorch、JAX 與 CuPy 之間的高效資料共享。
  • 多語言支援:原生支援 Python、C++ 與 Rust 的綁定。
  • 框架無關:可在 PyTorch、JAX、PaddlePaddle 以及 NumPy/CuPy 等主要 ML 生態系統中運作。

相關

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