InfiniTensor/InfiniTensor
InfiniTensor is a high-performance inference engine tailored for GPUs and AI accelerators. Its design focuses on effective deployment and swift academic validation.
InfiniTensor – 轻量、可扩展的AI计算图运行时
是什么
- InfiniTensor是一个开源C++库,用于加载、转换和运行计算图(如ONNX模型)。它自带原生CPU后端,并可以将工作委托给名为InfiniOps和InfiniRT的自定义加速器后端。
- 核心库与硬件无关;实际的设备特定内核位于与InfiniTensor一起安装的独立SDK中。
为什么重要
- 现代AI工作负载通常以基于图的中间表示(IR)来表达,如ONNX。一个能够导入该IR、应用图级优化,然后在CPU或专用加速器上执行的运行时,是推理栈的关键组成部分。
- 通过将图引擎(InfiniTensor)与设备内核(InfiniOps/InfiniRT)分离,该项目使硬件供应商无需修改核心运行时即可插入自己的实现。
主要功能(按README所述)
- ONNX导入器 – 将ONNX文件解析为内部图表示。
- 图转换层 – 支持通用重写;未来工作提到RefactorGraph和EinNet用于更高级的基于推导的优化。
- CPU运行时 – 内置纯C++执行引擎(
pyinfinitensorPython绑定),用于开发和回退。 - 加速器委派 – 当存在InfiniOps/InfiniRT构建时,算子会被分派到加速器;不支持的算子会引发明确错误,而不是静默回退。
- Python API – 可通过
make install-python安装,将运行时作为pyinfinitensor包暴露。 - 测试套件 – 提供C++单元测试、ONNX前端测试和Python API测试。
如何开始
- 克隆仓库并初始化子模块(
git submodule update --init --recursive)。 - 构建并安装仅CPU的Python包:
make install-python INFINI=OFF PYTHON=$(command -v python3) - 要获得加速器支持,请先安装匹配的InfiniOps和InfiniRT SDK,然后使用
INFINI=ON重新构建并指定SDK前缀。 - 使用提供的
make目标(build、test-cpp、test-onnx、test-api)来编译和验证安装。
路线图亮点
- RefactorGraph – 下一代图框架(作为独立仓库链接)。
- EinNet – 基于推导的张量程序优化(实验分支
NNET_e2e)。 - PET – 用于自动纠正张量程序的部分等价变换。
- 通过InfiniOps/InfiniRT生态系统持续扩展加速器支持。
可能的用户
- 构建自定义AI算子或探索新的图优化通道的研究人员。
- 希望以轻量、可重用的前端向ONNX模型暴露其内核的硬件供应商。
- 需要轻量、Python友好的CPU推理运行时,并可以选择插入专有加速器的开发人员。
了解更多
- 安装指南、用户指南和分布式示例位于
/docs和/examples目录中。 - 随附的研究论文EinNet(OSDI 2023)和PET(OSDI 2021)提供了项目所基于的优化技术的更深层背景。
相关
- 项目
- 项目
- 项目
- 项目
- 项目