-
Notifications
You must be signed in to change notification settings - Fork 43
llamacpp_zh
以llama.cpp工具为例,介绍模型量化并在本地部署的详细步骤。Windows则可能需要cmake等编译工具的安装。本地快速部署体验推荐使用经过指令精调的Mixtral-Instruct模型,有条件的推荐使用6-bit或者8-bit模型,效果更佳。 运行前请确保:
- 系统应有
make
(MacOS/Linux自带)或cmake
(Windows需自行安装)编译工具 - 建议使用Python 3.10以上编译和运行该工具
- (可选)如果已下载旧版仓库,建议
git pull
拉取最新代码,并执行make clean
进行清理 - 拉取最新版llama.cpp仓库代码
$ git clone https://github.com/ggerganov/llama.cpp
- 对llama.cpp项目进行编译,生成
./main
(用于推理)和./quantize
(用于量化)二进制文件。
$ make
Windows/Linux用户如需启用GPU推理,则推荐与BLAS(或cuBLAS如果有GPU)一起编译,可以提高prompt处理速度。以下是和cuBLAS一起编译的命令,适用于NVIDIA相关GPU。参考:llama.cpp#blas-build
$ make LLAMA_CUBLAS=1
macOS用户无需额外操作,llama.cpp已对ARM NEON做优化,并且已自动启用BLAS。M系列芯片推荐使用Metal启用GPU推理,显著提升速度。只需将编译命令改为:LLAMA_METAL=1 make
,参考llama.cpp#metal-build
$ LLAMA_METAL=1 make
(💡 也可直接下载已量化好的GGUF模型:GGUF模型)
目前llama.cpp已支持.safetensors
文件以及huggingface格式.bin
转换为GGUF的FP16格式。
$ python convert.py chinese-mixtral-instruct/
$ ./quantize chinese-mixtral-instruct/ggml-model-f16.gguf chinese-mixtral-instruct/ggml-model-q4_0.gguf q4_0
由于本项目推出的Chinese-Mixtral-Instruct使用了Mixtral-8x7B-Instruct-v0.1的指令模板,请首先将本项目的scripts/llama-cpp/chat.sh
拷贝至llama.cpp的根目录。chat.sh
文件的内容如下所示,内部嵌套了聊天模板和一些默认参数,可根据实际情况进行修改。
- GPU推理:cuBLAS/Metal编译需要指定offload层数,在
./main
中指定例如-ngl 40
表示offload 40层模型参数到GPU
./main -m $1 --color --interactive-first \
-c 4096 -t 6 --temp 0.2 --repeat_penalty 1.1 -ngl 999 \
--in-prefix ' [INST] ' --in-suffix ' [/INST]'
使用以下命令启动聊天。
$ chmod +x chat.sh
$ ./chat.sh ggml-model-q4_0.gguf
在提示符 >
之后输入你的prompt,cmd/ctrl+c
中断输出,多行信息以\
作为行尾。如需查看帮助和参数说明,请执行./main -h
命令。
更详细的官方说明请参考:https://github.com/ggerganov/llama.cpp/tree/master/examples/main
- Model Reconstruction
- Model Quantization, Inference and Deployment
- System Performance
- Training Scripts
- FAQ