Windows环境下安装TVM编译器

张开发
2026/5/3 9:37:31 15 分钟阅读
Windows环境下安装TVM编译器
安装TVM编译器简介创建环境我所使用环境conda环境MSVCTVM源码编译简介Apache TVM是一个机器学习编译框架遵循Python优先开发和通用部署的原则。它采用预先训练的机器学习模型编译和生成可部署的模块这些模块可以嵌入并在任何地方运行。本篇博客主要目的是帮助大家在windows平台上安装好tvm并且可以顺利使用。因为有项目需要使用tvm同时自己需要用windows做一些测试因此想要在windows上安装tvm但是安装过程中遇到了很多的挫折反复折腾了好几次这次终于是能用了。下面记录一下安装过程以及处理方法。希望本篇博客可以真正起到一定的作用。创建环境参考TVM官方文档Apache TVM 需要以下依赖关系CMake 3.24.0LLVM推荐 15GitVisual Studio 2019 v16.7Python 3.10我所使用环境windows11安装显卡驱动。cmd下使用nvidia-smi查看最高支持的cuda版本nvidia-smi可以看到我的最高支持cuda版本是12.7。后续安装选择小于等于版本号的就好然后在nvidia cuda官网找到自己对应的版本下载。安装后注意检查是否配置环境变量。在cmd中查看是否安装完成会输出版本号nvcc -Vconda环境官网的方法是用conda创建环境然后装这几个包但是官网给的包不全后续会报依赖错误。我比较推荐先在官方下载渠道下载解压后在conda文件夹下找到build-environment.yaml.文件用conda指令创建环境。在conda中cd 到对应文件夹下conda env create -f build-environment.yaml这样大部分依赖都会安装好。MSVCcmake编译需要用到MSVC官网建议至少Visual Studio 2019 (v16.7)。但由于我的cuda版本比较低实际上应该是只支持19-22我安装了2026版本后续执行GPU编译会报错。我也试了2019版本在编译TVM时候会警告“warning C5051: 特性“forceinline”至少需要“/std:c20”已”2022版本没有测试是否还会有其他问题安装方法不再赘述不过官网似乎只支持最新版安装。TVM源码编译之前下载过源码的可以直接用下载的那个源码编译没有下载的需要在git下载一下TVM源码。conda activate tvm-wheel-build git clone --recursive https://github.com/apache/tvm tvm在克隆TVM存储库时使用–recursive标志非常重要它将自动克隆子模块。如果您忘记使用此标志可以通过在TVM存储库的根目录中运行git submodule update–init–recursive来手动克隆子模块。git下载比较慢并且我发现他还会绕过代理。有需要的话可以在下载之前配置一下代理。比如我使用的端口是10808#配置 git config --global http.proxy 127.0.0.1:10808 git config --global https.proxy 127.0.0.1:10808 #取消 git config --global --unset http.proxy git config --global --unset https.proxy这样下载速度会快一点。然后在其对应文件夹下创建build文件夹并进入(有build文件夹就删除掉)。复制config.cmake文件并配置。cd tvm mkdir build cd build cp ../cmake/config.cmake .打开config.cmake文件我主要是开启LLVM和cuda因此找到配置的地方并修改。其中LLVM参数可以参考我的替换成你对应环境的llvm-config位置set(USE_CUDA OFF) set(USE_LLVM OFF) 修改为 set(USE_CUDA ON) set(USE_LLVM E:/anaconda3/envs/tvm-wheel-build/Library/bin/llvm-config)此外最好还配置一下tvm文件夹下的CMakeLists.txt在if(MSVC)下面添加add_compile_options(/utf-8)不然后面编译会提示一个关于utf8的警告。在build文件夹下开始编译cmake -A x64 -Thostx64 ..如果msvc、cuda、LLVM都配置正确就可以编译成功。然后执行cd .. cmake --build build --config Release -- /m等待一段时间就会编译成功。期间会有一些警告应该是可以忽略不计。离开构建环境有两种方法可以将TVM成功的构建安装到其他环境中。我建议使用环境变量。因为我的代码在python文件夹下没有setup.py不知道为什么。因此不能按官方方法配置。在环境变量中添加TVM_HOME/path-to-tvm PYTHONPATH$TVM_HOME/python:$PYTHONPATH TVM_LIBRARY_PATH/path-to-tvm/build然后每个要用的环境都需要安装一下tvm-ffi,这一步报错可能是没有安装gitcd 3rdparty/tvm-ffi pip install .还需要安装一些额外的依赖conda install numpy cython conda install tornado psutil xgboost cloudpickle然后测试一下是否可以使用。python import tvm tvm.cuda().exist会输出true。如果显示缺什么包再用conda安装就好。

更多文章