Docker环境安装TVM
之前从源码安装过一次TVM,但是要配置cmake,安装llvm等,太过于繁琐,所以这一次准备在Docker镜像里安装TVM,做以记录。
前提
之前从源码安装过一次TVM,但是要配置cmake,安装llvm等,太过于繁琐,所以这一次准备在Docker镜像里安装TVM,做以记录。
TVM安装
-
安装docker以及nvidia-docker
参考这篇文章wsl2安装docker以及nvidia-docker安装docker,这里我使用的是wsl2,如果你是在物理机器上安装docker,这里有所区别,参考其他的博文,请注意。 -
拉取docker镜像
TVM官方建议的Docker镜像在这个网站,从中选取gpu版本,最新的tag即可。
复制这行命令到terminal中回车等待下载完毕即可。下载完成后,可以使用docker images
查看是否下载成功。
我这里已经下载完成。 -
启动Docker镜像
docker run -it --gpus all --shm-size=10g -v /home/xxxx:/workspace tlcpack/ci-gpu:20240105-165030-51bdaec6 /bin/bash
启动镜像,这里
--shm-size=10g
指的是共享内存的大小为10g,/home/xxxx:/workspace
指的是将/home/xxxx
目录挂载到镜像中的/workspace
目录下,/bin/bash
: 这是在容器内要执行的命令。在这种情况下,它会启动一个 Bash 终端。 -
编译TVM
下载下来的镜像中是没有TVM的,只不过是给我们配置好了所有的环境,因此我们还要按照官网的方式编译TVM。git clone --recursive https://github.com/apache/tvm tvm
在tvm文件夹下新建
build
文件夹,然后将cmake/config.cmake
移动到build
文件夹下。cd tvm mkdir build cp cmake/config.cmake build
开始编译。
cd build cmake .. -G Ninja ninja
至此若无意外的话tvm编译成功。
-
安装minconda
这一步不能算在tvm安装的过程内,只不过是我想使用conda创建一个虚拟环境,然后在虚拟环境中使用tvm,而不是在Linux自带的python中使用tvm。
命令行输入:wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
下载最新的miniconda安装包,然后输入sh Miniconda3-latest-Linix-x86_64.sh
一路回车即可安装成功。
安装成功后创建一个虚拟环境。
-
安装TVM的python包
在~/.bashrc
文件中添加TVM路径,这个镜像没有安装vim
,所以首先使用sudo apt install vim
安装vim
。然后vim ~~/.bashrc
打开~/.bashrc
文件。在最后加入export TVM_HOME=/path/to/tvm export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH}
-
在虚拟环境中安装一些必要的python包
pip install numpy decorator attrs typing-extensions psutil scipy tornado tornado psutil 'xgboost>=1.1.0' cloudpickle
-
进入python环境,
import tvm
查看是否成功。
至此,tvm的所有安装结束。
一些error
在import tvm
中会遇到一个error:libstdc++.so.6: version ‘GLIBCXX_3.4.30’ not found 。 这里是因为虚拟环境没有使用系统的libstdc++.so.6
这个库,因为只需要将将虚拟环境中的软链接指向系统的这个库即可。
ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /root/miniconda3/envs/tvm/lib/libstdc++.so.6
参考链接
- https://tvm.hyper.ai/docs/install/from_source
- https://www.cnblogs.com/dawningblue/p/16874661.html
- https://blog.csdn.net/weixin_44237337/article/details/130588335
更多推荐
所有评论(0)