apache/tvm-ffi
Open ABI and FFI for Machine Learning Systems
해결하는 문제
기계학습 시스템 내에서 카ーネル 라이브러리, DSL, 런타임이 각각의 프레임워크(예: PyTorch 또는 JAX)와 언어(예: Python, C++, Rust)에 대해 별도의 구현 또는 바인딩이 필요로 하는 분열된 환경을 해결합니다. 각각의 조합에 맞춰 맞춤형 글루 코드를 작성할 필요 없이, 다양한 환경 간에 기계학습 카ーネル과 코드를 통합적이고 안정적으로 공유할 수 있는 방법을 제공합니다.
작동 방식
TVM FFI는 최소한의 프레임워크 독립적인 C ABI(Application Binary Interface)와 외부 함수 인터페이스(Foreign Function Interface)를 설정합니다. 컴팩트한 값과 호출 규약을 사용하여 오버헤드를 최소화하고, 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 생태계에서 동작.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트