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 エコシステムで動作。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト