【开发环境】Windows下搭建TVM编译器

关于搭建TVM编译器的官方文档:Install from Source --- tvm 0.14.dev0 documentation (apache.org)

1. 安装Anaconda

首先我们需要安装Anaconda,因为其中包含着我们所需要的各类依赖:

进入Anaconda官网https://www.anaconda.com/products/distribution,下载Windows版本,下载完成后运行.exe,可以更改安装路径(如果安装路径不是C盘可能需要一点点额外的步骤,这个后面会提到) ,基本一路Next就可以了。需要注意的是,一定要把将Anaconda加入PATH勾选上,这样就可以节省配置Anaconda环境变量的步骤。

最终安装好Anaconda,可以在电脑应用菜单这里找到对应的cmd终端入口和powershell入口:

2. 编译LLVM

接下来是编译LLVM,简便行事我们可以使用已经手动编译好的库,进入https://winlibs.com/找到包含LLVM的包:

下载解压到任意目录里就行,最后把其中bin目录路径写入环境变量的PATH中,进入Anaconda的cmd终端中输入如下命令:

bash 复制代码
 llvm-config --libdir

不报错并显示对应的库目录路径意味着前面的步骤都完成了,下面就开始搭建TVM。

3. 获取TVM源码

从github上获取最新版的TVM克隆到本地文件夹tvm中,记住务必要克隆而非直接下载ZIP解压否则后面编译会报错

bash 复制代码
 $ git clone --recursive http://github.com/apache/tvm tvm

新建一个build文件夹,从文件夹cmake中复制一份config.cmake拷贝到build文件夹中:

bash 复制代码
 $ cd tvm
 $ mkdir build
 $ cp cmake/config.cmake build

当然源码获取并没有这么简单,这也是我踩的一个大坑了,如果现在查看build里的一些文件夹,你会发现很多是空的,这是因为它们是子仓库所以并没有跟随着一起将源码克隆到本地,反而只是将一个jit链接克隆了下来,我们接下来需要补充这一部分代码,进入github仓库的build文件夹下,将有蓝色链接(含有子仓库)的源码下载到本地,替换原来残缺的部分:

4. 构建虚拟环境

在Anaconda终端中切换到tvm的文件夹目录下,注意:如果你将Anaconda放在了非系统盘,那么你需要使用管理员身份进入终端。

使用如下命令构建并进入tvm-build的虚拟环境:

bash 复制代码
 # Create a conda environment with the dependencies specified by the yaml
 conda env create --file conda/build-environment.yaml
 # Activate the created environment
 conda activate tvm-build

这个过程会比较长,大概10分钟左右。

5. 使用cmake生成.dll库

打开build目录下的config.cmake文件,将USE_LLVM设为ON,修改完后保存:

进入build目录调用cmake进行生成:

bash 复制代码
 cd build
 cmake -A x64 -Thost=x64 ..
 cd ..
 cmake --build build --config Release -- /m

这里可能会有报错"No CMAKE_C_COMPILER could be found",意思就是没有编译器,我们可以去下载Visual Studio解决这个问题,如果你已经安装了Visual Studio但仍然存在这个问题,那你需要去Visual Studio Installer里下载安装一个SDK,这里我推荐最新版的windows 10 SDK。

这个步骤也要等待蛮久的,大概半小时(而且非常占用CPU,电脑风扇起飞),可以看到中途会有很多Warnings,不必理会 (不是Error就知足吧Orz):

最终可以看到在tvm\build\Release目录下生成了tvm.dll的链接库:

6. python依赖库的安装

使用如下命令直接安装即可:

bash 复制代码
 pip3 install typing_extensions numpy decorator attrs
 pip3 install tornado psutil xgboost cloudpickle
 pip3 install ml_dtypes

7. 将TVM安装到python环境

这一步看其他大佬的博客都是直接配置PYTHONPATH环境变量,但实际上我们在Anaconda终端直接运行如下脚本即可完成:

bash 复制代码
 cd python
 python setup.py install

运行完毕,可以打开python的IDLE输入import tvm来简单测试一下我们搭建的TVM是否可用:

如上所示,没有报错基本就成功了。

当然如果不习惯用IDLE,也可以使用VSCode、PyCharm等代码编辑器,例如在VSCode的设置的命令面板中输入:

bash 复制代码
python:select interpreter

更换python解释器为我们刚刚添加tvm包的解释器:

如下所示,没有报错:

至此,我们的TVM编译器搭建就结束了,篇幅不长但是却浓缩了我踩坑的漫长经历QAQ

相关推荐
小众AI2 小时前
AI-on-the-edge-device - 将“旧”设备接入智能世界
人工智能·开源·ai编程
舟寒、2 小时前
【论文分享】Ultra-AV: 一个规范化自动驾驶汽车纵向轨迹数据集
人工智能·自动驾驶·汽车
梦云澜5 小时前
论文阅读(十二):全基因组关联研究中生物通路的图形建模
论文阅读·人工智能·深度学习
远洋录6 小时前
构建一个数据分析Agent:提升分析效率的实践
人工智能·ai·ai agent
IT古董7 小时前
【深度学习】常见模型-Transformer模型
人工智能·深度学习·transformer
沐雪架构师8 小时前
AI大模型开发原理篇-2:语言模型雏形之词袋模型
人工智能·语言模型·自然语言处理
摸鱼仙人~8 小时前
Attention Free Transformer (AFT)-2020论文笔记
论文阅读·深度学习·transformer
python算法(魔法师版)8 小时前
深度学习深度解析:从基础到前沿
人工智能·深度学习
kakaZhui9 小时前
【llm对话系统】大模型源码分析之 LLaMA 位置编码 RoPE
人工智能·深度学习·chatgpt·aigc·llama
struggle202510 小时前
一个开源 GenBI AI 本地代理(确保本地数据安全),使数据驱动型团队能够与其数据进行互动,生成文本到 SQL、图表、电子表格、报告和 BI
人工智能·深度学习·目标检测·语言模型·自然语言处理·数据挖掘·集成学习