1.背景

        TVM是一个开源的机器学习编译器栈,用于优化和编译深度学习模型,以在各种硬件平台上实现高效性能。以下是关于TVM的详细介绍:

  1. TVM的目标是将深度学习模型的优化和编译过程自动化,以便开发人员可以轻松地将其模型部署到各种硬件平台上,包括CPU、GPU、FPGA等。
  2. TVM的核心功能包括自动优化、代码生成和硬件抽象。它可以根据硬件平台的特点自动调整模型的计算图,生成高效的代码,并通过硬件抽象层与底层硬件交互。
  3. TVM支持多种深度学习框架,包括TensorFlow、PyTorch、MXNet等。这意味着开发人员可以使用他们熟悉的框架来开发模型,并将其转换为TVM可优化的格式。
  4. TVM还具有可扩展性和灵活性。它允许开发人员自定义优化策略和硬件后端,以适应特定的应用场景和硬件平台。
  5. 在性能方面,TVM通过优化计算图和利用硬件特性来提高模型的执行效率。它还可以与其他编译器和优化工具集成,以进一步提高性能。
  6. 最后,TVM是一个开源项目,得到了广泛的社区支持和贡献。这意味着开发人员可以从社区中获取支持和帮助,并与其他人共享他们的工作和成果。

        TVM可以在ARM开发板上进行部署和优化。以下是TVM在ARM开发板上的一些应用和优化方法:

  1. 模型优化:TVM可以根据ARM开发板的硬件特性,自动优化深度学习模型的计算图,以提高执行效率。它可以通过减少计算量、优化内存访问和利用硬件加速等方法来改进模型性能。
  2. 代码生成:TVM可以生成适应ARM开发板的机器代码。它可以根据ARM的指令集和硬件特性,生成高效的汇编代码或C++代码,以实现模型的高效执行。
  3. 硬件抽象:TVM通过硬件抽象层与底层硬件交互,可以屏蔽不同ARM开发板之间的硬件差异。这意味着开发人员可以在不同的ARM开发板上使用相同的TVM接口和工具链,简化了开发和部署过程。
  4. 深度学习框架支持:TVM支持多种深度学习框架,包括TensorFlow、PyTorch等。开发人员可以使用他们熟悉的框架来开发模型,并将其转换为TVM可优化的格式,以便在ARM开发板上进行部署和优化。
  5. 自定义优化策略和硬件后端:TVM具有可扩展性和灵活性,允许开发人员自定义优化策略和硬件后端。这意味着开发人员可以根据ARM开发板的具体特性和需求,定制适合该平台的优化策略和硬件后端,以进一步提高性能。
  6. 社区支持和贡献:TVM是一个开源项目,得到了广泛的社区支持和贡献。开发人员可以从社区中获取支持和帮助,并与其他人共享他们的工作和成果,以推动TVM在ARM开发板上的应用和优化。

2. 源码安装

(1)下载源码

        TVM源码地址:https://github.com/apache/tvm/tags

RK3588安装TVM-CPU版本-LMLPHP

        通过Downloads下载就行了。

(2)详细步骤

根据博客在RK3588 CPU 安装TVM - 知乎

        第1步-第3步都可以按照博主的步骤来

step1:准备环境

step2:查看(1)的源码下载下来

step3:准备llvm

set(USE_LLVM ON):这里的ON在build/config.cmake 中替换掉

set(USE_CCACHE AUTO) 加速TVM编译

step4:开始编译

step5:安装Python版本的tvm

        如果相关的库没有安装,根据提示进行安装即可,我将我的贴出来

        到此,已经安装完成

3. 样例执行

1、下载模型

wget https://github.com/onnx/models/raw/b9a54e89508f101a1611cd64f4ef56b9cb62c7cf/vision/classification/resnet/model/resnet50-v2-7.onnx

2、编辑脚本 tvmcpythonintro.py

from tvm.driver import tvmc
model = tvmc.load('resnet50-v2-7.onnx')
tvmc.tune(model, target="llvm")
package = tvmc.compile(model, target="llvm", tuning_records = "records.log")
result = tvmc.run(package, device="cpu")
print(result )
12-13 09:59