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++执行引擎(pyinfinitensor Python绑定),用于开发和回退。
  • 加速器委派 – 当存在InfiniOps/InfiniRT构建时,算子会被分派到加速器;不支持的算子会引发明确错误,而不是静默回退。
  • Python API – 可通过make install-python安装,将运行时作为pyinfinitensor包暴露。
  • 测试套件 – 提供C++单元测试、ONNX前端测试和Python API测试。

如何开始

  1. 克隆仓库并初始化子模块(git submodule update --init --recursive)。
  2. 构建并安装仅CPU的Python包:
    make install-python INFINI=OFF PYTHON=$(command -v python3)
    
  3. 要获得加速器支持,请先安装匹配的InfiniOps和InfiniRT SDK,然后使用INFINI=ON重新构建并指定SDK前缀。
  4. 使用提供的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)提供了项目所基于的优化技术的更深层背景。

相关

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