RK3588安装TVM-CPU版本

2023-12-12 16:28
文章标签 安装 版本 cpu rk3588 tvm

本文主要是介绍RK3588安装TVM-CPU版本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

        通过Downloads下载就行了。

(2)详细步骤

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

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

step1:准备环境

sudo apt-get update
sudo apt-get install -y python3 python3-dev python3-setuptools gcc libtinfo5 libtinfo-dev zlib1g-dev build-essential cmake libedit-dev libxml2-dev

如果出现CMake版本不匹配时可以通过源码安装。采用源码方式安装3.18.6版本。源码下载路径:https://cmake.org/files/

$ tar zxvf cmake-3.18.6.tar.gz
cmake-3.18.6$ ./configure
cmake-3.18.6$ make -j4
cmake-3.18.6$ sudo make install
重启设备

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

tar zxvf apache-tvm-src-v0.10.0.tar.gz
cd apache-tvm-src-v0.10.0
mkdir build
cp cmake/config.cmake build

step3:准备llvm

TVM的CPU代码生成需要LLVM(4.0或者更高版本)。

下载预编译的llvm 14.0.0版本 https://github.com/llvm/llvm-project/releases/tag/llvmorg-14.0.0

解压到指定路径,并将解压后的bin目录添加到PATH。

tar xvf clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz
vim ~/.bashrc
export PATH=$PATH:/home/firefly/clang+llvm-14.0.0-aarch64-linux-gnu/bin
source ~/.bashrc

在build/config.cmake 编辑set(USE_LLVM /home/username/clang+llvm-14.0.0-aarch64-linux-gnu/bin/llvm-config)

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

set(USE_CCACHE AUTO) 加速TVM编译

step4:开始编译

cd build
cmake .. -G Ninja
ninja

step5:安装Python版本的tvm

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

sudo vim ~/.bashrc

export TVM_HOME=/path/to/tvm # 编译的python/tvm路径

# export TVM_HOME=/home/ubuntu/apache-tvm-src-v0.14.0/python/tvm
# export PYTHONPATH=$TVM_HOME/python3.7:${PYTHONPATH}
export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH}

source ~/.bashrc

cd /home/ubuntu/apache-tvm-src-v0.10.0/python 
python3.7 setup.py install --user # 我的是3.7,根据自己的修改

        到此,已经安装完成

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 )

这篇关于RK3588安装TVM-CPU版本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/485238

相关文章

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

MySQL8.2.0安装教程分享

《MySQL8.2.0安装教程分享》这篇文章详细介绍了如何在Windows系统上安装MySQL数据库软件,包括下载、安装、配置和设置环境变量的步骤... 目录mysql的安装图文1.python访问网址2javascript.点击3.进入Downloads向下滑动4.选择Community Server5.

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

java中不同版本JSONObject区别小结

《java中不同版本JSONObject区别小结》本文主要介绍了java中不同版本JSONObject区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录1. FastjsON2. Jackson3. Gson4. org.json6. 总结在Jav

MySQL的cpu使用率100%的问题排查流程

《MySQL的cpu使用率100%的问题排查流程》线上mysql服务器经常性出现cpu使用率100%的告警,因此本文整理一下排查该问题的常规流程,文中通过代码示例讲解的非常详细,对大家的学习或工作有一... 目录1. 确认CPU占用来源2. 实时分析mysql活动3. 分析慢查询与执行计划4. 检查索引与表

MySql9.1.0安装详细教程(最新推荐)

《MySql9.1.0安装详细教程(最新推荐)》MySQL是一个流行的关系型数据库管理系统,支持多线程和多种数据库连接途径,能够处理上千万条记录的大型数据库,本文介绍MySql9.1.0安装详细教程,... 目录mysql介绍:一、下载 Mysql 安装文件二、Mysql 安装教程三、环境配置1.右击此电脑

在 Windows 上安装 DeepSeek 的完整指南(最新推荐)

《在Windows上安装DeepSeek的完整指南(最新推荐)》在Windows上安装DeepSeek的完整指南,包括下载和安装Ollama、下载DeepSeekRXNUMX模型、运行Deep... 目录在www.chinasem.cn Windows 上安装 DeepSeek 的完整指南步骤 1:下载并安装

golang1.23版本之前 Timer Reset方法无法正确使用

《golang1.23版本之前TimerReset方法无法正确使用》在Go1.23之前,使用`time.Reset`函数时需要先调用`Stop`并明确从timer的channel中抽取出东西,以避... 目录golang1.23 之前 Reset ​到底有什么问题golang1.23 之前到底应该如何正确的

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3