Description
花了大概两天的时间,终于把ChatGLM.cpp的CUDA环境编译成功了,我觉得应该要指出一些问题来
系统环境:
Windows 11 Pro
Python 3.10
CMake 3.30
CUDA 12.3 ->12.6
过程:
首先直接编译,注意到第一个问题就是在cmd下直接使用set CMAKE_ARGS="-DGGML_METAL=ON" 在cmd中的得到的是'"-DGGML_METAL=ON"'的str值
在setup.py 60line中并没有直接对item进行strip操作,导致传进cmake_args的参数是一个带有引号的参数,导致编译的时候不是按照cuda的版本编译的,应该修改
修改之后,注意到第二个问题是版本问题。README中没有提及,但是要编译CUDA版本,对CUDA要求至少是要12.4以上,所以我才从12.3版本升级到了12.6版本
这里插一个小插曲,应该是NVIDIA的锅。CUDA Toolkit没有正确处理MSBuildExtensions,导致出现No CUDA toolset found的错误。不知道这是个例问题还是版本问题。解决方法可以看https://stackoverflow.com/a/77085810
升级之后,注意到nvcc不支持flag -Wno-expansion-to-defined。这个是在CMakeList 11line出现的。作者标明了# suppress ggml warnings。具体我没怎么了解这个flag是否是版本差异还是OS差异,但至少在Windows下的CUDA 12.6版本是没有这个flag的。
在踩了这些坑之后总算是编译出来了,当然后面注意到GGML在疯狂的显示warning,应该和前面去除的flag有关,但至少能跑。还是希望作者能够出cuda的whl,不然整编译环境实在是不方便我们这些没有学习C++。