当前位置: 首页 > news >正文

Windows环境下安装TVM编译器

安装TVM编译器

  • 简介
  • 创建环境
    • 我所使用环境
    • conda环境
    • MSVC
    • TVM源码编译

简介

Apache TVM是一个机器学习编译框架,遵循Python优先开发和通用部署的原则。它采用预先训练的机器学习模型,编译和生成可部署的模块,这些模块可以嵌入并在任何地方运行。
本篇博客主要目的是帮助大家在windows平台上安装好tvm,并且可以顺利使用。

因为有项目需要使用tvm,同时自己需要用windows做一些测试,因此想要在windows上安装tvm,但是安装过程中遇到了很多的挫折,反复折腾了好几次,这次终于是能用了。

下面记录一下安装过程以及处理方法。希望本篇博客可以真正起到一定的作用。

创建环境

参考TVM官方文档:

Apache TVM 需要以下依赖关系:
CMake (>= 3.24.0)
LLVM(推荐>= 15)
Git
Visual Studio 2019 (v16.7)
Python (>= 3.10)

我所使用环境

windows11

安装显卡驱动。
cmd下,使用nvidia-smi查看最高支持的cuda版本

nvidia-smi

可以看到我的最高支持cuda版本是12.7。后续安装选择小于等于版本号的就好

然后在nvidia cuda官网找到自己对应的版本下载。
安装后注意检查是否配置环境变量。
在cmd中查看是否安装完成,会输出版本号

nvcc -V

conda环境

官网的方法是用conda创建环境然后装这几个包,但是官网给的包不全,后续会报依赖错误。
我比较推荐先在官方下载渠道下载,解压后在conda文件夹下找到build-environment.yaml.文件,用conda指令创建环境。

在conda中cd 到对应文件夹下

conda env create -f build-environment.yaml

这样大部分依赖都会安装好。

MSVC

cmake编译需要用到MSVC,官网建议至少Visual Studio 2019 (v16.7)。

但由于我的cuda版本比较低实际上应该是只支持19-22,我安装了2026版本,后续执行GPU编译会报错。
我也试了2019版本,在编译TVM时候会警告:
“warning C5051: 特性“forceinline”至少需要“/std:c++20”;已”

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 -Thost=x64 ..

如果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,这一步报错可能是没有安装git

cd 3rdparty/tvm-ffi pip install .

还需要安装一些额外的依赖:

conda install numpy cython conda install tornado psutil xgboost cloudpickle

然后测试一下是否可以使用。

python import tvm tvm.cuda().exist

会输出true。如果显示缺什么包,再用conda安装就好。

http://www.jsqmd.com/news/582635/

相关文章:

  • 5大核心优势:为多场景用户打造的屏幕翻译解决方案
  • 【头歌】操作系统 课堂练习2.3:系统调用
  • OpenMS实战指南:如何用开源工具解决质谱数据分析三大难题
  • 春游出发前买酒外卖来得及吗?歪马送酒大额券解锁春日微醺新方式 - 资讯焦点
  • 论文查重还在花冤枉钱?Paperxie 免费查重,本科生的毕业省钱神器
  • SQL优化让查询提升10倍——从数据库工程到执行计划深度解析
  • 2026海外网红营销内容合作与策划最佳实践
  • 数据分析之事实表(Fact Table)
  • 代码随想录算法训练营第一天 | Leetcode 704.二分查找 | Leetcode 27.移除元素 | Leetcode 977.有序数组的平方 (c#和c++双语)
  • 履约门槛再次大修!TikTok美区全面强制官方物流后,卖家该怎样守住前台账号的安全底线?
  • 露营烧烤喝什么精酿比较潮?歪马送酒大额券帮你省出潮饮预算 - 资讯焦点
  • AI辅助开发:让快马AI理解并生成ccswitch工具的核心逻辑与UI管理代码
  • AgentCPM-Report高效部署教程:GPU显存优化+流式输出配置详解
  • async/await:异步编程的“读心术”|从原理到避坑,一篇吃透!
  • 追剧想喝点酒外卖哪里买方便?歪马送酒大额券解锁便捷微醺 - 资讯焦点
  • 解决FTPS连接问题:从握手失败到成功连接的实战
  • 《Docker 部署 Elasticsearch + Kibana:搭建自己的日志搜索平台》
  • 117. 如何在Rancher监控中测试 AlertManager
  • GitHub 学生认证须知
  • 学会OpenClaw后,我的摸鱼时间又变长了
  • 如何通过LAV Filters解决媒体播放难题?开源解码工具完整优化指南
  • STM32H723ZGT6 与 STM32F103RCT6 硬核对比,从参数到实战的全维度精准解析
  • 2026最新户外文旅灯光设计厂家推荐!权威榜单发布,品质服务双优 - 十大品牌榜
  • LFM2.5-1.2B-Thinking-GGUF版本管理与协作:GitHub工作流中的AI助手
  • 苏州日料哪家优惠力度大?火地铁板烧口令解锁隐藏福利,性价比碾压同档门店 - 资讯焦点
  • 为什么 ABAP 开发团队现在要认真看待 AI 这项能力
  • Ruby短信营销接口示例代码:Ruby开发环境下营销短信API接口的集成与Demo演示
  • 《从Claude Code泄露源码看工程架构:导读》
  • pre-pre-training的规则系统有哪些
  • 分子动力学自由能计算实战指南:从理论到实践掌握gmx_MMPBSA