TVM2023 windows 编译教程. 你可以直接下载mlc-llm的conda预编译进行使用,但是由于我需要转其他模型。因此我需要安装tvm,在windows上。这又回到了如何在windows上安装tvm的问题。

需要注意的是,mac和linux可以直接下载官方预编译包。windows目前还没有,你可能需要从源码编译llvm先。

最麻烦就是还得源码编译llvm,真鸡儿蛋疼。

源码编译llvm

llvm代码古老,所以很庞大,2GB,如果你不想clone这么大,可以clone小一点的,用shallow clone:

git clone --depth 1 --config core.autocrlf=false https://github.com/llvm/llvm-project.git
cd .\llvm-project\
cmake -S llvm -B build -G 'Visual Studio 16 2019'
cmake --build .\build\ --config Release

请注意,如果你遇到zlib的问题,可尝试再编译llvm的时候拿掉zlib:

 cmake -S llvm -B build -G 'Visual Studio 16 2019' -DLLVM_ENABLE_ZLIB=OFF

这样你就可以源码编译了,理论上来说不会有什么大问题。

这里我建议使用visual studio编译器进行编译,毕竟这是windows。

接下来找到: E:\codes\libs\llvm-project\build\Release\bin 这里该你的路径,在这里面有一个 llvm-config.exe 的东西。

然后再你的tvm config配置中修改:

# Possible values:
# - ON: enable llvm with cmake's find search
# - OFF: disable llvm, note this will disable CPU codegen
#        which is needed for most cases
# - /path/to/llvm-config: enable specific LLVM when multiple llvm-dev is available.
set(USE_LLVM "E:/codes/libs/llvm-project/build/Release/bin/llvm-config.exe")

改成你的绝对路径。为什么要用源码编译llvm呢?因为你下载prebuilt binary其实是没有llvm-config.exe的。

tvm编译

然后切换到tvm编译,刚才我们已经修改了cmake的config,怎么clone tvm,修改confgi你可以参考官方。

mkdir build
cd build
cmake .. -G 'Visual Studio 16 2019'
cmake --build . --config Release

进行tvm的编译。

在这里你可能会遇到一个zlib的错误:

LINK : fatal error LNK1181: 无法打开输入文件“z.lib”

这是因为你没有关闭libtracback,我看了半天,好像就 libtraceback 和 cnpy用到了zlib。

# Whether to use libbacktrace
# Libbacktrace provides line and column information on stack traces from errors.
# It is only supported on linux and macOS.
# Possible values:
# - AUTO: auto set according to system information and feasibility
# - ON: enable libbacktrace
# - OFF: disable libbacktrace
set(USE_LIBBACKTRACE OFF)

没有办法,删掉build重新build。

b942cec3-0177-49ae-803a-00cb86a4962e-image.png

最后一步,安装python,直接 pip install -e .

5a3f2644-d844-4e6c-b8c1-bbc7e3d2b400-image.png

我们来尝试一下mlc-llm

如果你运行mlc-llm,只是跑一下看看,那么可以直接下载conda的预编译二进制,但是如果你想自己生成,或者你想使用python,那么就得源码编译。

t\mlc-llm\tests\chat.py", line 11, in <module>
    from tvm import relax

如果你遇到这个错误,那么嘿嘿,恭喜你,tvm再次入土。

你需要编译unity分支。
没有想到吧?切换到unity分支再重新编译把!

这个时候,我们再在 mlc-llm中尝试看看relax的相关代码能不能引入:

更多link