ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

docker中源码安装tvm

2022-07-15 00:35:21  阅读:177  来源: 互联网

标签:set python tvm -- 源码 ssh install docker


TVM安装

docker安装

可自行到https://tvm.apache.org/docs/install/docker.html 官网下载安装

源码安装

环境:
系统: ubuntu22.04系统,
docker版本: 20.10.17
cuda: 11.6
因此在安装时选用了nvidia/cuda:11.6.1-devel-ubuntu20.04这个镜像文件

镜像 环境下载:
docker pull nvidia/cuda:11.6.1-devel-ubuntu20.04

通过sudo docker images查看镜像,并使用如下命令启动镜像:

 sudo docker run -it --shm-size=10g -v /home/ngl/workspace:/home/workspace --runtime=nvidia -e NVIDIA_VISIBLE_DEVICE=0 nvidia/cuda:11.6.1-cudnn8-devel-ubuntu20.04  /bin/bash

进入系统,便可根据官网中的操作步骤进行源码安装:

  • 下载源码
    使用--recursive选项,循环克隆git子项目
    git clone --recursive https://github.com/apache/tvm tvm

在进行项目编译之前,需要安装必需的库

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
  • 创建编译目录
mkdir build
cp cmake/config.cmake build

修改config.cmake中的配置选项:

  1. 如需要使用cuda,将set(USE_CUDA OFF) 改成 set(USE_CUDA ON) ,使能CUDA后端,OpenCL/RCOM等都是一样的
  2. 为debug方便,可set(USE_GRAPH_EXECUTOR ON) and set(USE_PROFILER ON) 确保嵌入式图形执行器和调试函数
  3. 因LLVM用于CPU codegen,强烈建议安装LLVM,并修改set(USE_LLVM ON)可使cmake搜索一个可用的LLVM版本
    LLVM安装:
    apt-get install llvm
    使用如下命令测试llvm是否测试成功:
    llvm-config --version
  4. 如果要加入VTA,将其中一行set(USE_VTA_FSIM OFF)改为set(USE_VTA_FSIM ON)

如有其他配置需要,可自行根据官网提示进行配置

  • 编译TVM
cd build
cmake ..
make -j4

最后在build目录中生产libtvm.so和libtvm_runtime.so两个动态库

  • 增加python支持
    ~/.bashrc中加入如下几行:
export TVM_HOME=/home/workspace/tvm/tvm
export PYTHONPATH=$TVM_HOME/python:$TVM_HOME/vta/python:${PYTHONPATH}

export VTA_HW_PATH=$TVM_HOME/3rdparty/vta-hw
  • 安装python相关依赖
pip3 install numpy decorator attrs
pip3 install tornado
pip3 install tornado psutil xgboost
pip3 install mypy orderedset antlr4-python3-runtime

注:
踩坑记录:

  1. CMake was unable to find a build program corresponding to "Ninja". CMAKE_MAKE_PROGRAM is not set
    On Ubuntu, I think it's apt-get install ninja-build.

  2. Crttest failed, no rules to make the target “crttest”
    I think this is because you don’t have set(USE_MICRO ON) in your config.cmake. tests/scripts/task_config_build_cpu.sh turns this option on, which is why task_cpp_unittest.sh assumes that that target exists.
    参考链接:https://discuss.tvm.apache.org/t/crttest-failed-no-rules-to-make-the-target-crttest/8450

python倒入自定义模块的方法:
要用import mymodule导入自定义的模块,其必须在python的搜索路径中,一般有三种方法可以采用:
1.将你自定义的模块(.py文件)放置在python的任意搜索路径下(可以在python中输入import syssys.path 查看搜索路径)
2.修改环境变量PYTHONPATH以包含用户自定义模块的路径

  • 临时修改: 在终端输入export PYTHONPATH=/mymodule directory:$PYTHONPATH,利用echo $PYTHONPATH 命令可查看是否将路径添加成功。该方法在当前终端下有效,但若关闭终端后重新打开,则会失效。

  • 彻底修改: 要想使修改始终有效,则需要修改用户或系统的环境变量配置文件。以修改用户的环境变量配置文件.bashrc.profile为例(两个文件均在用户主目录下/home/用户名,.bahsrc包含专用于你的bash shell的bash信息,当登录以及每次打开新的shell时,该文件被读取;.profile包含专用于你的shell信息,当用户登录时,该文件仅仅执行一次,它设置一些环境变量,执行用户的.bashrc文件)。cd到用户主目录下,打开.bashrc或.profile文件,在末尾添加一行export PYTHONPATH=/mymodule directory:$PYTHONPATH,保存退出后,执行source .bashrc 或source .profile命令使修改生效。修改系统环境变量配置文件的过程也类似,只不过相应的文件要到/etc 目录下去找。

  1. 修改python的sys.path变量,在导入自定义模块前,执行以下操作。此方法也只能临时起作用,退出python下次再进来就失效了。
import sys
sys.path.append('mymodule directory')

参考:https://blog.csdn.net/Blateyang/article/details/78753051

VSCode访问docker容器

在服务容器中配置ssh

  1. 通过一个其他的端口进入容器,这里使用6789端口
 sudo docker run -it --shm-size=10g  -p 6789:22 -v /home/ngl/workspace:/home/workspace --runtime=nvidia -e NVIDIA_VISIBLE_DEVICE=0 nvidia/cuda:11.6.1-cudnn8-devel-ubuntu20.04  /bin/bash

登陆到容器中后下载openssh
2. 下载openssh

apt-get update
apt-get install openssh-server
  1. 设置root密码
    passwd
    会设置两遍相同的密码,之后登陆的时候用到

  2. 修改配置文件
    vim /etc/ssh/sshd_config
    注释掉 PermitRootLogin prohibit-password 这一行
    添加这一行 PermitRootLogin yes

  3. 重启ssh服务

service ssh restart
# 或使用
# /etc/init.d/ssh restart
  1. 本机链接ssh
    ssh -p 6789 root@0.0.0.0

  2. 远程访问服务器docker里正在运行的容器
    ssh -p 6789 root@192.168.x.xx

如报错:ssh: connect to host 0.0.0.0 port 6789: Connection refused
原因:没有开放对应端口
解决方案:
在主机上:sudo iptables -I INPUT -p tcp --dport 6789 -j ACCEPT

  1. 在宿主机上配置vscode
    8.1 安装Remote-SSH插件
    image

使用插件连接远程服务器里的容器
image

这样即可在本地vscode中使用docker中的环境,但美中不足的是如果想要显示图片等可视化数据,存在一定的限制,目前,我想到的仅是先本地docker保存起来,然后在宿主机中打开查阅
如:
plt.show()后,执行plt.savefig("filename.png")

标签:set,python,tvm,--,源码,ssh,install,docker
来源: https://www.cnblogs.com/whiteBear/p/16479844.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有