目录

  • 一、引言
  • 二、流程
  • 三、踩坑
  • 四、备注

一、引言

4月底的时候,花了一天时间安装TVM这个东西。那时,上来就弄TVM 0.8的版本,但因为具体安装的流程不是很懂,所以出现了一些莫名其妙的问题。后来,直接改用TVM0.6版本,一路顺风。

但,今天(5月7日)时,打算仔细看下教程,发现0.6版本的,已经没了,只剩下0.8的教程,行吧!还是得回头安装0.8的,但之前怎么安装的,又给忘了,于是乎,一顿操作后,直接弄好了,打算写篇文章讲讲这个东西的安装。


二、流程

安装的流程很简单,网上也有许多教程了,这里先详细地讲下。

1°代码的获取。

使用“git clone --recursive + 网址”的方式,可以完成代码的获取。因为在tvm开源包的3rdparty文件夹中存在dlpack、dmlc-core、rang和vta-hw等库,如果不加 --recursive 选项,会缺失掉。

在我的实际测试中发现,如果使用git clone来获取源码,网速问题还是GitHub本身原因,没到一半就GG掉了,几次下来都没搞成功。也许需要解决网速上的问题,但得不偿失,用下面这个方法处理:

打开下面网址。选择版本,点击↓Code下载代码包。

https://github.com/apache/tvm


打开3rdparty文件夹,点击标蓝的几个库,使用↓Code把对应的文件全都下载了。

手动解压后,把各文件放在对应的目录下。这里我把整合后的文件打包了,放在自己的GitHub上,方便下次使用。包含0.8和0.6的版本。

附上打包文件的地址:https://github.com/abeitian/tvm_package

2°安装Linux的依赖。

这里使用的是WSL的Linux Ubuntu18.04、GCC7.5和Python3.7.3环境,网上有关于Windows安装的教程,但需要VS2019,我的电脑已经快承受不了了,所以在0.6没成功后,还是选择了硬刚。

安装依赖命令。这个一般不会错,如果提示少了,就再多装下。

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

3°编译共享库。

先将config文件复制到新建的build文件,修改后再进行编译。

mkdir build # 在tvm_8文件夹下创建
cp cmake/config.cmake build # 把配置文件复制到新建的build目录下

打开build下的配置文件,进行一些修改。为了支持LLVM环境,需要ON打开下,LLVM预编译版本在这里下载。

cd build
vim ./config.cmake

将LLVM功能打开,同时把LLVM的路径给配置下,可以使用set来配置,也能直接在/home/lytain(自己用户)/.bashrc下配置。这里选择后者。

LLVM的环境配置。

127 #LLVM
128 export LLVM_HOME=/usr/local/llvm-9.0.0/bin
129 export PATH=$LLVM_HOME:$PATH

使用cmake和make进行编译。

cmake ..
#如果要使用debug版本,可以使用下面这个命令
cmake -DCMAKE_BUILD_TYPE=Debug ..
make -j8

4°环境变量的配置。
将配置放到用户的.bashrc中。

export TVM_HOME=/usr/local/tvm_8
export PYTHONPATH=$TVM_HOME/python:$TVM_HOME/python/tvm:$TVM_HOME/build:$TVM_HOME/python/tvm/runtime:$[PYTHONPATH]

5°其他依赖的安装。
pip install numpy decorator attrs。


三、踩坑

1°在编译完成后,会在build文件夹下,产生libtvm.so和libtvm_runtime.so等文件,这些文件得放在/usr/local/sbin下面,不然会出现一些错误,我之前没移动,使用配置Python路径的方式,但没成功,根据错误提示,解决了这个问题。

产生的libtvm.so和libtvm_runtime.so文件如下。

如果不把最新的版本的so文件放在/usr/local/sbin下,可能会产生下面这些问题,我这里是版本的问题,在/usr/local/sbin下放的是之前0.6版本的,升级0.8的时候没注意到,后来替换了最新的so文件,就没这些问题了。

2°要验证tvm模块是否安装成功,需要使用python进入命令行,输入下面的指令进行验证。

>>> import tvm
>>> tvm.__version__

得到下面的结果。

如果报错找不到module,可能是配置不对,或者配置没有生效。简单的查看配置路径是否正确,可以按照以下命令进行。

>>> import sys
>>> sys.path

得到下面的结果。

['', '/usr/local/tvm_8/python', '/usr/local/tvm_8/python/tvm', '/usr/local/tvm_8/build', '/usr/local/tvm_8/python/tvm/runtime', '/usr/local/sbin/0', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/home/lytain/.local/lib/python3.7/site-packages', '/home/lytain/.local/lib/python3.7/site-packages/tvm-0.8.dev0-py3.7-linux-x86_64.egg', '/home/lytain/.local/lib/python3.7/site-packages/tornado-6.1-py3.7-linux-x86_64.egg', '/home/lytain/.local/lib/python3.7/site-packages/synr-0.3-py3.7.egg', '/home/lytain/.local/lib/python3.7/site-packages/scipy-1.6.3-py3.7-linux-x86_64.egg', '/home/lytain/.local/lib/python3.7/site-packages/psutil-5.8.0-py3.7-linux-x86_64.egg', '/home/lytain/.local/lib/python3.7/site-packages/numpy-1.20.2-py3.7-linux-x86_64.egg', '/home/lytain/.local/lib/python3.7/site-packages/decorator-5.0.7-py3.7.egg', '/home/lytain/.local/lib/python3.7/site-packages/cloudpickle-1.6.0-py3.7.egg', '/home/lytain/.local/lib/python3.7/site-packages/attrs-21.1.0-py3.7.egg', '/usr/local/lib/python3.7/site-packages']

如果要查看tvm模块包含的对象,可以使用下面命令。

>>> import tvm
>>> print(dir(tvm))

得到下面的结果。

['DataType', 'DataTypeCode', 'IRModule', 'Object', 'TVMError', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', '_ffi', '_nvcc', '_rocm', '_sdaccel', '_should_print_backtrace', 'arith', 'build', 'cl', 'container', 'contrib', 'cpu', 'device', 'driver', 'error', 'ext_dev', 'get_global_func', 'gpu', 'hexagon', 'ir', 'lower', 'metal', 'micro_dev', 'mtl', 'multiprocessing', 'nd', 'opencl', 'os', 'parser', 'register_extension', 'register_func', 'register_object', 'rocm', 'runtime', 'support', 'sys', 'target', 'te', 'tir', 'traceback', 'transform', 'tvm_wrap_excepthook', 'vpi', 'vulkan']

3°在使用import vta导入vta模块时,出现下面的错误。

No module named 'vta'

原因是PYTHONPATH中没有加入vta的路径,vta的路径在下面这里,并加入.bashrc中。

export PYTHONPATH=其他路径+$TVM_HOME/vta/python:$[PYTHONPATH] #具体内容视自己目录而定
#使用VTA,在例子中有说明,还需要导入一个VTA的环境变量
export VTA_HW_PATH=$TVM_HOME/3rdparty/vta-hw

4°在运行GEMM案例时,运行到一句import pytest导入pytest模块的话,出现了下面的错误。

ModuleNotFoundError: No module named 'pytest'

原因是python3.7自身没有安装pytest模块,这个模块可以直接通过下面命令安装,安装后导入就没有问题了。

py37 -m pip install pytest

5°在python运行示例的时,可能出现ModuleNotFoundError: No module named ‘_ctypes’问题。

这个问题是由python本身安装时,依赖库没有弄完整导致的,后面也没有执行make test进行验证。如果遇到这个问题,可以使用下面的操作,重新安装python,就不会出现这问题了。

1、sudo apt-get update
2、sudo apt-get upgrade
3、sudo apt-get dist-upgrade
4、sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
5、sudo apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-dev
6、sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
7、sudo apt-get install libssl-dev openssl
8、sudo apt-get install libffi-dev
9、重复编译安装:cd Python-3.7.5./configure --prefix=/usr/local/python3.7.5sudo makesudo make testsudo make install
10、添加环境变量:PATH=$PATH:$HOME/bin:/usr/local/python3.7.5/binln -s /usr/local/python3.7.5/bin/python3.7 /usr/bin/py37ln -s /usr/local/python3.7.5/bin/pip3 /usr/bin/pip37

6°TVM出现download的错误,比如:WARNING:root:Failed to download tophub package for llvm: <urlopen error [Errno 111] Connection refused>问题。

这个问题在社区中解决了,这里记录一下。具体的方法是去GitHub上,下载一个tophub的工程,并把这个工程放在下面的Linux路径下。重新运行,可以解决download系列的错误。

~/.tvm/tophub

在社区中,还提到下面这个警告,这个非常常见,主要是没有做一个auto tuning的结果,需要先tuning来自动探索下。但具体的流程,我自个还有些模糊,等后面懂了,来详细记录下如何解决这个问题。(换句话说,虽然我现在解决了,但由于不太懂,先不记录)


四、备注

踩坑记录远不止于此,但时间太长,就记住了这几点,后续觉得比较坑的,再补上。

TVM:深度学习框架编译器的安装踩坑集相关推荐

  1. 深度学习框架Keras的安装

    原文链接:https://blog.csdn.net/qingzhuochenfu/article/details/51187603 本人已经将最新博客更新转移至个人网站了,欢迎来访~~ SCP-17 ...

  2. [PyTroch系列-1]:PyTroch深度学习框架的详细安装过程

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:[PyTroch系列-1]:PyTroch深度学习框架的详细安装过程_文火冰糖(王文兵)的博客-C ...

  3. yolo专属深度学习框架darknet的安装记录

    darknet是yolo算法的作者Joseph Redmon使用c语言编写的一个开源卷积神经网络训练框架 如果项目中用到了yolo卷积神经网络模型,darknet框架是你的不二之选 darknet项目 ...

  4. Theano深度学习框架之Lasagne安装及入门

    1.Lasagne简单介绍 lasagne意味千层饼,是基于theano之上主要用于建立和训练神经网络的深度学习库.Lasagne is a lightweight library to build ...

  5. CV:Win10下深度学习框架安装之Tensorflow/tensorflow_gpu+Cuda+Cudnn(最清楚/最快捷)之详细攻略(图文教程)

    CV:Win10下深度学习框架安装之Tensorflow/tensorflow_gpu+Cuda+Cudnn(最清楚/最快捷)之详细攻略(图文教程) 导读 本人在Win10下安装深度学习框架Tenso ...

  6. 深度学习入门笔记系列(一)——深度学习框架 tensorflow 的介绍与安装

    本系列将分为 8 篇 .今天是第一篇 ,工欲善其事必先利其器 ,先简单讲讲当前的主流深度学习框架 TensorFlow 及其安装方法 . 我们知道 ,深度学习研究的热潮持续高涨 ,许多的开源深度学习框 ...

  7. DL框架之DL4J/Deeplearning4j:深度学习框架DL4J/Deeplearning4j的简介、安装、使用方法之详细攻略

    DL框架之DL4J/Deeplearning4j:深度学习框架DL4J/Deeplearning4j的简介.安装.使用方法之详细攻略 目录 深度学习框架Deeplearning4j的简介 1.Deep ...

  8. Win10深度学习框架及GPU运算环境搭建(CUDA10.0+Cudnn 7.6.5+pytroch1.2+tensorflow 1.14.0)

    一.深度学习为什么要搭建GPU运算环境? 熟悉深度学习的人都知道,深度学习是需要训练的,所谓的训练就是在成千上万个变量中寻找最佳值的计算,所需计算的数据量异常庞大.CPU是一个有多种功能的优秀领导者. ...

  9. AI System 人工智能系统 TVM深度学习编译器 DSL IR优化 计算图 编译 优化 内存内核调度优化 DAG 图优化 DFS TaiChi 函数注册机 Registry

    DSL 领域专用语言 TVM深度学习编译器 AI System 人工智能系统 参考项目 TaiChi 三维动画渲染物理仿真引擎DSL TVM 深度学习DSL 密集计算DSL LLVM 模块化编译器 编 ...

最新文章

  1. js 多维数组长度_C++申请与释放动态数组1(学习笔记:第6章 16)
  2. Java线程池(一)
  3. ubuntu 安装mysql5.6
  4. Visual C++2005库的十项突破性变化
  5. jquery.validate.js的使用小结
  6. pytorch基础一:张量
  7. 容器编排技术 -- Kubernetes kubectl rollout history 命令详解
  8. android json 教程 pdf,android用jsonReader来解析json,jsonreaderjson
  9. Golang连接使用MySql5.7数据库完整步骤
  10. java list交换_如何在JAVA中交换两个arraylist?
  11. Ogre3D的GOOF的场景编辑器截图
  12. winfrom 窗口起始位置为屏幕中央
  13. 【Stanford Online】Engineering: Algorithms1 NO.4 The Master Method
  14. usc计算机博士游戏专业,USC工科博士专业排名,必然得仔细的看
  15. 安装glib2.6x
  16. 学插画的线上机构排名
  17. 51单片机移植UCOS-II的方法与改进
  18. 自制锂电池主动均衡板与新能源技术,均衡技术及原理
  19. HTML5 网页端年会抽奖源码,导入名单列表即可使用
  20. mysql 把时间戳转时间格式_mysql时间戳转成常用可读时间格式的两种方法

热门文章

  1. django_filters、django_rest_framework_filters源码解析
  2. Abaqus UEL 杆单元
  3. 【一】树莓派上基于USB摄像头使用mjpg-streamer和motion监控
  4. strcmp 区分大小写么_C语言strcmp()函数:比较字符串(区分大小写)
  5. 怎么利用手机App做任务赚钱
  6. 爱了!Intellij IDEA 自带的 Vim 插件真心不错。。。
  7. conda安装albumentations
  8. 命令执行漏洞 java_白帽子挖洞—命令执行(Commnd Execution)篇
  9. lombok插件用法
  10. 机器学习-非监督学习