概述#

Apache TVM 是机器学习编译框架,遵循 Python 优先开发和通用部署的原则。它接收预训练的机器学习模型,编译并生成可嵌入和在任何地方运行的可部署模块。Apache TVM 还支持自定义优化流程,以引入新的优化、库、代码生成等

关键原则#

  • Python 优先:优化流程在 Python 中完全可定制。可以轻松自定义优化流水线,而无需重新编译 TVM 堆栈。

  • 可组合:优化流程是可组合的。可以轻松将新的优化 pass、库和代码生成添加到现有流水线中。

关键目标#

  • 优化 ML 工作负载的性能,组合库和代码生成。

  • 部署 ML 工作负载到多样化的新环境中,包括新的运行时和新硬件。

  • 通过快速自定义库调度、引入自定义算子和代码生成,在 Python 中 持续改进和定制 ML 部署流水线。

关键流程#

要查看可运行的示例,请参阅 quick_start

  1. 导入/构建 ML 模型

    TVM 支持从各种框架中导入模型,如 PyTorch、TensorFlow,用于通用 ML 模型。同时,我们可以直接使用 Relax 前端创建大型语言模型的场景。

  2. 通过 pipelines 执行可组合的优化变换

    流水线封装了一系列转换,以实现两个目标:

    • 计算图优化:例如算子融合和布局重写。

    • 张量程序优化:将算子映射到低级实现(包括库和代码生成)。

    备注

    这两个是目标而不是流水线的阶段。这两种优化在 同一层级 进行,或者在两个 不同阶段 分别进行。

  3. 构建和通用部署

    Apache TVM 旨在提供一种通用部署解决方案,以最少的运行时支持,将机器学习带到任何地方和任何语言环境中。TVM 运行时可以在非 Python 环境中工作,因此适用于移动设备、边缘设备甚至裸金属设备。此外,TVM 运行时具有原生数据结构,并且还可以通过 DLPack 支持与现有生态系统(PyTorch、TensorFlow、TensorRT 等)进行零拷贝交换。