1.基础环境配置
由于我使用的centos环境是个空环境,什么都么有,所以需要装的东西多一点;
(1) 安装gcc
由于centos7环境默认gcc版本是gcc4.8,但是在使用tvm的时候有时候会用到C++17的规则,所以需要将gcc升级版本,具体升级到多少呢,这里踩了很多坑,最终确定版本gcc-9.3.1;因为后面我们安装LLVM是通过源码编译的方式安装的,其他版本会出现莫名奇妙的错误;
这里采用在线升级的方法:
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
// 永久启用gcc9
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
上述步骤走完即完成gcc9的升级。
(2)安装cmake
TVM教程中已经提示开发过程中的cmake版本需要 ≥3.18,所以这里我选择安装cmake-3.26.3版本,其他版本亦可;
下载cmake安装包:https://cmake.org/download/
或者:
wget https://github.com/Kitware/CMake/releases/download/v3.26.3/cmake-3.26.3.tar.gz
安装:
tar -zxvf cmake-3.26.3.tar.gz
cd cmake-3.26.3
./bootstrap && make -j8 && sudo make install
ln -s /usr/local/bin/cmake /usr/bin/
cmake --version
除此之外还有些安装包需要安装,直接yum在线安装即可:
sudo yum update
sudo yum install -y python-devel ncurses-compat-libs zlib-devel cmake libedit-devel libxml2-devel
2.安装LLVM
由于我使用TVM主要基于CPU的硬件环境,所以我就只安装LLVM。如果还需要在nvidia GPU,则需要再安装CUDA,或者其他硬件对应的后端;
TVM教程中有很多种LLVM的安装方法;我这里选择下载源码编译安装的方式(其它方式都尝试了,均没法正常使用),然后在tvm的config.cmake里面直接开启set(USE_LLVM ON),让它自己寻找LLVM。
安装过程:
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/llvm-project-13.0.1.src.tar.xz
tar vxf llvm-project-13.0.1.src.tar.xz
cd llvm-project-13.0.1.src
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RTTI=ON -DLLVM_ENABLE_PROJECTS="clang" -G "Unix Makefiles" ../llvm
make -j8
make install
安装完成;
3.安装TVM
下载源码:
git clone --recursive https://github.com/apache/tvm tvm
mkdir build
cp cmake/config.cmake build
接下来修改复制过来的config.cmake文件:
根据需要开启后端,因为前面我已经在系统里安装了LLVM,我这里只修改了set(USE_LLVM OFF)为set(USE_LLVM ON),让其自己搜索LLVM,其他部分不动;修改完编译:
cmake ..
make -j8
没有报错则编译成功;
然后添加下python的环境变量
//修改路径
export PYTHONPATH=/path-to-tvm-unity/python:$PYTHONPATH
完成后验证;验证按照TVM官方教程验证即可。
如果需要使用tvm python编译模型,则需要事先安装好python的依赖:
pip install numpy decorator attrs
pip install typing-extensions psutil scipy
pip install tornado
pip install xgboost