概述
Apache TVM 是一个机器学习编译框架,遵循Python 优先开发和通用部署的原则。它接收预训练的机器学习模型,编译并生成可部署的模块,这些模块可以嵌入并在任何地方运行。Apache TVM 还支持自定义优化流程,以引入新的优化、库、代码生成等。
核心原则
Python 优先:优化过程完全可以在 Python 中自定义。自定义优化流水线很容易,无需重新编译 TVM 堆栈。
可组合:优化过程是可组合的。将新的优化Pass、库和代码生成组合到现有的流水线中很容易。
主要目标
优化 ML 工作负载的性能,组合库和代码生成。
部署 ML 工作负载到各种新的环境,包括新的运行时和新的硬件。
持续改进和自定义 Python 中的 ML 部署流水线,通过快速自定义库分发,引入自定义运算符和代码生成。
关键流程
以下是使用 TVM 部署机器学习模型的典型流程。有关可运行的示例,请参阅快速入门
导入/构建 ML 模型
TVM 支持从各种框架导入模型,例如 PyTorch、TensorFlow 等通用 ML 模型。同时,我们可以直接使用 Relax 前端为大型语言模型场景创建模型。
通过
pipelines
执行可组合的优化转换该流水线封装了一系列转换,以实现两个目标
图优化:例如算子融合和布局重写。
张量程序优化:将算子映射到低级实现(库或代码生成)
注意
这两个是目标,而不是流水线的阶段。这两个优化在同一级别执行,或者在两个阶段分别执行。
构建和通用部署
Apache TVM 旨在提供通用的部署解决方案,以最小的运行时支持将机器学习带到任何地方,使用任何语言。TVM 运行时可以在非 Python 环境中工作,因此它可以在移动设备、边缘设备甚至裸机设备上工作。此外,TVM 运行时带有原生数据结构,并且还可以使用 DLPack 支持与现有生态系统(PyTorch、TensorFlow、TensorRT 等)进行零拷贝交换。