TVM学习笔记

TVM学习笔记

安装

  1. podman拉取镜像
podman pull tlcpack/ci-gpu:20240105-165030-51bdaec6
podman run -it --network=host --gpus all --shm-size=10g -v /home/moguw/Github/tvm-learn:/workspace --name tvm-build tlcpack/ci-gpu:20240105-165030-51bdaec6 /bin/bash
  • --shm-size=10g指的是共享内存的大小为10g
  • /home/xxxx:/workspace指的是将/home/xxxx目录挂载到镜像中的/workspace目录下
  • /bin/bash: 这是在容器内要执行的命令。在这种情况下,它会启动一个 Bash 终端。
  1. 编译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
  1. 安装minconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
  1. 安装TVM的python包
sudo apt update
sudo apt install -y vim
vim ~/.bashrc

conda activate tvm-build
export TVM_HOME=/workspace/tvm
export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH}
  1. 安装必要python包
pip install  numpy decorator attrs typing-extensions psutil scipy tornado tornado psutil 'xgboost>=1.1.0' cloudpickle
  1. 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

podman run -it --network=host --gpus all --shm-size=10g -v /home/moguw/Github/tvm-learn:/workspace:Z tlcpack/ci-gpu:20240105-165030-51bdaec6 /bin/bash

Error: setting up CDI devices: unresolvable CDI devices nvidia.com/gpu=all

https://gist.github.com/jabbany/66e633c3fd30f81159feb46e4da25c55


fedora关闭SELINUX

sudo sed -i s#SELINUX=enforcing#SELINUX=disabled# /etc/selinux/config

OSError: /workspace/miniconda3/envs/tvm-build/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /workspace/tvm/build/libtvm.so)

conda install -c conda-forge gcc=12.1.0

TVM介绍

TVM是一个开源的、端到端的机器学习编译器框架。

它的作用是接收AI深度学习模型(如Tensorflow、Pytorch、MxNet...),以及中间格式(如ONNX、CoreML...),通过编译成Graph IR,经过一系列优化,最后生成可是别的机器码,最终可以在设备上推理部署。

TVM框架要点解析:

  1. 输入不同框架的模型,转化成IR计算图,随后进行优化计算(如算子融合、剪枝、转换、量化等)
  2. TVM优化调度丈量运算,将代码调度与计算分离
  3. 生成不同后端设备相应的代码
  4. 在高级图IR中优化常见的深度学习工作负载
  5. 转换计算图,以便进行内存最小化与数据布局优化,并对不同硬件后端融合
  6. 提供从前端深度学习到裸机硬件的端到端编译的pipeline
posted @   真真夜夜  阅读(44)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示