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