工欲善其事,必先利其器。
在开始学习和使用tvm之前,必定是要先安装一个的…
不过直至2020年8月,tvm发布的最新版本还是0.* 的,尚未发布正式版。安装上也有许多坑要填,不过按照官方文档上操作也基本是稳的。
本文接下来的内容将简要介绍一下笔者安装tvm的过程。
平台及版本
前排建议:如果不喜欢折腾,尽量别在windows上安装,会有很多莫名其妙的坑要填,而且未必有比较好的解决方案(亲测在win10上安装失败了5555)
硬件:x86服务器 + GTX1080Ti GPU
系统:Ubuntu18.04
tvm版本:0.7.dev1
llvm版本:10.0.0
安装过程
ubuntu上安装tvm只要根据官网教程说明操作就基本没啥问题了。官方提供了从源码安装和Docker镜像两种安装方法,这里介绍从源码安装的方法。
STEP1:从github上下载tvm源码
先cd到你想存放tvm的目录下
再终端执行如下指令:
git clone --recursive https://github.com/apache/incubator-tvm tvm
记得需要加上–recursive
然后cd tvm
进入到tvm的目录后,建议再执行一次git pull
,确保下载的tvm版本是最新版的。如果不是最新版的,在看官方的文档时,可能有一些包并没有在旧版里面出现,运行例程会报错。
STEP2:安装依赖包
执行以下两条语句即可,实际上大多数包应该都已经在之前安装过了,没有啥特殊的依赖。
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
如果需要提供CUDA支持,还需要先安装好CUDA(最低版本需求是8.0),这个就不做具体安装方法的介绍了,网上一搜一堆,有nvidia显卡的还是尽量安一个吧。
官网还强烈推荐安装LLVM,这是一个能够优化以任何语言编写的程序的编译效率的工具,tvm本身也是一个深度学习编译器,因此需要LLVM帮助提升效率。但LLVM的编译安装也是很让人头大的事情,接下来介绍如何快速有效地安装LLVM。
STEP3:安装LLVM(和clang)
LLVM也有两种安装方式。一种是从源码编译,但会比较麻烦,耗时也长;另一种是直接下载安装在相应平台上预先编译好的包(同时包含了clang等其他依赖工具),这个会轻松很多。
首先进入LLVM的官网下载页面:https://releases.llvm.org/download.html#10.0.0
找到提供Pre-Built Binaries的最新LLVM版本,根据自己的平台点击相应的下载链接,这里我们选择Ubuntu 18.04的,直接点前面的平台名称,不用点后面(.sig)括号部分,这是两个不同的下载链接。
这里多说一句,LLVM发布新版本时也会有接口发生变化的可能性,所以未必是越新越好,这里笔者亲测tvm0.7.dev1+LLVM10.0.0是可用的。
然后再把下载的文件解压到你的安装目录下,并记下其目录位置
接下来需要添加一些ubuntu的环境变量,在/etc/profile/
文件中添加以下两行:
export LLVM_HOME=你刚解压的LLVM文件夹的绝对路径/bin
export PATH=$LLVM_HOME:$PATH
STEP4:配置并编译tvm
再回到刚刚用git clone下载下来的tvm目录,执行以下命令:
mkdir build
cp cmake/config.cmake build
然后进行编译配置,修改build/config.cmake
文件内容:
- 如果使用了CUDA的话,找到
set(USE_CUDA OFF)
这条,将OFF改成ON - 为了方便debug,找到
set(USE_GRAPH_RUNTIME OFF)
和set(USE_GRAPH_RUNTIME_DEBUG OFF)
这两条,把OFF改成ON - 找到
set(USE_LLVM OFF)
这条,将OFF改成ON(因为添加了系统环境变量了,所以改成ON,编译时候会自动找到LLVM的位置)
接下来就可以进行编译了:
cd build
cmake ..
make -j4 # 也可以设为-j8,提升编译速度
如果出现类似如下的提示,则说明编译成功了
安装tvm
官网提供了两种tvm的安装方法,一种是设置系统环境变量,这种适合打算修改tvm源码的开发者,另一种是用提供的python脚本安装,这里介绍使用python脚本的安装。
分别用python解释器运行tvm目录下python文件夹内的setup.py,以及topi/python目录下的setup.py,具体指令如下:
cd python # 这里指的是git clone得到的tvm文件夹下的python文件夹
python setup.py install --user # 如果打算用python虚拟环境,得先把虚拟环境开了再执行这条
cd ..
cd topi/python
python setup.py install --user
再用pip安装一些依赖的python包:
pip3 install --user numpy decorator attrs # 必须安装
pip3 install --user tornado psutil xgboost # 可选
sudo apt install antlr4 # 可选
pip3 install --user mypy orderedset antlr4-python3-runtime # 可选
如果你的python环境是虚拟环境,则不需要加上–user
测试tvm是否安装成功
打开你的python解释器,运行如下指令:
>>> import tvm
>>> tvm.__version__
如果导入tvm时候没有报错,并且正确输出了tvm的版本,那么恭喜你,安装成功!