【GiantPandaCV导语】笔者把tvm v0.9、v0.8、v0.6、v0.5、v0.4、v0.3、v0.2、v0.1都本地安装编译了,也就是除了v0.7没有本地编译以外所有版本都测试了,docker也测试了。遇到了好多小问题,故记录一下。然后测试dlsys的课的作业,原link为dlsys-course/assignment2-2018: (Spring 2018) Assignment 2: Graph Executor with TVM (github.com)
一般使用两种方式安装TVM:
这个tvm版本是v0.6
nvidia-docker run --rm -v /home/zhangxiaoyu/OneFlowWork/tvm/:/home/tvm_learn -it tvmai/demo-gpu bash
root@6813267b08b0:/# python3
Python 3.6.8 (default, Oct 9 2019, 14:04:01)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tvm
>>> tvm.__version__
'0.6.dev'
>>>
或者
docker pull tvmai/demo-gpu
nvidia-docker run --rm -it tvmai/demo-gpu bash
sudo apt install llvm
本地环境:ubuntu 18.04
总结:
下载v0.4~v0.9版本
v0.4可以直接import topi
# 创建虚拟环境
conda create -n tvm python=3.7
conda activate tvm
# 下载源码
git clone --recursive -b v0.4 https://github.com/apache/tvm tvm #-b 这个-b就是修改你要clone哪个版本
cd tvm
git submodule init
git submodule update
# 更新lib
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
看pip是python2还是python3,这步可选
which pip # /home/ml/.local/bin/pip
which python # /home/ml/anaconda3/envs/tvm_v9/bin/python
修改pip的python
vim /home/ml/.local/bin/pip
#!/home/ml/anaconda3/envs/tvm_v9/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())
编译tvm
mkdir build;cp cmake/config.cmake build
# 修改 tvm/build/config.cmake, 讲USE_LLVM设置成ON即set(USE_LLVM ON)
cd build;cmake ..;make -j4
环境变量
export TVM_HOME=/path/to/tvm # 注意这个/path/to/tvm是用户本地的路径
export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH}
因为这个版本的topi lib坏了,需要自己重新安装
cd tvm/topi/python
python setup.py install
安装一些库
pip install numpy decorator scipy nose
测试tvm是否配置成功
python
import tvm
tvm.__version__
import topi
# or
import tvm.topi
测试代码
测试这个dlsys的代码时候,v0.1~v0.4的版本代码不用修改,v0.5~v0.9的需要更改好多api,这部分我也修改完了,放在这个git里面。
git clone -b tvm_v4 https://github.com/RobertLuobo/tvm_dlsys_test.git #tvm版本v0.1~v0.4的版本用这个
# or
git clone -b tvm_v9 https://github.com/RobertLuobo/tvm_dlsys_test.git #tvm版本v0.5~v0.9的版本用这个
nosetests -v tests/test_tvm_op.py
python tests/mnist_dlsys.py -l -m logreg
python tests/mnist_dlsys.py -l -m mlp
安装下载v0.1~v0.3版本环境
下载v0.2版本
这边我clonev0.3好像直接也是v0.2,v0.1我也本地编译安装了一遍
# 创建虚拟环境
conda create -n tvm python=3.7
conda activate tvm
# 下载源码
git clone --recursive -b v0.2 https://github.com/apache/tvm tvm
cd tvm
git submodule init
git submodule update
# 更新lib
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
看pip是python2还是python3,这步可选
which pip # /home/ml/.local/bin/pip
which python # /home/ml/anaconda3/envs/tvm_v9/bin/python
修改pip的python
vim /home/ml/.local/bin/pip
#!/home/ml/anaconda3/envs/tvm_v9/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())
编译tvm,这里不是cmake,是make,这是跟前面不一样的地方
# 在 tvm 主目录下即可/path/to/tvm
cp make/config.mk .
# 修改 /path/to/tvm/config.mk, 改LLVM_CONFIG = llvm-config,即可要执行这段
# 直接make,不需要cmake ..
make -j4
环境变量
export TVM_HOME=/path/to/tvm # 注意这个/path/to/tvm是用户本地的路径
export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH}
因为有些版本的topi lib坏了,需要自己重新安装
cd tvm/topi/python
python setup.py install
安装一些库
pip install numpy decorator scipy nose
测试tvm是否配置成功
python
import tvm
tvm.__version__
import topi
测试代码
git clone -b tvm_v4 https://github.com/RobertLuobo/tvm_dlsys_test.git
nosetests -v tests/test_tvm_op.py
python tests/mnist_dlsys.py -l -m logreg
python tests/mnist_dlsys.py -l -m mlp
├── dl_stack.png
├── python
│ └── dlsys
│ ├── autodiff.py
│ ├── __init__.py
│ └── tvm_op.py
├── README.md
└── tests
├── dlsys
│ ├── autodiff.py
│ ├── __init__.py
│ └── tvm_op.py
├── mnist_dlsys.py
├── mnist.pkl.gz
└── test_tvm_op.py
matrix_elementwise_add
matrix_elementwise_add_by_const
matrix_elementwise_mul
matrix_multiply
conv_2d
relu
relu_gradient
softmax
softmax_cross_entropy
reduce_sum_axis_zero
broadcast_to
本文分享自 GiantPandaCV 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!