TVM学习笔记
安装
- 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 终端。
- 编译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
- 安装minconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
- 安装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}
- 安装必要python包
pip install numpy decorator attrs typing-extensions psutil scipy tornado tornado psutil 'xgboost>=1.1.0' cloudpickle
- 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框架要点解析:
- 输入不同框架的模型,转化成IR计算图,随后进行优化计算(如算子融合、剪枝、转换、量化等)
- TVM优化调度丈量运算,将代码调度与计算分离
- 生成不同后端设备相应的代码
- 在高级图IR中优化常见的深度学习工作负载
- 转换计算图,以便进行内存最小化与数据布局优化,并对不同硬件后端融合
- 提供从前端深度学习到裸机硬件的端到端编译的pipeline
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步