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 生态系统中运行。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目