一直想在自己的笔记本上部署一个大模型验证,早就听说了llama.cpp,可是一直没时间弄。
今天终于有时间验证了。首先本机安装好g++,cmake.我下载的cmake版本是cmake-3.27.0-rc4-windows-x86_64.msi。安装时选择增加系统变量。接着GitHub - ggerganov/llama.cpp: Port of Facebook's LLaMA model in C/C++
执行以下步骤:
git clone https://github.com/ggerganov/llama.cpp cd llama.cpp
mkdir build cd build cmake .. cmake --build . --config Release
好像看上去很简单,其实坑一堆。首先我执行第三步的时候cmake说命令不存在。我。。。查看环境变量已经设置了,无语。到处找各种方案,都是喊设置环境变量,无意中想着在powershell环境下试一下。执行powershell,在这个环境下可以执行cmake。执行完以后,退出powershell,可以在命令行执行cmake了,真是怪事。估计我以前做过啥子环境设置,先不管。
继续执行cmake ..,报CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!。
网上找了一堆解决方案,都不适合,最后自己摸索。先删除build目录下的文件,执行cmake -G"MinGW Makefiles" ..成功。注意这里的..不能少。
生成了make文件。兴匆匆的执行cmake --build . --config Release,又报错:
collect2.exe: error: ld returned 1 exit status
examples\server\CMakeFiles\server.dir\build.make:101: recipe for target 'bin/server.exe' failed
mingw32-make.exe[2]: *** [bin/server.exe] Error 1
CMakeFiles\Makefile2:1751: recipe for target 'examples/server/CMakeFiles/server.dir/all' failed
mingw32-make.exe[1]: *** [examples/server/CMakeFiles/server.dir/all] Error 2
Makefile:99: recipe for target 'all' failed
mingw32-make.exe: *** [all] Error 2
真是欲哭无泪。又在网上找了各种方案,其中比较靠谱的是增加#pragma comment(lib,"ws2_32.lib")与g++ server.cpp -o server -lws2_32。可是一验证,pragma comment(lib,"ws2_32.lib")是vs用法。g++不支持。g++ server.cpp -o server -lws2_32又是在各种互相串联的makefile文件中引用,根本无法找到。一下子进入了死结。不死心,又各种makefile看,终于找到了一个思路link_libraries。试着在CMakeLists.txt增加link_libraries(-lws2_32),再次执行cmake --build . --config Release,完美成功。截图如下:
后面基本就是下载模型,放到指定目录,执行main.exe即可。四个小时,终于搞定了。记录一下,供大家参考。