以docker方式安装tvm的方法

虽然官方也提供了源码编译、二进制和docker但是这三种方式,但是网上大多数资料都是基于源码安装的。之所以用docker安装好处有两个,

  1. 一次安装到处运行,以后有同事需要用的直接导入镜像,避免了繁琐的安装过程,能够把更多的精力放在开发上。
  2. 不会污染环境,即使docker里折腾错了,也不会影响宿主机里的其他环境。

1 安装docker engine

参考:https://docs.docker.com/install/linux/docker-ce/ubuntu/

#### 如果装有旧版, 先卸载
sudo apt-get remove docker docker-engine docker.io containerd runc

#### 设置源
sudo apt-get update

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo apt-key fingerprint 0EBFCD88

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

#### 安装docker-ce
sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io

#### 测试是否安装成功
sudo docker run hello-world

安装 NVIDIA Containner Tookit

以前叫做nvidia-docker,现在改名叫做nvidia containner tookit。这个工具的意义在于可以让docker直接使用宿主机的驱动已经显卡资源。
以前有些特有的命令需要用 nvidia-docker,现在都统一到docker这个命令了

安装过程

#### 添加软件源
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

#### 安装NVIDIA Container Toolkit
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

#### 重启docker
sudo systemctl restart docker

#### 测试NVIDIA Container Toolkit是否安装成功,如果输出显卡驱动信息则安装成功
docker run --gpus all nvidia/cuda:9.0-base nvidia-smi

3 下载dockerimage

TVM官方建议docker 镜像位置在https://hub.docker.com/r/tlcpack/
在这里我们选择ci-gpu

在tag里我们选择最新的这个

其实这个镜像就是安装TVM官方git中的这个dockerfile( https://github.com/apache/tvm/blob/main/docker/Dockerfile.ci_gpu )构建的,可以看到这里安装了所有TVM的必要库
我们利用命令

docker pull tlcpack/ci-gpu:20221025-182121-e41d0ed6e

把这个镜像下载下来,下载时间比较长,下载下来有26个G

4 启动容器

docker run -it  --gpus all  --shm-size=10g -v /home/xxxx:/workspace tlcpack/ci-gpu:20221025-182121-e41d0ed6e  /bin/bash

5 在容器中安装TVM

这个过程跟源码安装的过程是一样的。只不过不需要安装那些库了,只需下载源码编译了

5.1 安装vim

原始镜像里没有Vim

sudo apt install vim 

5.2 下载源码

$ git clone --recursive https://github.com/apache/tvm tvm

注意第三方文件目录里包含了其它工程,但是不一定能下载下来可以手动的git下来

5.3 make

现在tvm目录里建一个build目录,把cmake目录下的config文件拷到build目录下

mkdir build
cp cmake/config.cmake build

make

cd build
cmake ..
make -j4

5.4 安装 python package

安装官方的方法

export TVM_HOME=/path/to/tvm
export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH}

6 提交镜像更改

查看容器id

执行命令

docker commit c55e823fa57f tlcpack/ci-gpu:add_tvm

7 保存为文件

docker save -o ./tvmdocker.tar 949a8683b255

将文件拷贝到其他的服务器上

8 导入镜像

docker load < tvmdocker.tar

docker tag 949a8683b255 tlcpack/ci-gpu:add_tvm

10 在新的机器上启动容器

docker run -it  --gpus all --name="tvm"  -v /home/xxxxx:/workspace  -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro tlcpack/ci-gpu:add_tvm  /bin/bash





posted @ 2022-11-09 17:50  dawningblue  阅读(1526)  评论(0)    收藏  举报