llama.cpp在windows7下编译记录
准备
- 到https://github.com/skeeto/w64devkit/ 的releases下载
w64devkit-1.23.0.zip
,解压到英文目录,例如d:\makes\llama.cpp-master
- 到https://github.com/ggerganov/llama.cpp下载 llama.cpp源代码
llama.cpp-master.zip
,我下载的是第3282个commits,解压到英文目录,例如D:\makes\w64devkit-1.23.0\w64devkit\w64devkit.exe
- 到https://modelscope.cn/models下载gguf文件,例如
D:\shareio\Nous-Hermes-Llama2-13b-q8_0.gguf
编译
双击D:\makes\w64devkit-1.23.0\w64devkit\w64devkit.exe
进入命令行
输入cd d:/makes/llama.cpp-master
输入 make -j 8
开8个并行任务,具体数量根据自己CPU核数确定
修改文件
/examples/server/httplib.h 第2690~2714行
#if defined(_WIN32)
std::wstring wpath;
for (size_t i = 0; i < strlen(path); i++) {
wpath += path[i];
}
hFile_ = ::CreateFile2(wpath.c_str(), GENERIC_READ, FILE_SHARE_READ,
OPEN_EXISTING, NULL);
if (hFile_ == INVALID_HANDLE_VALUE) { return false; }
LARGE_INTEGER size{};
if (!::GetFileSizeEx(hFile_, &size)) { return false; }
size_ = static_cast<size_t>(size.QuadPart);
hMapping_ =
::CreateFileMappingFromApp(hFile_, NULL, PAGE_READONLY, size_, NULL);
if (hMapping_ == NULL) {
close();
return false;
}
addr_ = ::MapViewOfFileFromApp(hMapping_, FILE_MAP_READ, 0, 0);
#else
- CreateFile2 改为 CreateFileW
- CreateFileMappingFromApp 改为 CreateFileMappingW
- MapViewOfFileFromApp 改为 MapViewOfFile
#if defined(_WIN32)
std::wstring wpath;
for (size_t i = 0; i < strlen(path); i++) {
wpath += path[i];
}
// hFile_ = ::CreateFile2(wpath.c_str(), GENERIC_READ, FILE_SHARE_READ,
// OPEN_EXISTING, NULL);
hFile_ = ::CreateFileW(wpath.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL);
if (hFile_ == INVALID_HANDLE_VALUE) { return false; }
LARGE_INTEGER size{};
if (!::GetFileSizeEx(hFile_, &size)) { return false; }
size_ = static_cast<size_t>(size.QuadPart);
hMapping_ =
// ::CreateFileMappingFromApp(hFile_, NULL, PAGE_READONLY, size_, NULL);
::CreateFileMappingW(hFile_, NULL, PAGE_READONLY, size_, size_, NULL);
if (hMapping_ == NULL) {
close();
return false;
}
// addr_ = ::MapViewOfFileFromApp(hMapping_, FILE_MAP_READ, 0, 0);
addr_ = ::MapViewOfFile(hMapping_, FILE_MAP_READ, 0, 0, 0);
#else
再编译
make llama-server
清理
打开CMD
cd /d d:\makes\llama.cpp-master
mkdir myexe
move *.exe myexe
测试
代开CMD
cd /d d:\makes\llama.cpp-master\myexe
llama-cli -m D:\shareio\Nous-Hermes-Llama2-13b-q8_0.gguf -n 128
llama-server.exe -m D:\shareio\Nous-Hermes-Llama2-13b-q8_0.gguf -c 2048