llama.cpp在windows7下编译记录

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

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值