使用mlc-chat的python包的时候会报VK_ERROR_INITIALIZATION_FAILED,但是cli版本正常工作,经检查预编译的tvm没法使用vulkan。遂自己编译。官网教程有很多问题,这里记录自己成功的经验
安装依赖
-
CMake >= 3.24
-
LLVM >= 15
-
Git
-
Vulkan/CUDA/ROCm/OpenCL/Metal
-
折腾了半天发现Debian12还得装这个,不然最后一步报错
sudo apt install libpolly-16-dev
创建环境
需要conda
# make sure to start with a fresh environment
conda env remove -n tvm-build-venv
# create the conda environment with build dependency
conda create -n tvm-build-venv -c conda-forge \
"llvmdev>=15" \
"cmake>=3.24" \
git
# enter the build environment
conda activate tvm-build-venv
下载
官网给的下载脚本都没法下载,啊哈哈.jpg
# clone from GitHub
git clone --recursive https://github.com/mlc-ai/relax tvm-unity && cd tvm-unity
# create the build directory
rm -rf build && mkdir build && cd build
# specify build requirements in `config.cmake`
cp ../cmake/config.cmake .
配置编译
修改config.cmake,以下是要添加的项目。
set(CMAKE_BUILD_TYPE RelWithDebInfo)
set(HIDE_PRIVATE_SYMBOLS ON)
以下是要修改的项目。
#llvm使用已安装的版本!
set(USE_LLVM "llvm-config-16 --ignore-libllvm --link-static")
#把你需要的功能改成ON
set(USE_VULKAN ON)
编译
cmake .. && cmake --build . --parallel $(nproc)
安装至自定义虚拟环境
conda activate your-own-env
conda install python # make sure python is installed
cd /path-to-tvm-unity/python
pip install -e .
验证安装
>>> import tvm
>>> vk=tvm.device("vulkan")
>>> vk.exist
True