简介
llama.cpp 是一个专注于推理性能优化的项目,主要解决大模型在本地运行时的效率问题。其核心优势在于支持广泛的硬件环境,从纯 CPU 到各类 GPU(NVIDIA、AMD、Intel 等)甚至 NPU 都能适配。它采用 C/C++ 实现,依赖极少,并提供了多种量化方案以平衡速度与精度。
该项目不仅支持模型量化,还内置了服务化组件,可直接对外提供 API 接口。对于没有高性能 GPU 的开发者,它也能通过 CPU 运行 LLaMA 模型,极大地降低了本地部署的门槛。
环境安装
首先克隆仓库并进入目录:
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
构建 GPU 执行环境前,请确保已安装 CUDA 工具包。若 nvidia-smi 和 nvcc --version 无报错,则环境配置正确。
mkdir build
sudo apt-get install make cmake gcc g++
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release -j4
cd build
make install
当前版本中,部分指令已重命名。建议建立软链接以便调用:
ln -s your/path/to/llama.cpp/build/bin/llama-quantize llama-quantize
ln -s your/path/to/llama.cpp/build/bin/llama-server llama-server
ln -s your/path/to/llama.cpp/build/bin/llama-cli llama-cli
模型转换
我们将演示如何将原始模型转换为 llama.cpp 可用的格式。
1. 原始模型处理
首先需要安装 Python 3.10 及相关依赖:
pip install protobuf==3.20.0
pip install transformers
pip install sentencepiece
pip install peft
下载模型权重和 tokenizer 文件。可以通过 HuggingFace 直接下载,或使用社区提供的工具。例如使用 pyllama 库:
pip3 install transformers pyllama -U
python3 -m llama.download --model_size 7B
注意:在 Mac M2 环境下可能会遇到架构兼容问题,需手动编译相关依赖库。
2. 格式转换
将原始 PTH 模型转换为 HuggingFace 格式,可使用官方脚本:
git clone https://huggingface.co/luodian/llama-7b-hf ./models/Llama-7b-chat-hf
或者使用 transformers 提供的转换脚本:
git clone https://github.com/huggingface/transformers.git
cd transformers
python src/transformers/models/llama/convert_llama_weights_to_hf.py \
--input_dir /workspace/pth_model/7B \
--model_size 7B \
--output_dir /workspace/hf_data
若使用了 LoRA 微调,需先合并权重。以 Chinese-LLaMA-Alpaca 为例:


