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 )

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/249162.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HACON error #2453:

问题:HALCON handle is NULL in operator grab_image_async" 分析:句柄为空,因为提前hv_AcqHandle.Dispose();将句柄释放掉了 解决方案:屏蔽此语句

【Spring】06 生命周期之销毁回调

文章目录 1. 回调是什么2. 销毁回调2.1 实现 DisposableBean 接口2.2 配置 destroy-method 3. 执行顺序4. 应用场景总结 在 Spring 框架中,生命周期回调(Lifecycle Callbacks)是一种强大的机制,它允许我们在 Spring 容器中的 Bean…

【Vue】日期格式化(全局)

系列文章 【Vue】vue增加导航标签 本文链接:https://blog.csdn.net/youcheng_ge/article/details/134965353 【Vue】Element开发笔记 本文链接:https://blog.csdn.net/youcheng_ge/article/details/133947977 【Vue】vue,在Windows IIS平台…

基于若依搭建微服务nacos版本(ruoyi-Cloud前后端分离)

说明:本文介绍基于Ruoyi-Cloud前后端分离nacos版本的微服务从0到1的搭建过程,同时新增一个新的微服务模块。是基于官方文档的补充说明,需要结合Ruoyi-Cloud的官方文档 https://doc.ruoyi.vip/ruoyi-cloud/ 如果直接查看官方文档便可成功部署&…

Linux Conda 安装 Jupyter

在Linux服务器Conda环境上安装Jupyter过程中遇到了无数的报错,特此记录。 目录 步骤一:安装Anaconda3 步骤二:配置Conda源 步骤三:安装Jupyter 安装报错:simplejson.errors.JSONDecodeError 安装报错:…

Linux---重定向命令

1. 重定向命令的介绍 重定向也称为输出重定向,把在终端执行命令的结果保存到目标文件。 2. 重定向命令的使用 命令说明>如果文件存在会覆盖原有文件内容,相当于文件操作中的‘w’模式>>如果文件存在会追加写入文件末尾,相当于文件…

DevOps云原生创建devops流水线(微服务项目上传git,打包镜像,部署k8s)

开发和运维人员的解决方案 一、中间件的部署(Sentinel/MongoDB/MySQL) 二、创建DevOps工程 邀请成员 三、创建流水线 四、编辑流水线 ①、拉取代码(若失败,则将制定容器改为maven) 若失败,则将命令改…

P1789 【Mc生存】插火把

题目描述 话说有一天 linyorson 在“我的世界”开了一个 nn 的方阵,现在他有 m 个火把和 k 个萤石,分别放在 (x1​,y1​)∼(xm​,ym​) 和 (o1​,p1​)∼(ok​,pk​) 的位置,没有光并且没放东西的地方会生成怪物。请问在这个方阵中有几个点会…

Python 实现:OCR在图片中提取文字(基于Gradio实现)

Paddle OCR PaddleOCR 基于深度学习技术实现的,使用十分简单。 先看效果 可以看出来识别效果还是不错的,里面的“湿”字识别成了繁体字。如果不是连体字,就不会出现这个问题。 1.测试环境 操作系统:Win10 Python:3…

KVM虚拟机console使用

注意这些设置都在你要进入虚拟机里设置,不是在你的物理机设置 首先debian12 需要设置 grep ttyS0 /etc/securetty #没有则加上 echo ttyS0 >> /etc/securetty #启动 systemctl start serial-gettyttyS0 systemctl enable serial-gettyttyS0#CentOS Stream …

广西开放大学形成性考核 平时作业 统一资料 参考

试卷代号:1293 心理学 参考试题 一、选择题(每个3分,共30分,含单选和多选,请将正确答案的字母序号填入括号中) 1.人们通常把下列图形知觉为一个连续、完整的形状,说明图形知觉遵循( )。…

转载:TableView性能优化

转载:TableView性能优化 原文链接:https://juejin.cn/post/6955731915672387592 tableView性能优化 Cell重用、标识重用 使用 static 修饰重用标识名称能够保证这个标识只会创建一次,提高性能。接着调用dequeueReusableCellWithIdentifie…

超详细的80个Python入门实例,附源码,大学装逼必备!

对于大部分Python学习者来说,核心知识基本已经掌握了,但"纸上得来终觉浅,绝知此事要躬行",要想完全掌握Python,还得靠实践应用。 今天给大家分享80个Python入门实例,都是基础实例,经典实用&…

人工智能深度学习100种网络模型,精心整理,全网最全,PyTorch框架逐一搭建

大家好,我是微学AI,今天给大家介绍一下人工智能深度学习100种网络模型,这些模型可以用PyTorch深度学习框架搭建。模型按照个人学习顺序进行排序: 深度学习模型 ANN (Artificial Neural Network) - 人工神经网络:基本…

JavaSE语法之七:封装

文章目录 一、封装的概念二、访问限定符三、封装扩展之包1. 包的概念2. 导入包中的类3. 自定义包4. 常见的包 四、实现封装五、static成员1. 再谈学生类成员变量2. static修饰成员变量3. static修饰成员方法4. static成员变量初始化 六、代码块1. 代码块概念及其分类2. 普通代码…

探索Linux服务器配置信息的命令

目录 前言1 uname2 lscpu3 free4 df5 lspci6 lsusb7 lshw结语 前言 Linux系统提供了许多命令,用于获取和查看服务器的软硬件配置信息。这些命令可以帮助管理员和用户了解系统的状态、资源使用情况以及硬件设备的相关信息。以下是一些常用的命令以及它们的作用、使用…

windows安装conda小环境 windows安装anaconda python jupyter

1 如果想体验在线版的jupyter,可以访问anaconda在Anaconda Cloud,需要注册github: 1 下载anaconda ,并安装 1.1 下载 或者去清华镜像下载 Free Download | Anacondahttps://www.anaconda.com/downloadIndex of /anaconda/archi…

Logistic Regression——逻辑回归

1. 为什么需要逻辑回归 在前面学习的线性回归中,我们的预测值都是任意的连续值,例如预测房价。除此之外,还有一个常见的问题就是分类问题,而逻辑回归是一个解决分类问题的模型,其预测值是离散的。 分类问题又包括…

Module ‘app‘: platform ‘android-33‘ not found.

目录 一、报错信息 二、解决方法 一、报错信息 Module app: platform android-33 not found. 检查你的应用程序的build.gradle文件中的targetSdkVersion和compileSdkVersion是否正确设置为已安装的Android SDK版本。 确保你的Android Studio已正确安装并配置了所需的Android …

香槟过了保质期还能喝吗?

香槟是起泡酒的高级代表,是浪漫和喜庆的化身,它浑身上下都散发着无穷的魅力。那么,这么精贵的葡萄酒有没有保质期,会不会变质呢?云仓酒庄的品牌雷盛红酒分享当然会。一瓶酒的生命离不开它的保存期限,酒的质…