概述

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

核心原则

  • Python 优先:优化过程完全可以在 Python 中自定义。自定义优化流水线很容易,无需重新编译 TVM 堆栈。

  • 可组合:优化过程是可组合的。将新的优化Pass、库和代码生成组合到现有的流水线中很容易。

主要目标

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

  • 部署 ML 工作负载到各种新的环境,包括新的运行时和新的硬件。

  • 持续改进和自定义 Python 中的 ML 部署流水线,通过快速自定义库分发,引入自定义运算符和代码生成。

关键流程

以下是使用 TVM 部署机器学习模型的典型流程。有关可运行的示例,请参阅快速入门

  1. 导入/构建 ML 模型

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

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

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

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

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

    注意

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

  3. 构建和通用部署

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