想在本地部署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的空间。注意输入完后一定要先点设置,再点确定,随后重启系统就可以了。