前提

之前从源码安装过一次TVM,但是要配置cmake,安装llvm等,太过于繁琐,所以这一次准备在Docker镜像里安装TVM,做以记录。

TVM安装

  1. 安装docker以及nvidia-docker
    参考这篇文章wsl2安装docker以及nvidia-docker安装docker,这里我使用的是wsl2,如果你是在物理机器上安装docker,这里有所区别,参考其他的博文,请注意。

  2. 拉取docker镜像
    TVM官方建议的Docker镜像在这个网站,从中选取gpu版本,最新的tag即可。
    在这里插入图片描述
    复制这行命令到terminal中回车等待下载完毕即可。下载完成后,可以使用docker images查看是否下载成功。
    在这里插入图片描述
    我这里已经下载完成。

  3. 启动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 终端。

  4. 编译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编译成功。

  5. 安装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一路回车即可安装成功。
安装成功后创建一个虚拟环境。

  1. 安装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}
    
  2. 在虚拟环境中安装一些必要的python包

    pip install  numpy decorator attrs typing-extensions psutil scipy tornado tornado psutil 'xgboost>=1.1.0' cloudpickle
    
  3. 进入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

参考链接

  1. https://tvm.hyper.ai/docs/install/from_source
  2. https://www.cnblogs.com/dawningblue/p/16874661.html
  3. https://blog.csdn.net/weixin_44237337/article/details/130588335
Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐