Windows11使用MinGW+cmake编译llama.cpp以及模型量化遇到的问题

想在本地部署Llama3模型,但原版模型对中文的支持不好,遂从魔塔找到了经过中文微调后的llama3模型,但是找到的模型是safetensors格式的,这个格式对于本地推理不太友好,并且由于本人使用的显卡有些落伍,所以想对下载的模型进行量化,量化模型需要llama.cpp的量化程序。本文记录量化过程中遇到的问题。

题外话:我一般不编写C++代码,之前都是用dev-C++来写C++,所以找MinGW给我难住了,从sourceforge中下载的文件没有编译器,幸好从别的文章找到了下载地址,最后下了8.1版本的。有知道原因的朋友可以给我说一下,感谢。

问题

一、从网络上找到的教程中需要对llama.cpp进行编译,使用cmake对项目进行编译时,报错

-- Building for: NMake Makefiles
CMake Error at CMakeLists.txt:2 (project):
  Running

   'nmake' '-?'

  failed with:

   no such file or directory


CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage

二、在转换模型时numpy报ArrayMemoryError,大致意思是内存不足。

原因

问题一:cmake在Windows下会默认使用微软的nmake进行编译,但我使用的是MinGW。

问题二:数据量过大引起的电脑内存不足。

解决方法

问题一

首先,需要确认cmake、gcc和g++安装正确以及系统环境变量配置正确,关于这方面不再赘述。

查找资料发现只有两种方式能解决我的问题,一种是使用cmake-gui编译llama.cpp,一种是使用mingw32-make编译。重试编译时不要忘记删除编译失败产生的文件。

方法一:使用cmake-gui编译

在cmake安装目录 > bin 目录下,打开cmake-gui.exe,先清除缓存,File > Delete Cache.

选择待编译项目地址

选择编译后文件存放位置,我是找了给地方存放的,也可以放在项目目录里面

点击左下角的Configure,选择MinGW Makefiles,点击finish后会检查配置,中间列表区域一片红不需要紧张,再次点击Configure即可,对于最后生成的文件没有影响

检查完成后点击Generate,生成中间文件,打开文件夹,在此处打开PowerShell,使用命令进行编译

cmake --build . --config Release

编译完成后的程序会在bin目录下。

方法二:使用mingw32-make编译

在项目目录下运行cmd命令,指定编译器

cmake -G "MinGW Makefiles" -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ .

随后使用mingw32-make命令编译项目

mingw32-make

这个方法编译的程序会在项目目录中的bin目录下。

问题二

使用虚拟内存

打开“查看高级系统设置” > “高级”选项卡,就是配置环境变量的那一页。

选择“性能”选项的设置

打开“高级”选项卡,打开“虚拟内存”的更改

取消选择“自动管理所有驱动器的分页文件大小”,选择除C盘外的其他盘,最好是固态硬盘,点击自定义大小,输入初始大小和最大值,我给了20G的空间。注意输入完后一定要先点设置,再点确定,随后重启系统就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值